În această lecție vom examina modul de gestionare a unei casete de dialog din programul LISP.
Ca exemplu, vom folosi caseta de dialog creată în lecția anterioară: "Dialog".
Și începe imediat cu codul care gestionează caseta de dialog.
Fig. 1. "Cod program pentru gestionarea casetei de dialog."
Gestionarea casetei de dialog din programul LISP are loc în mai multe etape:
Descărcarea fișierului de dialog
În primul rând, trebuie să descărcați fișierul DCL care conține dialogul dorit.
În cazul în care caseta de dialog este încărcată, această funcție va returna numărul de serie al fișierului DCL descărcat în această sesiune cu sistemul AutoCAD.
Utilizând setq operatorul asignării, rețineți acest număr în variabila dcl_id.
Dacă caseta de dialog nu se încarcă, funcția returnează un număr întreg negativ.
Dacă numele fișierului din argument este specificat fără calea completă, AutoCAD încearcă să găsească fișierul din dosarele de asistență unde sunt localizate fișierele auxiliare.
Adăugăm calea de acces la fișierele auxiliare.
Pentru a nu scrie calea completă în caseta noastră de dialog, să adăugăm calea către folderul nostru "D: \ MyLisp" în calea pentru a accesa fișierele auxiliare ale AutoCAD. Vom face din dosar un suport.
Pentru a face acest lucru, faceți clic pe butonul "Aplicație" și în fereastra deschisă pe butonul "Opțiuni". Vezi Fig. 2.
Fig. 2. Butonul de aplicare
Se deschide fereastra "Setări". Vezi Figura 3.
Fig. 3. "Adăugarea unei căi de acces la fișierele auxiliare"
În acesta, accesați fila "Fișiere".
Faceți clic pe [+] de lângă "Cale de acces la fișierele auxiliare".
Apoi faceți clic pe butonul "Adăugați". Apoi faceți clic pe butonul "Răsfoiți ...". Se deschide fereastra "Răsfoiți dosarele".
Găsiți directorul "D: \ MyLisp" și faceți clic pe OK.
În căile de acces la fișierele auxiliare, apare o nouă linie "D: \ MyLisp".
Fig. 3. "Calea de acces la fișierele auxiliare"
Faceți clic pe OK. Acum, AutoCAD știe unde să caute fișierul nostru și în loc de calea completă la acesta, scrieți doar numele acestuia.
Deschiderea casetei de dialog și verificarea existenței dialogului.
Funcția deschide o casetă de dialog și returnează T (True) dacă există un dialog cu acest nume în acest fișier.
Și se întoarce nul dacă dialogul nu este găsit.
Să înțelegem mai bine linia
înlocuiți funcția (new_dialog "mp_paral" dcl_id) cu valoarea returnată a T.
Se pare (dacă (nu T) (ieșire)) - dacă nu ieșire T. Cu alte cuvinte, dacă caseta de dialog nu se deschide pentru a finaliza programul.
Dacă totul a mers bine, caseta de dialog se va deschide în fereastra de lucru AutoCAD. Vezi Fig. 5.
Fig. 5. Caseta de dialog DCL
Programul LISP întrerupe și așteaptă ca utilizatorul să acționeze.
Introduceți valorile în câmpurile "Lungime", "Lățime", "Înălțime" și faceți clic pe unul dintre cele două butoane. (OK sau Anulare). AutoCAD va reveni la programul LISP.
Descrierea acțiunilor când butoanele sunt apăsate și caseta de dialog este închisă.
Pentru a descrie acțiunile pe care le efectuează programul când apăsați butoanele, utilizați funcția action_tile. În general, se arată astfel:
Astfel, următoarea expresie
Vom vorbi despre funcția definită de utilizator (raz_paral) de mai jos.
Funcția (done_dialog 1) - închide caseta de dialog și transmite o valoare numerică care poate fi citită de către funcția (start_dialog)
În linia următoare
(start_dialog) citește cu ce valoare numerică a fost închisă caseta de dialog
Setq - atribuie această valoare variabilei ddi.
Descărcarea fișierului de dialog
Funcție (unload_dialog dcl_id) - descarcă caseta de dialog cu numărul de serie dcl_id.
Funcția defun.
Pentru a crea funcții de utilizator, este utilizată funcția Defun. În general, se arată astfel:
Funcția definită de utilizator (raz_paral) (dimensiunea paralelipipedului).
Codul de program care creează funcția (raz_paral) este prezentat în Fig. 6.
Fig. 6. "Funcția utilizator raz_paral"
Funcție (get_tile "eb_Dl") - citește conținutul câmpului cu codul eb_Dl în caseta de dialog. Returnează valoarea minimă (dacă câmpul este 100, atunci se returnează "100").
Pentru a converti un șir la un întreg, utilizați funcția (atoi <строка>)
Astfel, șirul
Citește conținutul din câmpul Lungime (codul câmpului eb_Dl), îl convertește la un număr întreg și îl atribuie (folosind funcția setq) la variabila Dl.
Citiți conținutul din câmpul "Lățime" și îl memorează în variabila Sh.
Citește conținutul din câmpul "Înălțime" și îl memorează în variabila Hi.
Funcția (raz_paral) - nu conține argumente și variabile temporare de lucru. Dacă variabilele Dl, Sh, Hi sunt specificate ca fiind de lucru, atunci la sfârșitul executării funcției, valorile variabilelor vor fi șterse din memoria principală. Și avem nevoie de faptul că după sfârșitul funcției (raz_paral) aceste variabile își păstrează valorile.
După crearea funcției, aceasta poate fi apelată oriunde în program prin tastarea (raz_paral).
Funcție personalizată (mp_kub Dl Sh Hi).
Să transformăm programul creat în lecția "Exemplu de program simplu LISP" într-o funcție definită de utilizator. Vezi Fig. 7.
Fig. 7. "Funcția utilizator mp_kub"
Pentru aceasta, ștergeți "c:"
Adăugăm argumentele Dl Hi Sh.
Și puneți argumentele în program în loc de numărul 200. după cum se arată în Fig.
Ca rezultat, obținem funcția definită de utilizator prezentată în Fig. 8.
Fig. 7. "Funcția utilizator mp_kub"
După efectuarea funcției mp_kub, nu sunt necesare valorile variabilelor p1 p2 p3 p4 p5 p6 p7 p8. Și pentru a nu fi stocate în memoria RAM, le adăugăm ca variabile temporare de lucru.
Pentru a apela această funcție, trebuie să tastați
Un program comun LISP cu o casetă de dialog.
Programul general LISP cu caseta de dialog va arăta ca în Fig. 9.
Fig. 9. »Programul general»
Codul programului programului mp_paral este:
Descărcați caseta de dialog Mp_paral.dcl (Dimensiune fișier: 392 octeți)
Descărcați software-ul Mp_paral.lsp (Mărime fișier: 781 bytes)
Creează o funcție de utilizator numită "mp_paral".
Prefixul "c:" înseamnă că această funcție poate fi folosită ca comandă standard AutoCAD.
Doar introduceți numele în linia de comandă AutoCAD.
(/ dcl_id nub Dl Sh Hi) - variabile de lucru temporare utilizate în program.
Apoi, funcția de utilizator mp_kub (discutată mai sus) este creată.
Apoi, creați o funcție personalizată raz_paral (discutată mai sus).
După aceea, programul gestionează caseta de dialog (discutată mai sus).
Dacă variabila ddi = 1 efectuează funcția (mp_kub Dl Sh Hi)
Variabila ddi = 1. dacă utilizatorul, în caseta de dialog, a făcut clic pe butonul "OK".
Dacă utilizatorul apasă butonul "Anulare", variabila ddi = 0 și funcția (mp_kub Dl Sh Hi) nu vor fi executate.
Funcția (princ) oferă o ieșire liniștită.
Ultimul ")" înseamnă sfârșitul funcției mp_paral.
Încărcarea și difuzarea programului mp_paral.
Pentru a testa funcționarea programului:
Creați un fișier nou. 10.
Fig. 10. "Crearea unui nou fișier"
Introducem textul programului sau îl copiem de pe site.
Salvăm fișierul în dosarul "D: / MyLisp" sub numele "mp_paral".
Apoi încărcați programul și mergeți la AutoCAD. Vezi Fig. 11
Fig. 11. "Descărcarea programului"
În linia de comandă, tastați mp_paral și apăsați
Fig. 12. "Linia de comandă"
Se deschide caseta de dialog "Parallelepiped". A se vedea figura 13.
Fig. 13. "caseta de dialog"
În acesta se completează câmpurile "Lungime", "Lățime", "Înălțime" și faceți clic pe butonul OK.
În linia de comandă, veți vedea mesajul: "Specificați un punct de bază:". Faceți clic oriunde în fereastra de lucru AutoCAD și veți desena un paralelipiped. Vezi Fig. 14.
Fig. 14. "Parallelepiped"
Astfel, în acest articol am considerat un exemplu de creare a unui program LISP din caseta de dialog.
- Cum se gestionează o casetă de dialog din programul LISP.
- Cum se adaugă o cale de acces la fișierele AutoCAD auxiliare.
- Cum se creează și se utilizează funcții personalizate.
ați reușit în totul?
A fost dificil să realizați această lecție?
unde aveți dificultăți?
Dacă doriți să primiți știri de pe site-ul meu. Efectuați un abonament.
Până data viitoare.