Scrigroup - Documente si articole

     

HomeDocumenteUploadResurseAlte limbi doc
AccessAdobe photoshopAlgoritmiAutocadBaze de dateCC sharp
CalculatoareCorel drawDot netExcelFox proFrontpageHardware
HtmlInternetJavaLinuxMatlabMs dosPascal
PhpPower pointRetele calculatoareSqlTutorialsWebdesignWindows
WordXml


Tehnologii de programare in mediul AutoCAD. Fisiere SCRIPT, LISP, VBA

autocad



+ Font mai mare | - Font mai mic



Tehnologii de programare in mediul AutoCAD. Fisiere SCRIPT, LISP, VBA

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 <ENTER>, 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 <Esc>.

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

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

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



Politica de confidentialitate | Termeni si conditii de utilizare



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 2414
Importanta: rank

Comenteaza documentul:

Te rugam sa te autentifici sau sa iti faci cont pentru a putea comenta

Creaza cont nou

Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved