Lucrare de laborator Autolisp

Previzualizare laborator:

Extras din laborator:

LISP (List Processing) este unul dintre cele mai demult cunoscute limbaje de programare de nivel inalt, orientat pe functii, avand o traditie impresionanta si multe variante (Common LISP, Franz LISP, Visual LISP, Mu LISP, X LISP etc.). Varianta integrata in AutoCAD, devenita traditionala, este cunoscuta sub denumirea AutoLISP. Aceasta varianta ofera multe facilitati utile, atat utilizatorilor incepatori ai AutoCAD-ului, cat si celor avansati:

- logica limbajului este apropiata de modul de gandire matematica formata in scoala, deoarece presupune o abordare pe baza de functii a unor liste;

- sintaxa este foarte simpla, usor asimilabila, doar atentia asupra parantezelor poate crea cateodata probleme;

- datorita interpretorului integrat se pot executa atat instructiuni individuale, cat si programe intregi in mod interactiv din linia de comanda a AutoCAD-ului, fara a necesita compilator sau alte instrumente intalnite la dezvoltarea aplicatiilor;

- permite in mod firesc utilizarea comenzilor, entitatilor si variabilelor caracteristice AutoCAD-ului.

In AutoLISP exista doua componente fundamentale: atomul si lista. Atomii sunt elemente fundamentale simple, din multimea carora se pot alcatui liste. Teoretic, tot ce nu este lista, sau ceea ce nu poate fi descompus mai mult prin mijloacele limbajului, este considerat atom. Instructiunea propriu zisa este o lista incadrata in paranteze rotunde, elementele individuale componente fiind delimitate prin spatiu (caracterul ,,blank"). Teoretic se pot utiliza oricate paranteze (succesive sau incluse), insa trebuie avut grija ca toate parantezele deschise sa aiba o finalizare corespunzatoare prin inchiderea lor.

Procesul de interpretare al AutoLISP-ului porneste in momentul in care se intalneste paranteza deschisa pe prima pozitie a unei linii de comanda. Dupa verificarea starii de ,,consolidare" a listelor (prin evaluarea si compararea numarului de paranteze deschise si inchise), se vor evalua listele in ordinea inversa a nivelului de includere. Adica, prima data se vor evalua listele cele mai interne (din ultimul nivel de includere), procesul continuand spre nivelurile precedente (catre parantezele exterioare). Primul element din fiecare lista care urmeaza sa fie evaluata trebuie sa fie o functie, elementele succedandu-se de la stanga spre dreapta (cu exceptia variantelor localizate pentru scriere de la dreapta spre stanga). Procesul de evaluare se materializeaza de fapt prin repetitiile unui ciclu format din trei pasi: READ-EVAL-PRINT (citire-evaluare-afisare).

2. CALCULE UZUALE

Calculele matematice se pot realiza in orice moment, nefiind nevoie ca prompter-ul din lina de comanda a AutoCAD-ului sa fie ,,Command:". Exemplul urmator ilustreaza cazul in care se doreste generarea unui cerc al carui centru sa fie in originea sistemului de coordonate, iar lungimea razei sa rezulte din expresia:

(1)

Evident, valoarea calculata a razei va fi de 2,5 unitati. Intai se va da comanda pentru generarea unui cerc, dupa care se va introduce formula (1) in AutoLISP pentru valoarea lungimii razei:

Command: c

CIRCLE Specify center point for circle or [3P/2P/Ttr (tan tan radius)]: 0,0

Specify radius of circle or [Diameter] <0.0>: (- (sqrt (+ (expt 3 2) (expt 4 2))) 2.5)

2.5

Command:

Se observa, ca intai se vor ridica la patrat valorile 3 si 4 prin functia ,,expt" (exponentiation), deoarece aceste liste sunt cele mai interne. Apoi, valorile obtinute astfel (9 si 16) vor fi adunate si din rezultat (9+16=25) se va extrage radicalul utilizand functia ,,sqrt" (square root). In fine, se va realiza scaderea marcata la inceputul primei liste, considerand rezultatul partial obtinut (5) si valoarea 2,5 de la sfarsitul acestei liste, rezultatul final (5-2,5 = 2,5) fiind afisat in linia de comanda si cercul fiind generat cu aceasta valoare inainte de a reaparea prompter-ul ,,Command:". Separatorul zecimal s-a notat sub forma de punct in expresia AutoLISP (acesta fiind cazul uzual), insa aceasta notatie depinde de setarile AutoCAD-ului.

Desigur, pot fi utilizate si variabile in expresiile AutoLISP, insa valoarea acestora trebuie sa fie cunoscuta inainte de evaluarea expresiilor in care se folosesc. Iata exemplul precedent din nou, de data aceasta insa utilizand trei variabile:

Command: (setq a (expt 3 2) b (expt 4 2))

16

Command: (setq c 2.5)

2.5

Command: c

CIRCLE Specify center point for circle or [3P/2P/Ttr (tan tan radius)]: 0,0

Specify radius of circle or [Diameter] <2.5000>: (- (sqrt (+ a b)) c)

2.5

Command:

In acest caz s-a obtinut prima data valoarea variabilelor ,,a" si ,,b" prin utilizarea functiei ,,setq" (set quoted) - calculele fiind facute printr-o singura instructiune, s-a afisat doar rezultatul ultimei evaluari (16) -, dupa care s-a obtinut valoarea variabilei ,,c" printr-o noua instructiune, asadar:

(2)

Doar dupa aceste instructiuni s-a dat comanda ,,c" (circle) pentru generarea cercului, utilizand variabilele (cu valorile deja cunoscute) intr-o noua instructiune AutoLISP pentru calculul valorii razei.

Bibliografie:

Tolvaly-Rosca F.: A szamitogepes tervezes alapjai: AutoLisp es Autodesk Inventor alapismeretek, Societatea Muzeului Ardelean, Cluj-Napoca, 2009.

[2] Mathe A. E., Nedelcu M.: Aplicatii AutoCAD si AutoLISP: Indrumator de laborator, Editura U. T. Press, Cluj-Napoca, 2009.

[3] Tiuca T., Precup P., Antal T.: Dezvoltarea aplicatiilor cu AutoCAD si AutoLISP, Editura Promedia Plus Computers, Cluj-Napoca, 1995.

Download gratuit

Documentul este oferit gratuit,
trebuie doar să te autentifici in contul tău.

Structură de fișiere:
  • Lucrare de laborator Autolisp.doc
Alte informații:
Tipuri fișiere:
doc
Diacritice:
Da
Nota:
9/10 (1 voturi)
Nr fișiere:
1 fisier
Pagini (total):
6 pagini
Imagini extrase:
6 imagini
Nr cuvinte:
2 354 cuvinte
Nr caractere:
12 611 caractere
Marime:
143.74KB (arhivat)
Publicat de:
Iacov Ion
Nivel studiu:
Facultate
Tip document:
Laborator
Domeniu:
Calculatoare
Tag-uri:
exemple, autolisp
Predat:
la facultate din Cluj-Napoca
Materie:
Calculatoare
An de studiu:
I
Sus!