Curs Autocad. Tehnologii de programare in mediul Autocad

Incarcat la data: 29 Februarie 2008

Autor: Claudiu Baltazar

Pret: 80 credite

19.Tehnologii de programare in mediul AutoCAD. Fisiere SCRIPT, LISP, VBA 19.1.Fisiere de comenzi AutoCAD. Comanda SCRIPT Cel mai simplist mod de automatizare a unor operatii in mediul AutoCAD il constituie crearea si rularea fisierelor de comenzi, denumite fisiere "script". Acestea sunt fisiere text, salvate in format ASCII. Extensia unui fisier de comenzi este ".scr". Un fisier script se creaza cu un editor de texte oricat de simplu, cum ar fi Notepad sau Wordpad, rulat in afara sesiunii AutoCAD. Atentie! Un fisier script trebuie sa fie salvat in format ASCII! Includerea unor comentarii in fisierele script este posibila prin utilizarea caracterului ";" la inceputul liniei. Linia va fi considerata in intregime un comentariu. Caracterul <>, adica apasarea tastei , se reprezinta prin spatiu. Caracterul de sfarsit de rand din fisierul script are aceeasi valoare. Numele lungi de fisiere incluse intr un fisier script trebuie sa fie scrise intre ghilimele. intr un fisier script nu se admit opriri pentru introducerea datelor. Datele trebuie sa fie scrise in totalitate in fisier. Un exemplu de fisier 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 ; al patrulea cerc CIRCLE -50,0 100 Exemplul se incheie pe randul al zecelea. Un fisier script se lanseaza in lucru prin comanda SCRIPT. Fisierele script sunt utile in realizarea unor prezentari constituite din succesiuni de slide uri create in AutoCAD, precum si in crearea obiectelor 3dmesh in care vertex urile sunt precizate explicit, punct cu punct. intr o prezentare de slide uri, pentru a asigura stationarea unui slide pe ecran un anumit timp, se foloseste comanda DELAY, specificand durata in milisecunde a intarzierii dorite. Valoarea poate fi un numar natural intre 1 si 32767. Imaginile utilizate in prezentarile de acest tip, slide urile, sunt create prin comanda MSLIDE anterior rularii script ului, si trebuie sa se gaseasca in directorul curent de lucru, sau pe o cale de cautare prespecificata. Repetarea automata a executiei unui fisier script este asigurata de folosirea comenzii RSCRIPT pe ultima linie a fisierului. Iesirea din ciclu se realizeaza tastand . Pentru a crea fisiere script corecte, este necesara o foarte buna cunoastere a mediului AutoCAD si multa experienta. Iata un exemplu de fisier script utilizat la prezentarea unei secvente 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 RSCRIPT 19.2.Fisiere LISP. Comenzile VLISP si APPLOAD Limbajul de programare asociat implicit mediului AutoCAD este AutoLISP. Acesta este un derivat al limbajului de inteligenta artificiala LISP si permite crearea unor aplicatii proprii ale utilizatorului pentru mediul AutoCAD. Interpretorul AutoLISP este inglobat in AutoCAD, astfel ca expresii AutoLISP pot fi utilizate chiar pe linia de comanda, la prompter ul "Command:" sau din fisiere externe incarcate in memorie. Pentru a obtine repatabilitatea utilizarii expresiilor AutoLISP, ele trebuie scrise in fisiere format ASCII, cu extensia ".lsp". Un fisier lisp poate fi creat in orice editor de texte, cu conditia scrierii sale corecte si a salvarii in formatul ASCII. Versiunea AutoCAD 2000 include un mediu integrat de dezvoltare ("Integrated Development Environment"), numit Visual LISP, care contine un compilator, un depanator ("debugger"), cataloage de functii precum si controale vizuale care sa simplifice mult scrierea programelor AutoLISP. in fig. 19.1 se prezinta fereastra de lucru pentru Visual LISP. Figura 19.1 Fereastra de lucru pentru Visual LISP Aplicatiile AutoLISP interactioneaza cu AutoCAD in moduri multiple. Functiile AutoLISP pot solicita date de intrare, pot accessa comenzi interne AutoCAD, pot crea si manipula obiecte in desen, atat de natura grafica (cercuri, linii, polilinii, hasuri, cilindri, texte, etc.), cat si de natura negrafica (layer e, tipuri de linii, stiluri de scriere, etc.). Prin intermediul unor programe AutoLISP, utilizatorul isi poate defini propriile comenzi AutoCAD. Odata definite, acestea pot fi utilizate simplu, similar cu orice comanda interna. Scrierea programelor AutoLISP necesita multa experienta si cunoasterea avansata a mediului AutoCAD. Exemplul de mai jos prezinta definirea unei comenzi AutoCAD noi, denumita ROZETA, care deseneaza rozeta din 4 cercuri cu centrul in punctul specificat. (defun C:ROZETA(/ c c1 c2 c3 c4 r ecou) ; se salveaza 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 calculeaza pozitia 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 deseneaza 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) ) incarcarea in desen a unor aplicatii scrise in AutoLISP se realizeaza fie prin comanda APPLOAD, fie prin functia AutoLISP (load "nume_aplicatie"). Comanda APPLOAD deschide caseta de dialog din fig. 19.2, denumita "Load/Unload Application". Din caseta, se poate selecta fisierul dorit, dupa care, prin butonul "Load", se incarca efectiv acel fisier in memorie. Rubrica din stanga jos anunta incarcarea efectuata. Rubrica "Startup Suite" permite alegerea aplicatiilor care se incarca automat in memorie la inceperea sesiunii de lucru. Un fisier lisp incarcat in memorie poate fi descarcat prin aceeasi comanda si caseta de dialog. Descarcarea din memorie duce la gospodarirea mai eficienta a resurselor de lucru. Scrierea expresiilor AutoLISP direct pe linia de comanda este admisa, dar executia este volatila, nefiind repetabila, decat in urma unei noi scrieri. Figura 19.2 Caseta de dialog pentru incarcarea aplicatiilor AutoLISP 19.3.Proiecte VBA. Comenzile VBAMAN,VBALOAD, VBAUNLOAD, VBARUN, VBAIDE Utilizatorii de AutoCAD resimt necesitatea de a dezvolta noi aplicatii, de a automatiza si simplifica operatiile, astfel incat sa dobandeasca maximum de eficienta si comoditate in lucru. Unul din mijloacele cele mai evoluate si mai elegante de realizare a acestui deziderat este crearea aplicatiilor VBA. VBA este abrevierea denumirii "Visual Basic for Applications" si desemneaza un limbaj de programare derivat din Visual Basic Standard, cu facilitati specifice pentru CAD. AutoCAD include un mediu de dezvoltare interactiva a aplicatiilor, VBA IDE (VBA Interactive Development Environment), cu cateva caracteristici care il individualizeaza fata de mediile similare create pentru alte pachete soft. Cu ajutorul VBA IDE, se pot crea proiecte VBA, care sunt colectii de module de cod, module de clasa si formulare electronice destinate toate indeplinirii unei anumite functii. Aceasta functie are de obicei un caracter complex. Un proiect VBA poate fi stocat in interiorul desenului, ca "embedded project", caz in care se salveaza odata cu acesta, sau in afara unui desen, ca un fisier independent, "global project". in prima varianta, proiectul in cauza este utilizabil numai in interiorul desenului gazda si se incarca automat la deschiderea desenului. Un singur proiect VBA poate fi fixat in desen la un moment dat. in varianta a doua, proiectul este disponibil spre utilizare in orice desen, dar trebuie incarcat in mod explicit. Un proiect global poate fi partajat cu alti utilizatori. Utilitarul VBA Manager gestioneaza unitar toate proiectele VBA disponibile (fig. 19.2). Utilitarul permite incarcarea., descarcarea, salvarea, crearea unor proiecte, fixarea si respectiv extragerea proiectelor VBA din desen. Utilitarul este lansabil prin comanda VBAMAN sau din meniul pull down "Tools", linia "Macro". Comenzile VBALOAD si VBAUNLOAD incarca/descarca din memorie proiecte VBA. Figura 19.2 Utilitarul VBA Manager Interventia in desen a elementelor dintr un proiect VBA se concretizeaza prin macrocomenzi. Lansarea unei macrocomenzi se realizeaza prin VBARUN, activabila si din meniul pull down "Tools". Caseta de dialog "Macros" (fig. 19.3), deschisa de comanda VBARUN ofera lista macrocomenzilor accesibile in momentul lucrului. Casetele "Macros" si "VBA Manager" sunt apelabile reciproc, pentru a asigura gestionarea rapida a proiectelor si a macrocomenzilor. Pentru crearea, corectarea, modificarea proiectelor VBA, se utilizeaza VBA IDE, mediul de lucru mentionat 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. Figura 19.3 Caseta de dialog "Macros" destinata managementului macrocomenzilor in fig. 19.4 si in fragmentul de program de mai jos, se prezinta un exemplu de creare a unei aplicatii printr un proiect VBA, aplicatie in care se deseneaza rozeta din patru cercuri exemplificata anterior in AutoLISP si intr un fisier 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 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 Figura 19.4 Caseta de dialog creata in VBA, pentru parametrizarea rozetei din 4 cercuri

Textul de mai sus reprezinta un extras din "Curs Autocad. Tehnologii de programare in mediul Autocad". Pentru versiunea completa a documentului apasa butonul Download si descarca fisierul pe calculatorul tau. Prin descarcarea prezentei lucrari stiintifice, orice utilizator al site-ului www.studentie.ro declara si garanteaza ca este de acord cu utilizarile permise ale acesteia, in conformitate cu prevederile legale ablicabile in domeniul proprietatii intelectuale si in domeniul educatiei din legislatia in vigoare.

In cazul in care intampini probleme la descarcarea fisierului sau documentul nu este nici pe departe ceea ce se doreste a fi te rugam sa ne anunti. Raporteaza o eroare

Important!

Referatele si lucrarile oferite de Studentie.ro au scop educativ si orientativ pentru cercetare academica.

Iti recomandam ca referatele pe care le downloadezi de pe site sa le utilizezi doar ca sursa de inspiratie sau ca resurse educationale pentru conceperea unui referat nou, propriu si original.