Sunteți pe pagina 1din 11

219

19.Tehnologii de programare n mediul AutoCAD. Fiiere SCRIPT, LISP, VBA


19.1.Fiiere de comenzi AutoCAD. Comanda SCRIPT
Cel mai simplist mod de automatizare a unor operaii n mediul AutoCAD l constituie crearea i rularea fiierelor de comenzi, denumite fiiere script. Acestea sunt fiiere-text, salvate n format ASCII. Extensia unui fiier de comenzi este .scr. Un fiier script se creaz cu un editor de texte orict de simplu, cum ar fi Notepad sau Wordpad, rulat n afara sesiunii AutoCAD. Atenie! Un fiier script trebuie s fie salvat n format ASCII! Includerea unor comentarii n fiierele script este posibil prin utilizarea caracterului ; la nceputul liniei. Linia va fi considerat n ntregime un comentariu. Caracterul <>, adic apsarea tastei <ENTER>, se reprezint prin spaiu. Caracterul de sfrit de rnd din fiierul script are aceeai valoare. Numele lungi de fiiere incluse ntr-un fiier script trebuie s fie scrise ntre ghilimele. ntr-un fiier script nu se admit opriri pentru introducerea datelor. Datele trebuie s fie scrise n totalitate n fiier. Un exemplu de fiier 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. Fiiere SCRIPT,

220
; al patrulea cerc CIRCLE -50,0 100

Exemplul se ncheie pe rndul al zecelea. Un fiier script se lanseaz n lucru prin comanda SCRIPT. Fiierele script sunt utile n realizarea unor prezentri 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 staionarea unui slide pe ecran un anumit timp, se folosete comanda DELAY, specificnd durata n milisecunde a ntrzierii dorite. Valoarea poate fi un numr natural ntre 1 i 32767. Imaginile utilizate n prezentrile de acest tip, slide-urile, sunt create prin comanda MSLIDE anterior rulrii script-ului, i trebuie s se gseasc n directorul curent de lucru, sau pe o cale de cutare prespecificat. Repetarea automat a execuiei unui fiier script este asigurat de folosirea comenzii RSCRIPT pe ultima linie a fiierului. Ieirea din ciclu se realizeaz tastnd <Esc>. Pentru a crea fiiere script corecte, este necesar o foarte bun cunoatere a mediului AutoCAD i mult experien. Iat un exemplu de fiier script utilizat la prezentarea unei secvene 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 douzeci de pai

221
RSCRIPT

19.2.Fiiere 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 aplicaii 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 fiiere externe ncrcate n memorie. Pentru a obine repatabilitatea utilizrii expresiilor AutoLISP, ele trebuie scrise n fiiere format ASCII, cu extensia .lsp. Un fiier lisp poate fi creat n orice editor de texte, cu condiia scrierii sale corecte i a salvrii n formatul ASCII. Versiunea AutoCAD 2000 include un mediu integrat de dezvoltare (Integrated Development Environment), numit Visual LISP, care conine un compilator, un depanator (debugger), cataloage de funcii 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. Fiiere SCRIPT,

222

Figura 19.1 Fereastra de lucru pentru Visual LISP Aplicaiile AutoLISP interacioneaz cu AutoCAD n moduri multiple. Funciile AutoLISP pot solicita date de intrare, pot accessa comenzi interne AutoCAD, pot crea i manipula obiecte n desen, att de natur grafic (cercuri, linii, polilinii, hauri, cilindri, texte, etc.), ct 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 cunoaterea 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 douzeci de pai

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 poziia 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) )

ncrcarea n desen a unor aplicaii scrise n AutoLISP se realizeaz fie prin comanda APPLOAD, fie prin funcia AutoLISP (load nume_aplicatie). Comanda APPLOAD deschide caseta de dialog din fig. 19.2, denumit Load/Unload Application. Din caset, se poate selecta fiierul dorit, dup care, prin butonul Load, se ncarc efectiv acel fiier n memorie. Rubrica din stnga-jos anun ncrcarea efectuat. Rubrica Startup Suite permite alegerea aplicaiilor care se ncarc automat n memorie la nceperea sesiunii de lucru. Un fiier lisp ncrcat n memorie poate fi descrcat prin aceeai comand i caset de dialog. Descrcarea din memorie duce la gospodrirea mai eficient a resurselor de lucru. Scrierea expresiilor AutoLISP direct pe linia de comand este admis, dar execuia este volatil, nefiind repetabil, dect n urma unei noi scrieri.

19.Tehnologii de programare n mediul AutoCAD. Fiiere SCRIPT,

224

Figura 19.2 Caseta de dialog pentru ncrcarea aplicaiilor AutoLISP

19.3.Proiecte VBA. Comenzile VBAMAN,VBALOAD, VBAUNLOAD, VBARUN, VBAIDE


Utilizatorii de AutoCAD resimt necesitatea de a dezvolta noi aplicaii, de a automatiza i simplifica operaiile, astfel nct s dobndeasc maximum de eficien i comoditate n lucru. Unul din mijloacele cele mai evoluate i mai elegante de realizare a acestui deziderat este crearea aplicaiilor VBA. VBA este abrevierea denumirii Visual Basic for Applications i desemneaz un limbaj de programare derivat din Visual Basic Standard, cu faciliti specifice pentru CAD. Lia DOLGA AutoCAD 2000 n douzeci de pai

225 AutoCAD include un mediu de dezvoltare interactiv a aplicaiilor, VBA IDE (VBA Interactive Development Environment), cu cteva caracteristici care l individualizeaz fa de mediile similare create pentru alte pachete soft. Cu ajutorul VBA IDE, se pot crea proiecte VBA, care sunt colecii de module de cod, module de clas i formulare electronice destinate toate ndeplinirii unei anumite funcii. Aceast funcie 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 fiier 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 ncrcat n mod explicit. Un proiect global poate fi partajat cu ali utilizatori. Utilitarul VBA Manager gestioneaz unitar toate proiectele VBA disponibile (fig. 19.2). Utilitarul permite ncrcarea., descrcarea, 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. Fiiere SCRIPT,

226

Figura 19.2 Utilitarul VBA Manager Intervenia 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 menionat 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 douzeci de pai

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 aplicaii printr-un proiect VBA, aplicaie n care se deseneaz rozeta din patru cercuri exemplificat anterior n AutoLISP i ntr-un fiier 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. Fiiere 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, 'Calculam coordonatele cercului 2 c2(0) = center(0) - radius c2(1) = center(1) c2(2) = 0 Set circleObj2 = ThisDrawing.ModelSpace.AddCircle(c2, 'Calculam coordonatele cercului 3 c3(0) = center(0) c3(1) = center(1) - radius c3(2) = 0 Set circleObj3 = ThisDrawing.ModelSpace.AddCircle(c3, 'Calculam coordonatele cercului 4 c4(0) = center(0) + radius c4(1) = center(1) c4(2) = 0 Set circleObj4 = ThisDrawing.ModelSpace.AddCircle(c4, '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

radius)

radius)

radius)

radius)

Lia DOLGA

AutoCAD 2000 n douzeci de pai

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

19.Tehnologii de programare n mediul AutoCAD. Fiiere SCRIPT,

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