luni, aprilie 13

Introducere in AutoLISP

Nota: Acest articol discuta notiuni generale si folosirea rutinelor AutoLISP fara a avea cunostinte de programare. Pentru programare vezi postul Introducere in programarea AutoLISP.
Nu cred ca utilizatorul de AutoCAD, fie el si avansat, trebuie neaparat sa stie AutoLISP. Cred, insa, ca trebuie sa stie suficient cat sa foloseasca ceea ce au facut deja ceilalti in AutoLisp.

Acesta este subiectul de astazi:

  • putina istorie
  • ce este un program AutoLISP
  • cum folosesc programele AutoLisp in AutoCAD
  • unde gasesc programe AutoLISP

1. Putina istorie.

LISP este un limbaj de programare aparut prin anii '60. Numele vine de la List Processing pentru ca informatia este structurata in asa numite liste. Incepand cu 1986 AutoDesk preia si incepe dezvolte o parte a limbajului sub numele de AutoLisp. Respectivul subset, orientat spre functii geometrice si manipularea de entitati grafice, este introdus in AutoCAD oferind posibilitatea de customizare si programare peste softul initial.
Limbajul este imbunatatit cu fiecare versiune pana in 1995 cand AutoDesk decide sa renunte la dezvoltarea lui in favoarea noilor trenduri VBA .NET si ActiveX. Singura imbunatatire majora este adusa in '99 cand AutoDesk incorporeaza in AutoCAD o versiune avansata a AutoLisp-ului, cu tot cu mediu de lucru, numita Visual Lisp. VisualLisp, este un superset al AutoLisp-ului care include un editor, un debugger, un compilator si multe functii avansate noi.
Desi "abandonat" apoi de producator AutoLisp(mai nou VisualLisp) devine si ramane pana in zilele noastre cel mai popular limbaj de programare al AutoCAD-ului.

2. Ce este un program AutoLisp

Un program AutoLisp este de fapt un sir de comenzi si functii care rulate in AutoCAD fac diferite task-uri in locul sau in numele utilizatorului.
Practic cu AutoLisp poti face aprope orice faci in mod normal in AutoCAD, si chiar mai mult, doar ca in loc sa actionezi tu, rulezi un progranm care face asta pentru tine.
Putem spune ca automatizam siruri de operatiuni folosind programe care actioneaza in locul nostru.
Programele AutoLisp, numite si rutine, se servesc sub forma de fisiere text cu extensia .lsp. Pentru a edita un astfel de fisier poate fi folosit orice editor de text care nu formateaza (ex: Notepad) sau poate fi folosit editorul incorporat in AutoCAD numit Visual Lisp Editor care ofera pe langa simpla editare si alte avantaje care insa nu fac subiectul postului de astazi.

3. Cum folosesc programele AutoLisp in AutoCAD


Asa cum am spus, programele AutoLisp, definesc o comanda sau un set de comenzi. Pentru a le folosi avem nevoie de un fisier lisp (blabla.lsp) si AutoCAD. Incarcam fisierul in AutoCAD si il rulam tastand numele (blabla) in linia de comanda.
"Incarcarea" in AutoCAD se face din Tools-AutoLisp-Load Application sau din tastatura cu comanda APPLOAD.

load_unload_applications_we
Se va deschide fereastra Load/Unload Applications unde se va naviga pana la fisierul .lsp dorit, se va selecta si se va da click pe Load. Incarcat astfel programelul nostru va ramane activ pana la inchiderea desenului care era deschis in momentul incarcarii, daca vrem sa-l avem incarcat de fiecare data cand deschidem un desen il tragem cu drag-and-drop in "valiza" din dreapta jos. De fapt nu facem decat sa-l adaugam in asa numitul "Startup Suite", adica un grup de aplicatii(programe) pe care AutoCAD le incarca de fiecare data cand deschidem un desen.
Dupa ce am "incarcat" programul inchidem fereastra si nu mai ramane decat sa apelam programul tastand numele urmat de Enter.

Programele AutoLisp pot ajunge la noi sub forma de text (pe o pagina de net, intr-o carte, etc) sau sub forma de fisier .lsp.
Daca e text deschidem un document nou in Notepad, scriem textul respectiv, cautam la inceput ceva care arata cam asa:

DEFUN C:blabla

(unde blabla va fi evident alt text si reprezinta numele comenzii definite de repectivul program) si salvam documentul cu numele blabla si extensia .lsp pentru a-l transforma intr-un program AutoLisp gata de folosit.

Acum ca am tot vorbit sa dam si un exemplu:

(defun C:GATA ()
(command "-purge" "a" "" "n")

(command "-purge" "a" "" "n")

(command "-purge" "a" "" "n")

(command "-layer" "s" "0" "")

(command "zoom" "e")
(command "qsave")

(command "close")

(princ)
)


Cam asa arata un programel AutoLisp primitiv.
Cel de mai sus defineste o comanda care se numeste GATA , gandita pentru incheierea unui desen, care face trei "PURGE - all" consecutive, face layerul 0 curent, face zoom extents, salveaza desenul si apoi il inchide.

Ca sa-l folosesc - copy/paste intr-un document nou Notepad, salvez documentul ca gata.lsp (AutoLisp nu tine cont de litere mari sau mici) si incarc lispul in AutoCAD din Tools-AutoLisp-Load Application. Odata incarcat, daca tastez in AutoCAD "gata"(fara ghilimele) urmat de Enter. AutoCAD va face toate operatiunile si va inchide desenul. Ma va scuti de o rutina de incheiere a unui desen care consta in deschiderea a cateva ferestre si multe clickuri. Acesta este un exemplu primitiv care nu face altceva decat sa ruleze un sir simplu de comenzi si sa introduca raspunsuri in locul nostru, dar exista si programe mult mai complexe cu rezultate pe masura.
Iata cateva "lispuri" mai mult sau mai putin complicate:

KILLDOTS.lsp
- sterge toate entitatile cu lungime 0 si textele care au doar spatii goale (introdus ca optiune la PURGE in AutoCAD 2010)

fixblock.lsp
- transforma toate blockurile din desen in blockuri definite pe layerul 0 cu Linetype - ByBlock si Color - ByBlock

ZMATCH.lsp
- schimba elevatia (inaltimea) unui obiect dupa un alt obiect selectat sau dupa o cota introdusa la tastatura

xerase.lsp
- sterge toate entitatile aflate in interiorul unei polylinii inchise...
si tot asa sunt multe multe multe lispuri gratuite care fac tot ce-ti trece prin cap.

Practic pentru orice operatiune care presupune mai multi pasi si pe care o repeti suficient de des cat sa merite sa o automatizezi cineva a facut deja un lisp. Tot ce trebuie sa faci e sa-l gasesti si sa-l folosesti.

4. Unde gasesc programe AutoLISP:




P.S. Programarea si aplicatiile AutoLisp sunt un subiect fara sfarsit. Un program bine facut este destul de complex si chiar si asa intotdeauna exista o varianta si mai buna de a-l face. Scopul postului nu este sa explice cum se face un program ci cum se foloseste. Am incercat sa fac o oarecare lumina in subiect dar bineinteles nu am descoperit decat varful icebergului, mai departe nu tine decat de exercitiu si de dorinta fiecaruia de afla mai mult.
Printeaza aceast articol

2 comments:

  1. Buna,
    Ai idee cum pot face sa nu mi se mai deschida fereastra cu help cand ruleaza lisp-ul? (Se deschide la fiecare fisier modificat in timp ce ruleaza lisp-ul...)
    Multumesc!

    RăspundețiȘtergere
  2. @cris
    Buna, cred ca era de la niste ghilimele in plus dupa "e". Am modificat si acum sper sa mearga ok, ms pt observatie.

    RăspundețiȘtergere