Sunteți pe pagina 1din 6

Dumitru Dragomir TCCN Sem.

1 C3 1
Curs Nr. 3

1.19. Realizarea dialogului dintre AutoCAD i AutoLISP
Exist un numr de funcii care pot fi folosite pentru a construi un dialog ntre interpretorul de
comenzi AutoCAD i un program scris n AutoLISP. Prin utilizarea lor se pot cere sau introduce
informaii din/n baza de date a AutoCAD-ului, sau se pot transmite comenzi ctre interpretorul
de comenzi AutoCAD.

1.19.1. (COMMAND arg1 arg2 argn)
Aceast funcie este cea mai folosit i servete la transmiterea ctre interpretorul de comenzi
din AutoCAD a unei succesiuni de cuvinte de comand rezultate din evaluarea argumentelor
arg1, , argn. Setul de argumente transmis poate fi incomplet, urmnd o succesiune de alte
funcii de naturi diferite, dar comanda, odat iniiat, trebuie ncheiat, folosind alte funcii
command ulterioare.
La scrierea irurilor de caractere ale argumentelor sintaxa comenzii AutoCAD trebuie
respectat, dup exact aceleai exigene ca i n cazul scrierii ei de la tastatur. De exemplu:
(command line (0 0) (1 1) )
are acelai efect ca i setul de comenzi AutoCAD urmtor:
command:LINE
From point:0,0
To point:1,1
To point:<ENTER>
adic trasarea unei linii drepte de la punctul de coordonate 0,0 la punctul de coordonate 1,1.
Observaie: simbolul predefinit PAUSE poate fi folosit ca argument al funciei COMMAND
pentru a realiza o pauz n succesiunea transmiterii de argumente ctre interpretorul de comenzi.
La momentul pauzei utilizatorul poate interveni furniznd argumentul el nsui. De exemplu:
(command circle 5,5 pause)
are ca efect desenarea unui cerc cu centrul n punctul de coordonate 5,5 i raza furnizat de
utilizator.
Observaie: funcia COMMAND returneaz ntotdeauna rezultatul nil.

1.19.2. (ANGLE punct1 punct2)
Aceast funcie returneaz unghiul cu orizontala fcut de linia care trece prin punctele punct1
i punct2, msurat n radiani. De exemplu:
(angle (0 0) (1 1)) returneaz valoarea 0.785398, adic /4.

1.19.3. (DISTANCE punct1 punct2)
Aceast funcie returneaz distana dintre punctele punct1 i punct2. De exemplu:
(setq p1 (list 0 0) p2 (list 1 1) d (distance p1 p2)) returneaz 1.41421.

1.19.4. (GETANGLE [punct1] [mesaj])
Aceast funcie poate apare n urmtoarele forme:
(getangle) ateapt plasarea cu cursorul grafic a dou puncte n cmpul de lucru al
AutoCAD i returneaz unghiul cu orizontala al liniei care unete punctele;
(getangle punct1) ateapt plasarea celui de al doilea punct de ctre utilizator i returneaz
unghiul cu orizontala al dreptei rezultante;
(getangle mesaj) acelai efect ca i la (getangle) dar n prealabil afieaz irul de caractere
mesaj;
(getangle punct1 mesaj) acelai efect ca i la (getangle punct1) dar n prealabil afieaz
mesaj.

1.19.5. (GETDIST [punct1] [mesaj])
Aceast funcie prezint aceleai patru forme ca i funcia getangle, dar returneaz distana
dintre dou puncte.

Dumitru Dragomir TCCN Sem. 1 C3 2
1.19.6. (GETINT [mesaj])
Aceast funcie preia de la utilizator o valoare ntreag i o returneaz ca rezultat. Dac argumentul
mesaj este specificat el este afiat ca mesaj de cerere. Dac utilizatorul introduce altceva dect o
valoare ntreag este afiat mesajul: Requires an inetger value. Try again:.

1.19.7. (GETREAL [mesaj])
Aceast funcie preia de la utilizator o valoare real i o returneaz ca rezultat. Dac
argumentul mesaj este specificat el este afiat ca mesaj de cerere. Dac utilizatorul introduce
altceva dect o valoare numeric este afiat mesajul: Requires a value. Try again:.

1.19.8. (GETORIENT [punct1] [mesaj])
Aceast funcie se comport la fel cu funcia GETANGLE dar unghiul returnat este raportat la
direcia de referin stabilit prin comanda UNITS.

1.19.9. (GETPOINT [mesaj])
Aceast funcie preia de la utilizator un punct i returneaz lista coordonatelor sale. Dac
argumentul mesaj este prezent el este afiat ca mesaj de cerere.

1.19.10. (GETSTRING [caz] [mesaj])
Aceast funcie preia de la utilizator un ir de caractere i l returneaz ca rezultat. Dac
argumentul caz este prezent i diferit de nil, irul de caractere poate conine i spaii. Dac
argumentul mesaj este prezent el este afiat ca mesaj de cerere.

1.19.11. (GETVAR nume_variabil)
O larg serie de comenzi din AutoCAD funcioneaz n concordan cu o gam de parametri
de lucru stabilii de aa-numitele variabile de sistem AutoCAD identificate prin nume_variabil.
Marea lor majoritate sunt de tip read-write, altele fiind doar de tip read-only. Aceste variabile de
sistem pot fi citite din AutoLISP cu funcia GETVAR, iar cele care nu sunt de tip read-only pot fi
i modificate cu funcia SETVAR.

1.19.12. (SETVAR nume_variabil valoare)
Aceast funcie permite modificarea valorii unei variabile specificate prin nume_variabil,
dac aceasta este de tip read-write.

1.19.13. (GRAPHSCR)
Aceast funcie comut regimul de lucru n fereastra grafic AutoCAD. Returneaz nil.

1.19.14. (TEXTSCR)
Aceast funcie deschide fereastra text AutoCAD. Returneaz nil.

1.19.15. (REDRAW [nume_de_entitate [mod]])
Aceast funcie poate avea ca unul dintre argumente un aa-numit nume de entitate, returnat de
una din funciile speciale de acces la baza de date a entitilor grafice din AutoCAD, funcii
despre care vom discuta mai trziu. Argumentul mod determin modul de redesenare a entitii
de nume specificat, astfel:
1 redesenarea pe ecran a entitii;
2 ascunderea de pe ecran a entitii;
3 evidenierea entitii;
4 dezactivarea evidenierii entitii.
Dac mod nu se specific are loc redesenarea entitii. Dac nume_de_entitate i mod nu se
specific este redesenat portul de vedere curent. Funcia returneaz ntotdeauna nil.

1.19.16. (INITGET [opiune] [list_de_cuvinte_cheie])
Aceast funcie iniializeaz modul de aciune pentru urmtorul apel al unei funcii de forma
GETXXXX, mai puin GETSTRING i GETVAR, i returneaz nil.
Argumentul opiune poate avea valorile:
Dumitru Dragomir TCCN Sem. 1 C3 3
1 interzicerea rspunsului nul (binar 00000001);
2 interzicerea valorilor numerice nule (binar 00000010);
4 interzicerea valorilor numerice negative (binar 00000100);
8 ignor ncadrarea n limitele desenului chiar dac variabila LIMCHECK este ON (binar
00001000);
etc, pn la 128 cu semnificaii diferite (a se vedea manualul de utilizare).
Prin nsumarea valorilor de mai sus se pot obine combinaii pentru valoarea opiunii. Astfel
5=1+4 (00000101) poate fi folosit pentru a specifica simultan opiunile corespunztoare (nu este
permis introducerea ca rspuns a caracterului ENTER i nici valoare negativ).
Dup iniializarea cu INITGET, dac rspunsul utilizatorului la o cerere a o funcie GETXXXX
este neconform ce cerinele este afiat un mesaj de eroare i este repetat cererea.
Argumentul list_de_cuvinte_cheie este un ir de caractere sau set de iruri de caractere
separate prin spaii i care constituie posibile rspunsuri. De exemplu:
(initget CENtru RAZa)
(getkword Metoda?:)
permite un rspuns prin centru, raza, cen sau raz. Aadar majusculele specific prescurtrile
prin care se poate furniza rspunsul.
Funcia INITGET returneaz nil, iar efectul ei nceteaz dup primul apel al unei funcii
GETXXXX.

1.19.17. (GETKWORD mesaj)
Aceast funcie testeaz introducerea de ctre utilizator a unui cuvnt cheie autorizat de ctre
funcia INITGET folosit anterior i repet aciunea pn la obinerea rspunsului corect pe care
l returneaz ca rezultat.

1.20. Accesul la baza de date a entitilor AutoCAD
Utilizatorul poate accesa baza de date pentru entiti AutoCAD folosind urmtoarele categorii
de funcii.

1.20.1. Funcii de manipulare a entitilor grafice
1.20.1.1. (ENTSEL [mesaj])
Aceast funcie permite selectarea manual de ctre utilizator a unei entiti grafice de pe
ecran.
Rezultatul returnat este o list de forma: (nume_de_entitate punct_de_selectare)
Argumentul mesaj este opional i este afiat ca mesaj de cerere. De exemplu:
Command:LINE
From point:1,1
To point:6,6
To point:<ENTER>
Command:(setq ent (entsel \nAlegeti o entitate:))
Alegeti o entitate:3,3
(<Entity name: 3180520> (3.0 3.0 0.0))
Numele de entitate va putea fi folosit ulterior la operaii de indicare a entitii. De exemplu:
(setq nument (car ent)) returneaz <Entity name: 3180520>
Observaie: Numele de entitate este un indicator de poziie n baza de date a fiierului
temporar cu care lucreaz AutoCAD. El difer de la o sesiune de lucru la alta.

1.20.1.2. (ENTGET nume_de_entitate)
Aceast funcie folosete argumentul nume_de_entitate obinut anterior cu funcia ENTSEL,
ENTLAST, ENTNEXT sau SSNAME, i returneaz o list compus din subliste care definesc
entitatea.
De exemplu, pentru entitatea selectat la exemplul anterior:
(setq elist (entget nument)) returneaz lista urmtoare (list de entitate):
Dumitru Dragomir TCCN Sem. 1 C3 4
((-1 . <Entity name: 3180520>) numele entitii
(0 . "LINE") tipul entitii

(8 . "0") stratul entitii

(62 . 1) culoarea entitii

(10 1.0 1.0 0.0) punctul iniial al entitii
(11 6.0 6.0 0.0) punctul final al entitii

)

1.20.1.3. (ENTLAST)
Aceast funcie returneaz numele ultimei entiti introdus n baza de date. Dac, n exemplul
anterior, linia 1,1-6,6 ar fi fost ultima generat, se putea folosi cu acelai rezultat:
(entget (entlast))

1.20.1.4. (ENTNEXT [nume_de_entitate])
Aceast funcie are ca efecte:
- dac nume_de_entitate lipsete este returnat numele primei entiti din baza de date;
- dac nume_de_entitate este specificat se returneaz numele entitii urmtoare din baza de
date;
- cnd nume_de_entitate reprezint ultima entitate din baza de date funcia returneaz nil.

1.20.1.5. (ENTDEL nume_de_entitate)
Aceast funcie terge din baza de date entitatea de nume specificat. Dac entitatea a fost deja
tears ea va fi restaurat.

1.20.1.6. (ENTMOD list_de_entitate)
Acestei funcii i se transmite ca argument o list de entitate n care au fost operate modificri
prin intermediul funciilor prelucrtoare de liste (n special folosind SUBST), dar fr a se opera
asupra asociaiei cu 1 (cea care conine numele de entitate a se vedea exemplul de mai sus).
Funcia modific entitatea conform modificrii operate n list.
De exemplu, pentru linia de mai sus:
(setq oldcul (assoc 62 elist)) returneaz perechea cu punct (62 . 1) coninnd vechea
culoare a entitii
(setq elist (subst (cons 62 5) oldcul elist)) returneaz o list nou de entitate in care perechea
cu punct (62 .1) este nlocuit cu perechea (62 . 5)
(entmod elist) modific entitatea conform noii componene a listei elist
Observaie: n cazul entitilor simple modificarea operat de ENTMOD este imediat vizibil pe
ecran. n cazul entitilor complexe modificarea va fi vizibil abia dup folosirea funciei ENTUPD.

1.20.1.7. (ENTUPD nume_de_entitate)
Aceast funcie actualizeaz entitatea de nume specificat prin redesenarea ei conform
ultimelor modificri operate asupra ei n baza de date.

1.20.2. Funcii de acces la tabela de simboluri
Obiectele predefinite i avnd denumiri atribuite, cum ar fi straturile, tipurile de linii, stilurile
de text i blocurile de entiti grafice, se reflect ntr-o tabel de simboluri la care se poate avea
acces numai pentru citire, prin intermediul funciilor TBLNEXT i TBLSEARCH.

1.20.2.1. (TBLNEXT tip_de_obiect [redeschidere])
Aceast funcie caut n tabela de simboluri prima nregistrare care urmeaz ultimei
nregistrri returnate de un apel anterior de cutare pentru obiectul de tipul specificat. Dac o
Dumitru Dragomir TCCN Sem. 1 C3 5
asemenea nregistrare exist este returnat o list de definiie, altfel se returneaz nil.
Dac argumentul redeschidere exist i este diferit de nil, rezultatul este returnarea primei
nregistrri de tipul specificat existent n baza de date.
De exemplu:
(tblnext BLOCK) ar putea returna urmtoarea list:
((0 . BLOCK) numele tipului de obiect cutat
(2 . CUTIE) numele obiectului
(70 . 0) indicator de stare
(10 9.0 2.0 0.0) punct de inserare
(-2 . <Entity name : 3180552>) numele primei entiti coninut n bloc
)

1.20.2.2. (TBLSEARCH tip_de_obiect nume_atribuit [corelare])
Aceast funcie caut n tabela de simboluri o nregistrare pentru un obiect de tip specificat i
avnd numele atribuit specificat. Dac argumentul corelare este prezent i este diferit de nil, atunci
urmtoarea evaluare a funciei TBLNEXT va returna nregistrarea care urmeaz dup cea returnat de
apelul curent al funciei TBLSEARCH, altfel cele dou funcii lucreaz independent.
Ca exemplu, rezultatul obinut anterior de funcia TBLNEXT putea fi obinut direct prin funcia:
(TBLSEARCH BLOCK CUTIE)

1.20.3. Funcii pentru manipularea seturilor de selecie.
Un set de selecie n AutoLISP este o colecie de nume de entiti. El constituie o baz de date
temporar care permite manipularea entitilor folosind urmtoarele funcii:

1.20.3.1. (SSGET [mod] [punct1 [punct2]] [lista_de_puncte] [lista_de_filtrare])
Aceast funcie selecteaz o colecie (set) de entiti. Argumentul opional mod, de tip ir de caractere,
poate fi unul dintre irurile de caracterele acceptate la selecia de entiti sub AutoCAD, adic:
W metoda Window (numai entitile complet incluse ntr-o fereastr dreptunghiular);
WP metoda WPolygon (numai entitile complet incluse ntr-o fereastr poligonal);
C metoda Crossing (toate entitile care traverseaz o fereastr dreptunghiular);
CP metoda CPolygon (toate entitile care traverseaz o fereastr poligonal);
L ultima entitate generat (Last);
P setul de selecie selectat anterior (Previous);
F metoda Fence (toate entitile care traverseaz un traseu poligonal nenchis;
X toate entitile din baza de date.
Argumentele punct1 i punct2 sunt liste de coordonate de puncte folosite pentru definirea
colurilor diagonal opuse ale unor ferestre la metodele W i C. Dac argumentul punct2 lipsete
AutoCAD ateapt introducerea lui de ctre utilizator.
Argumentul list_de_puncte este o list de liste de coordonate de puncte i este folosit la
metodele WP, CP i F.
Dac SSGET este folosit fr argumente, AutoCAD invit la selectarea manual obinuit,
ncheiat prin ENTER.
Argumentul lista_de_filtrare este o list de asociaii (perechi cu punct) care descriu
proprieti ale entitilor de selectat. Din totalitatea entitilor ncadrabile n aria descris de
argumentul mod vor fi reinute n set numai cele care se potrivesc cu cerinele listei de filtrare.
De exemplu:
(setq cercuri_rosii (ssget X (list (cons 0 CIRCLE) (cons 62 1))))
va reine din toat baza de date numai entitile de tip cerc de culoare roie.
Numrul maxim de seturi de selecie este de 128, orice ncercare de a crea un set n plus se va
solda cu returnarea rezultatului nil.
Pentru a desfiina un set de selecie devenit inutil acesta trebuie asociat cu nil, de exemplu:
(setq cercuri_rosii nil)
(gc)
Dumitru Dragomir TCCN Sem. 1 C3 6
Funcia GC (Garbage collection colectare de gunoaie) restituie sistemului memoria ocupat
de entitile AutoLISP desfiinate.

1.20.3.2. (SSLENGTH set_de_selecie)
Aceast funcie returneaz numrul de entiti din setul de selecie. Valoarea returnat este de
tip ntreg dac este de pn la 32767 de entiti i de tip real pentru un numr mai mare.

1.20.3.3. (SSNAME set_de_selecie indice)
Aceast funcie returneaz numele de entitate coninut ntr-un set de selecie, al crei indice
de ordine (ncepnd de la 0) este specificat de argumentul indice.

1.20.3.4. (SSADD [nume_de_entitate [set_de_selectie]])
Aceast funcie are variantele urmtoare:
(ssadd) construiete un nou set de selecie vid;
(ssadd nume_de_entitate) construiete un nou set de selecie coninnd entitatea de
nume specificat;
(ssadd nume_de_entitate set_de_selectie) adaug entitatea de nume specificat la setul de
selecie specificat.

1.20.3.5. (SSDEL nume_de_entitate set_de_selectie)
Aceast funcie elimin entitatea de nume specificat din setul de selecie specificat. Dac
entitatea nu face parte din set este returnat nil.
1.20.3.6. (SSMEMB nume_de_entitate set_de_selectie)
Aceast funcie testeaz apartenena entitii de nume specificat la setul de selecie specificat
i returneaz T sau nil, dup caz.

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