Sunteți pe pagina 1din 11

219

19.Tehnologii de programare în mediul


AutoCAD. Fişiere SCRIPT, LISP, VBA
19.1.Fişiere de comenzi AutoCAD. Comanda
SCRIPT
Cel mai simplist mod de automatizare a unor operaţii în mediul
AutoCAD îl constituie crearea şi rularea fişierelor de comenzi, denumite
fişiere “script”. Acestea sunt fişiere-text, salvate în format ASCII.
Extensia unui fişier de comenzi este “.scr”.
Un fişier script se crează cu un editor de texte oricât de simplu, cum
ar fi Notepad sau Wordpad, rulat în afara sesiunii AutoCAD.
Atenţie! Un fişier script trebuie să fie salvat în format ASCII!
Includerea unor comentarii în fişierele script este posibilă prin
utilizarea caracterului “;” la începutul liniei. Linia va fi considerată în
întregime un comentariu.
Caracterul <↵>, adică apăsarea tastei <ENTER>, se reprezintă prin
spaţiu. Caracterul de sfârşit de rând din fişierul script are aceeaşi
valoare.
Numele lungi de fişiere incluse într-un fişier script trebuie să fie
scrise între ghilimele.
Într-un fişier script nu se admit opriri pentru introducerea datelor.
Datele trebuie să fie scrise în totalitate în fişier.
Un exemplu de fişier script este redat mai jos:

; rozeta din 4 cercuri, cu centrul rozetei in origine


;primul cerc
CIRCLE 0,50 100
; al doilea cerc
CIRCLE 50,0 100
; al treilea cerc
CIRCLE 0,-50 100

19.Tehnologii de programare în mediul AutoCAD. Fişiere SCRIPT,


220
; al patrulea cerc
CIRCLE -50,0 100

Exemplul se încheie pe rândul al zecelea.


Un fişier script se lansează în lucru prin comanda SCRIPT.
Fişierele script sunt utile în realizarea unor prezentări constituite din
succesiuni de slide-uri create în AutoCAD, precum şi în crearea
obiectelor 3dmesh în care vertex-urile sunt precizate explicit, punct cu
punct.
Într-o prezentare de slide-uri, pentru a asigura staţionarea unui slide
pe ecran un anumit timp, se foloseşte comanda DELAY, specificând
durata în milisecunde a întârzierii dorite. Valoarea poate fi un număr
natural între 1 şi 32767. Imaginile utilizate în prezentările de acest tip,
slide-urile, sunt create prin comanda MSLIDE anterior rulării
script-ului, şi trebuie să se găsească în directorul curent de lucru, sau
pe o cale de căutare prespecificată.
Repetarea automată a execuţiei unui fişier script este asigurată de
folosirea comenzii RSCRIPT pe ultima linie a fişierului. Ieşirea din ciclu
se realizează tastând <Esc>.
Pentru a crea fişiere script corecte, este necesară o foarte bună
cunoaştere a mediului AutoCAD şi multă experienţă.
Iată un exemplu de fişier script utilizat la prezentarea unei secvenţe
de slide-uri:

; incepe prezentarea si se incarca SLIDE1


VSLIDE SLIDE1
; se preincarca SLIDE2
VSLIDE *SLIDE2
; se vizioneaza SLIDE1 timp de 2 secunde
DELAY 2000
; se afiseaza SLIDE2
VSLIDE
; se preincarca SLIDE3
VSLIDE *SLIDE3
; se vizioneaza SLIDE2 timp de 2 secunde
DELAY 2000
; se vizioneaza SLIDE3 timp de 3 secunde
VSLIDE
DELAY 3000
; se repeta ciclul

Lia DOLGA AutoCAD 2000 în douăzeci de paşi


221

RSCRIPT

19.2.Fişiere LISP. Comenzile VLISP şi APPLOAD


Limbajul de programare asociat implicit mediului AutoCAD este
AutoLISP. Acesta este un derivat al limbajului de inteligenţă artificială
LISP şi permite crearea unor aplicaţii proprii ale utilizatorului pentru
mediul AutoCAD.
Interpretorul AutoLISP este înglobat în AutoCAD, astfel că expresii
AutoLISP pot fi utilizate chiar pe linia de comandă, la prompter-ul
“Command:” sau din fişiere externe încărcate în memorie.
Pentru a obţine repatabilitatea utilizării expresiilor AutoLISP, ele
trebuie scrise în fişiere format ASCII, cu extensia “.lsp”.
Un fişier lisp poate fi creat în orice editor de texte, cu condiţia
scrierii sale corecte şi a salvării în formatul ASCII.
Versiunea AutoCAD 2000 include un mediu integrat de dezvoltare
(“Integrated Development Environment”), numit Visual LISP, care
conţine un compilator, un depanator (“debugger”), cataloage de funcţii
precum şi controale vizuale care să simplifice mult scrierea
programelor AutoLISP. În fig. 19.1 se prezintă fereastra de lucru pentru
Visual LISP.

19.Tehnologii de programare în mediul AutoCAD. Fişiere SCRIPT,


222

Figura 19.1 Fereastra de lucru pentru Visual LISP


Aplicaţiile AutoLISP interacţionează cu AutoCAD în moduri multiple.
Funcţiile AutoLISP pot solicita date de intrare, pot accessa comenzi
interne AutoCAD, pot crea şi manipula obiecte în desen, atât de natură
grafică (cercuri, linii, polilinii, haşuri, cilindri, texte, etc.), cât şi de
natură negrafică (layer-e, tipuri de linii, stiluri de scriere, etc.). Prin
intermediul unor programe AutoLISP, utilizatorul îşi poate defini
propriile comenzi AutoCAD. Odată definite, acestea pot fi utilizate
simplu, similar cu orice comandă internă.
Scrierea programelor AutoLISP necesită multă experienţă şi
cunoaşterea avansată a mediului AutoCAD.
Exemplul de mai jos prezintă definirea unei comenzi AutoCAD noi,
denumită ROZETA, care desenează rozeta din 4 cercuri cu centrul în
punctul specificat.

Lia DOLGA AutoCAD 2000 în douăzeci de paşi


223
(defun C:ROZETA(/ c c1 c2 c3 c4 r ecou)
; se salvează starea curenta a variabilei de sistem CMDECHO
(setq ecou (getvar “CMDECHO”))
; se inlatura ecoul comenzilor pe linia de comanda
(setvar “CMDECHO” 0)
; se specifica pozitia centrului
(initget 1) (setq c (getpoint “/nSpecificati centrul
rozetei:”))
;se specifica raza unui element
(initget 7) (setq r (getdist c “/nSpecificati raza
elementului:”))
;se calculează poziţia celor 4 centre
(setq c1 (list (car c) (+ (cadr c) r)))
(setq c2 (list (+ (car c) r) (cadr c)))
(setq c3 (list (car c) (- (cadr c) r)))
(setq c4 (list (- (car c) r) (cadr c)))
; se desenează cele 4 cercuri
(command “CIRCLE” c1 r)
(command “CIRCLE” c2 r)
(command “CIRCLE” c3 r)
(command “CIRCLE” c4 r)
;se restabileste ecoul comenzilor pe linia de comanda
(setvar “CMDECHO” ecou)
)

Încărcarea în desen a unor aplicaţii scrise în AutoLISP se realizează


fie prin comanda APPLOAD, fie prin funcţia AutoLISP (load
“nume_aplicatie”). Comanda APPLOAD deschide caseta de dialog
din fig. 19.2, denumită “Load/Unload Application”. Din casetă, se
poate selecta fişierul dorit, după care, prin butonul “Load”, se încarcă
efectiv acel fişier în memorie. Rubrica din stânga-jos anunţă încărcarea
efectuată. Rubrica “Startup Suite” permite alegerea aplicaţiilor care
se încarcă automat în memorie la începerea sesiunii de lucru.
Un fişier lisp încărcat în memorie poate fi descărcat prin aceeaşi
comandă şi casetă de dialog. Descărcarea din memorie duce la
gospodărirea mai eficientă a resurselor de lucru.
Scrierea expresiilor AutoLISP direct pe linia de comandă este
admisă, dar execuţia este volatilă, nefiind repetabilă, decât în urma
unei noi scrieri.

19.Tehnologii de programare în mediul AutoCAD. Fişiere SCRIPT,


224

Figura 19.2 Caseta de dialog pentru încărcarea aplicaţiilor


AutoLISP

19.3.Proiecte VBA. Comenzile


VBAMAN,VBALOAD, VBAUNLOAD, VBARUN,
VBAIDE
Utilizatorii de AutoCAD resimt necesitatea de a dezvolta noi
aplicaţii, de a automatiza şi simplifica operaţiile, astfel încât să
dobândească maximum de eficienţă şi comoditate în lucru. Unul din
mijloacele cele mai evoluate şi mai elegante de realizare a acestui
deziderat este crearea aplicaţiilor VBA. VBA este abrevierea denumirii
“Visual Basic for Applications” şi desemnează un limbaj de
programare derivat din Visual Basic Standard, cu facilităţi specifice
pentru CAD.

Lia DOLGA AutoCAD 2000 în douăzeci de paşi


225
AutoCAD include un mediu de dezvoltare interactivă a aplicaţiilor,
VBA IDE (VBA Interactive Development Environment), cu câteva
caracteristici care îl individualizează faţă de mediile similare create
pentru alte pachete soft.
Cu ajutorul VBA IDE, se pot crea proiecte VBA, care sunt colecţii de
module de cod, module de clasă şi formulare electronice destinate
toate îndeplinirii unei anumite funcţii. Această funcţie are de obicei un
caracter complex. Un proiect VBA poate fi stocat în interiorul desenului,
ca “embedded project”, caz în care se salvează odată cu acesta, sau
în afara unui desen, ca un fişier independent, “global project”. În
prima variantă, proiectul în cauză este utilizabil numai în interiorul
desenului-gazdă şi se încarcă automat la deschiderea desenului. Un
singur proiect VBA poate fi fixat în desen la un moment dat. În varianta
a doua, proiectul este disponibil spre utilizare în orice desen, dar
trebuie încărcat în mod explicit. Un proiect global poate fi partajat cu
alţi utilizatori.
Utilitarul VBA Manager gestionează unitar toate proiectele VBA
disponibile (fig. 19.2). Utilitarul permite încărcarea., descărcarea,
salvarea, crearea unor proiecte, fixarea – şi respectiv extragerea
proiectelor VBA din desen. Utilitarul este lansabil prin comanda
VBAMAN sau din meniul pull-down “Tools”, linia “Macro”.
Comenzile VBALOAD şi VBAUNLOAD încarcă/descarcă din
memorie proiecte VBA.

19.Tehnologii de programare în mediul AutoCAD. Fişiere SCRIPT,


226

Figura 19.2 Utilitarul VBA Manager


Intervenţia în desen a elementelor dintr-un proiect VBA se
concretizează prin macrocomenzi. Lansarea unei macrocomenzi se
realizează prin VBARUN, activabilă şi din meniul pull-down “Tools”.
Caseta de dialog “Macros” (fig. 19.3), deschisă de comanda VBARUN
oferă lista macrocomenzilor accesibile în momentul lucrului.
Casetele “Macros” şi “VBA Manager” sunt apelabile reciproc,
pentru a asigura gestionarea rapidă a proiectelor şi a macrocomenzilor.
Pentru crearea, corectarea, modificarea proiectelor VBA, se
utilizează VBA IDE, mediul de lucru menţionat anterior. Acesta se poate
lansa fie din “VBA Manager” (butonul “Visual Basic Editor”), fie din
meniul pull-down “Tools”, linia “Macro”, sau prin comanda VBAIDE.

Lia DOLGA AutoCAD 2000 în douăzeci de paşi


227

Figura 19.3 Caseta de dialog “Macros” destinată


managementului macrocomenzilor
În fig. 19.4 şi în fragmentul de program de mai jos, se prezintă un
exemplu de creare a unei aplicaţii printr-un proiect VBA, aplicaţie în
care se desenează rozeta din patru cercuri exemplificată anterior în
AutoLISP şi într-un fişier script.

Private Sub d_cmd_Click()


'Declaram variabilele in care se stocheaza
'coordonatele centrelor cercurilor
Dim center(0 To 2) As Double
Dim c1(0 To 2) As Double
Dim c2(0 To 2) As Double
Dim c3(0 To 2) As Double
Dim c4(0 To 2) As Double
Dim radius As Double
'Citim coordonatele rozetei din casutele text
center(0) = CDbl(UserForm1.TextBox1.Text)
center(1) = CDbl(UserForm1.TextBox2.Text)
center(2) = 0
19.Tehnologii de programare în mediul AutoCAD. Fişiere SCRIPT,
228
radius = CDbl(UserForm1.TextBox3.Text)
'Calculam coordonatele cercului 1
c1(0) = center(0)
c1(1) = center(1) + radius
c1(2) = 0
Set circleObj1 = ThisDrawing.ModelSpace.AddCircle(c1, radius)
'Calculam coordonatele cercului 2
c2(0) = center(0) - radius
c2(1) = center(1)
c2(2) = 0
Set circleObj2 = ThisDrawing.ModelSpace.AddCircle(c2, radius)
'Calculam coordonatele cercului 3
c3(0) = center(0)
c3(1) = center(1) - radius
c3(2) = 0
Set circleObj3 = ThisDrawing.ModelSpace.AddCircle(c3, radius)
'Calculam coordonatele cercului 4
c4(0) = center(0) + radius
c4(1) = center(1)
c4(2) = 0
Set circleObj4 = ThisDrawing.ModelSpace.AddCircle(c4, radius)
'Regeneram viewport-ul activ
ThisDrawing.Regen acActiveViewport
ZoomAll
MsgBox "Rozeta a fost creata!!!", , "Rozeta"
End Sub
Private Sub exit_cmd_Click()
End
End Sub
Private Sub UserForm_Initialize()
UserForm1.Left = 3 * ThisDrawing.Width / 4
UserForm1.top = ThisDrawing.Height / 2
End Sub

Lia DOLGA AutoCAD 2000 în douăzeci de paşi


229
Figura 19.4 Caseta de dialog creată în VBA, pentru
parametrizarea rozetei din 4 cercuri

19.Tehnologii de programare în mediul AutoCAD. Fişiere SCRIPT,

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