Sunteți pe pagina 1din 6

Introducere in AutoLISP

Limbajul LISP (LISt Processing) a fost creat in anii 50 (John McCarthy - !5")# fiin$
$estinat $omeniului inteligentei artificiale% Mo$elul sau logico-matematic se ba&ea&a 'e
calculul L(M)*( (elaborat in !+# ca instrument in stu$iul teoretic al calculabilitatii)%
(utoLISP este un $ialect al limbajului ,LISP (e,'erimental LISP - *a-i$ )et&)%
(uto$es. a ales LISP ca limbaj $e 'rogramare in (utoC(* 'entru ca are 'osibilitatea $e
a lucra cu liste% *e e/em'lu# coor$onatele unui 'unct sunt continute intr-o lista% LISP-ul
'oate mani'ula structuri oricat $e com'le/e $e $ate# structuri ce se construiesc $inamic#
in cursul
e/ecutiei 'rogramului% *atele sunt organi&ate in liste% Lista este o sec-enta oarecare $e
elemente# care 'ot fi liste sau atomi% (tomii sunt obiectele 'rimare cu care lucrea&a LISP-
ul0 'ot fi simboluri# numere sau siruri $e caractere% 1ru'urile $e atomi formea&a liste#
care la ran$ul lor 'ot fi gru'ate in alte liste% (cest mo$ $e organi&are a informatiei ofera o
mare fle/ibilitate 'rogramului# $ar are $e&a-antajul consumului mai mare $e memorie#
$eoarece fiecare element $in lista trebuie sa fie insotit $e a$resa elementului urmator%
2otatia folosita 'entru liste este3
(a a4 %%%%% an) # un$e a%%%an sunt atomi sau alte elemente (utoLISP%

Tipuri de date folosite de AutoLISP
Simboluri
(symbols)
Sunt utili&ate 'entru memorarea unor -alori% *e e/em'lu# (set5 s ) atribuie simbolului
(-ariabilei) s -aloarea %
Liste
(lists)
6 lista este o colectie $e simboluri# numere sau siruri% Coor$onatele unui 'unct sunt
stocate intr-o lista $e forma (/ y &)%
(%0 4%0 7%0) este lista cores'un&atoare 'unctului cu coor$onatele (#4#7)%
Siruri
(strings)
Sirul este o colectie $e caractere alfanumerice% Lungimea ma/ima a unei constante $e ti'
string este $e 74 caractere% 6 -ariabila string $e orice lungime 'oate fi creata folosin$
functia strcat (concatenarea sirurilor)%
Numere intregi
(integers)
8n intreg este un numar fara 'unct &ecimal% 8n intreg (utoLISP este un numar cu semn#
stocat 'e 74 $e biti% (utoC(*-ul nu intelege $ecat intregi $e 9 biti# $eci limitea&a
-aloarea 'e care (utoLISP-ul i-o 'oate transfera la 74:9: si res'ecti- -74:9"% Pentru a
folosi intregi mai mari# se 'oate face con-ersia in numere reale%
Numere reale
(reals)
Sunt numere care contin 'unctul &ecimal%
;/3 (set5 a ) - a este intreg
(set5 a %0) - a este real
Descriptori de fisiere
(file $escri'tors)
*escri'torul $e fisier este eticheta asignata unui 'ointer la fisierul res'ecti-%
;/3 (set5 f (o'en <fis%e/t< <r<)) - f este $escri'tor $e fisier
Nume de entitati
(entity names)
;ntitatile (utoC(* 'ot fi referite 'rin (utoLISP# folosin$ eticheta numerica a acestora%
;/3 (set5 e (entlast))
=;ntity name3 9000009>
Multimi de selectie
(selection sets)
6 multime $e selectie este un gru' $e una sau mai multe entitati% Poate fi creata cu
functia (utoLISP ssget%
(set5 m (ssget)) -a 'ro$uce 'rom'terul3
Select objects3
La incheierea selectarii -a returna3 =Selection set3 >
Functii
?unctiile sunt folosite $e (utoLISP 'entru e-aluarea listelor% 2umele functiei este
tot$eauna 'rimul element al listei (este constructorul listei)% ?unctii noi 'ot fi $efinite
folosin$ functia $efun%

Variabilele AutoLISP
In (utoLISP e/ista 'atru ti'uri $e -ariabile3 numere intregi (cu semn)# numere reale#
'uncte si siruri%
;/em'le3 intreg
real %0
'unct 4* (% 0%5)
'unct 7* (% 0%5 7%+)
sir <SI@<
Pi este un nume $e -ariabila 're$efinit# $ar utili&atorul 'oate sa-l re$efineasca%
Ai'ul unei -ariabile se $efineste im'licit 'rin setarea -ariabilei res'ecti-e%

;/em'lu3 (set5 a ) a este intreg
(set5 a %0) a este real

;/ista mai multe ni-ele la care 'oate fi utili&at (utoLISP-ul3
- utili&area unor 'rograme (utoLISP e/istente
- e-aluarea $e e/'resii (utoLISP in tim'ul unei sesiuni obisnuite $e $esenare
- scrierea 'rogramelor (utoLISP
(utoLISP 'reia controlul in momentul $eschi$erii unei 'arante&e# si il ce$ea&a la
inchi$erea 'arante&ei%
Evaluarea epresiilor AutoLISP
Inima inter'retorului (utoLISP este e-aluatorul% (cesta 'reia fiecare linie $e la
$is'o&iti-ul $e intrare (tastatura sau fisier) si returnea&a re&ultatul e-aluarii ei# astfel3
- constantele# sirurile# $escri'torii $e fisiere si functiile returnea&a 'ro'ria lor -aloare%
- simbolurile (-ariabilele) returnea&a -aloarea lor curenta%
- listele sunt e-aluate in functie $e 'rimul element%
!tili"area programelor AutoLISP
In 'achetul (utoC(* sunt incluse multe fisiere cu e/tensia %LSP% (cestea contin
'rograme LISP# ce se 'ot incarca in cursul unei sesiuni $e $esenare cu loa$# astfel3
Comman$3 (loa$ </'lo$e<)
C3,PL6*;
*e acum ,PL6*; este o coman$a (utoC(* obisnuita%
Incarcarea automata a 'rogramelor LISP se 'oate face 'rin inclu$erea fisierelor sau a
comen&ilor $e incarcare a acestora in fisierul (C(*%LSP% (cesta este incarcat automat la
'ornirea (utoC(*-ului%
*e e/em'lu# continutul fisierului (C(*%LSP 'oate fi3
(loa$ </'lo$e<)
(loa$ <elist<)
(loa$ <7*<)
('rinc)
Se 'ot folosi 'rograme (utoLISP in felul acesta# fara sa fie necesara cunoasterea
continutului lor%

Introducerea programelor de la tastatura
(utoLISP-ul este im'lementat 'rintr-un inter'retor# ceea ce 'ermite intro$ucerea
'rogramelor $e la tastatura# linie cu linie% ?iecare linie re're&inta o lista# care -a fi
e-aluata ime$iat $u'a inchi$erea ei# a$ica $u'a inchi$erea tuturor 'arante&elor $eschise
in lista res'ecti-a% (utoLISP semnali&ea&a $aca o 'arante&a a ramas $eschisa 'rin

>
sau 'entru $oua 'arante&e $eschise
4> s%a%m%$%
Setarea unei -ariabile se face astfel3
Comman$3 (set5 a ) - atribuie -ariabilei a -aloarea intreaga %
Comman$3 (set5 a %0) - atribuie -ariabilei a -aloarea reala %0
Se 'oate citi -aloarea unei -ariabile 'rin a'elarea numelui acesteia 'rece$at $e semnul
<B<3
Comman$3 Ba
%0
Putem folosi acest mo$ $e a'elare al -ariabilelor si in ca$rul unei comen&i3
Comman$3 (set5 ' C(0%0 0%0))
(0%0 0%0)
Comman$3 (set5 '4 C(0%0 0%0))
(0%0 0%0)
- 'ana aici am $efinit $oua 'uncte 4*
- acum $esenam o linie intre ele3

Comman$3 LI2;
?rom 'oint3 B'
Ao 'oint3 B'4
Ao 'oint3 ;nter
Pentru a folosi re&ultatul e-aluarii unei -ariabile (utoLISP intr-un te/t# -ariabila
A;,A;D(L trebui sa aiba -aloarea # altfel <B< sau <(< -or fi tratate ca orice alt caracter%
2u se 'oate folosi un nume $e -ariabila 'entru a inlocui o coman$a (utoC(*%

;/em'lu3

Comman$3 (set5 a <LI2;<)
<LI2;<
Comman$3 Ba
<LI2;<
- nu se e/ecuta coman$a <LI2;<0 se e-aluea&a -ariabila a%
;-aluarea unei e/'resii se face astfel3
Comman$3 (E %0 %0)
4%0
- 4 este re&ultatul a$unarii %0E%0%
Scrierea programelor AutoLISP
8n 'rogram (utoLISP se scrie $e obicei intr-un fisier# folosin$ un e$itor $e te/te care
'ro$uce fisiere (SCII%
Programul urmator $efineste o functie (utoLISP care $u'a incarcarea fisierului cu loa$
-a 'utea fi utili&ata ca o coman$a (utoC(* cu numele ;LISA% @e&ultatul e/ecutiei sale
-a fi lista cores'un&atoare entitatii selectate%
0coman$a $e listare a continutului listei
0asociate unei entitati selectate
($efun c3elist()
(set5 e (entsel))
(set5 e (car e))
(set5 l (entget e))
(set5 nume (c$r (assoc C0 l)))
(if (F nume <P6LGLI2;<) ('rogn
(set5 n (getint <Hn2umarul -erte/ului 3 <))
(re'eat n
(set5 e (entne/t e))
)
))
(set5 l (entget e))
)
(lt e/em'lu3 selectarea tuturor entitatilor $in $esen care au culoarea rosie (co$ )3
($efun rosu()
(set5 e (entne/t))
(set5 m (ssa$$))
(Ihile (JF e nil)
(set5 l (entget e))
(set5 color (c$r (assoc C94 l)))
(if (F color ) (set5 m (ssa$$ e m)))
(set5 e (entne/t e))
)
)

('elarea acestei functii se face in felul urmator3
Comman$3 (loa$ <rosu<)
@6S8
Comman$3 (rosu)
@e&ultatul e/ecutiei sale este crearea multimii $e selectie m# care -a contine toate
entitatile care au culoarea rosie (e/ce'tan$u-le 'e cele aflate intr-un e-entual layer cu
culoarea im'licita )%

S-ar putea să vă placă și