Documente Academic
Documente Profesional
Documente Cultură
Introducere in AutoLISP
Introducere in AutoLISP
Limbajul LISP (LISt Processing) a fost creat in anii 50 (John McCarthy - 1958), fiind destinat domeniului inteligentei artificiale. Modelul sau logico-matematic se bazeaza pe calculul LAMBDA (elaborat in 1941, ca instrument in studiul teoretic al calculabilitatii). AutoLISP este un dialect al limbajului XLISP (eXperimental LISP - David Betz). Autodesk a ales LISP ca limbaj de programare in AutoCAD pentru ca are posibilitatea de a lucra cu liste. De exemplu, coordonatele unui punct sunt continute intr-o lista. LISP-ul poate manipula structuri oricat de complexe de date, structuri ce se construiesc dinamic, in cursul executiei programului. Datele sunt organizate in liste. Lista este o secventa oarecare de elemente, care pot fi liste sau atomi. Atomii sunt obiectele primare cu care lucreaza LISPul; pot fi simboluri, numere sau siruri de caractere. Grupurile de atomi formeaza liste, care la randul lor pot fi grupate in alte liste. Acest mod de organizare a informatiei ofera o mare flexibilitate programului, dar are dezavantajul consumului mai mare de memorie, deoarece fiecare element din lista trebuie sa fie insotit de adresa elementului urmator. Notatia folosita pentru liste este: (a1 a2 ..... an) , unde a1...an sunt atomi sau alte elemente AutoLISP.
stocat pe 32 de biti. AutoCAD-ul nu intelege decat intregi de 16 biti, deci limiteaza valoarea pe care AutoLISP-ul i-o poate transfera la 32767 si respectiv -32768. Pentru a folosi intregi mai mari, se poate face conversia in numere reale. Numere reale (reals) Sunt numere care contin punctul zecimal. Ex: (setq a 1) - a este intreg (setq a 1.0) - a este real Descriptori de fisiere (file descriptors) Descriptorul de fisier este eticheta asignata unui pointer la fisierul respectiv. Ex: (setq f (open "fis.ext" "r")) - f este descriptor de fisier Nume de entitati (entity names) Entitatile AutoCAD pot fi referite prin AutoLISP, folosind eticheta numerica a acestora. Ex: (setq e (entlast)) <Entity name: 60000016> Multimi de selectie (selection sets) O multime de selectie este un grup de una sau mai multe entitati. Poate fi creata cu functia AutoLISP ssget. (setq m (ssget)) va produce prompterul: Select objects: La incheierea selectarii va returna: <Selection set: 1> Functii Functiile sunt folosite de AutoLISP pentru evaluarea listelor. Numele functiei este totdeauna primul element al listei (este constructorul listei). Functii noi pot fi definite folosind functia defun.
Variabilele AutoLISP
In AutoLISP exista patru tipuri de variabile: numere intregi (cu semn), numere reale, puncte si siruri. Exemple: intreg 1 real 1.0 punct 2D (1.1 10.5) punct 3D (1.1 10.5 3.4) sir "SIR"
Pi este un nume de variabila predefinit, dar utilizatorul poate sa-l redefineasca. Tipul unei variabile se defineste implicit prin setarea variabilei respective. Exemplu: (setq a 1) a este intreg (setq a 1.0) a este real Exista mai multe nivele la care poate fi utilizat AutoLISP-ul: - utilizarea unor programe AutoLISP existente - evaluarea de expresii AutoLISP in timpul unei sesiuni obisnuite de desenare - scrierea programelor AutoLISP AutoLISP preia controlul in momentul deschiderii unei paranteze, si il cedeaza la inchiderea parantezei.
Command: !a "LINE" - nu se executa comanda "LINE"; se evalueaza variabila a. Evaluarea unei expresii se face astfel: Command: (+ 1.0 1.0) 2.0 - 2 este rezultatul adunarii 1.0+1.0.
) Apelarea acestei functii se face in felul urmator: Command: (load "rosu") ROSU Command: (rosu) Rezultatul executiei sale este crearea multimii de selectie m, care va contine toate entitatile care au culoarea rosie (exceptandu-le pe cele aflate intr-un eventual layer cu culoarea implicita 1).