----------AUTOCAD
POSIBILITATI SPECIALE
--Acest capitol descrie anumite posibilitati speciale folosite in secventele de comenzi si crearea de prezentari. In plus¬ acest capitol introduce elementele de baza ale AutoLISP- ului si ale constructiei in limbaę de programare a AUTOCAD-ului.
--11.1. Comenzi SCRIPTS
--AUTOCAD-ul detine o facilitate care permite citirea comenzilor dintr-un fisier detiptext. Este astfel posibila executarea unei predeterminate secvente de comenzi» se pot apela aceste comenzi cind AUTOCAD-ul se lanseaza in executie (folosind o forma speciala a comenzii "acad"© sau se poate rula o astfel de secventa suâ Editorul de desenare¬ utilizind comanda SCRIPT. Aceasta facilitate permite o modalitate mai usoara de creare a programelor demonstrative pentru anumite produse si prezentari comerciale.
--Aceste fisiere care contin secvente de comenzi sint create in afara AUTOCAD-ului¬ cu ajutorul unui editor de texte (ca EDLIM© sau a unui procesor de cuvinte (WordStar© in modul programare. Extensia fisierelortrebuie sa fie ".scr".
--11.1.1. Apelarea unui fisier prescris la incarcarea AUTOCAD-ului
--Pentru o astfel de apelare¬ comanda de incarcare a AUTOCAD-ului este :
--drive>acad desen-implicit fisier-prescris
Fisierul prescristrebuie sa fie al doilea in linia de comanda si sa aiba extensia ".scr". Aceasta metoda de apelare a secventei de comenzi incepe prin citirea din fisierul prescris¬ astfel incit prima linie a acestuiatrebuie sa contina selectarea uneia dintre optiunile Meniului principal¬ (Main Menu).
--Invocarea in aceasta maniera¬ sare peste incarcarea fisierului "acad.msg".
--De exemplu¬ sa presupunem ca de fiecare data cind se incepe un desen nou¬ se comuta grila pe on¬ se selecteaza scara tipului de 737h72h linie la 3.° si se selecteaza drept curent stratul "0˘ cu culoarea rosie.
toate acestea pot fi acoperite utilizind un desen prototip¬ dar in scopul prezentei discutii¬ se vor considera intr-o secventa prescrisa intr-un fisier denumit "setup. scr".
--1------ (creaza un desen nou)
-------- (blanks foloseste numele implicit)
--grid on---- (comuta grila pe on)
--ltscale 3.0----(selecteaza scaratipurilor de linie)
--layer set color red ° (selecteaza stratul curent si culoarea acestuia)
-- (blank pentru terminarea comenzii LAYER)
Acum¬ daca se doreste crearea unui nou desen numit "widget"¬ AUTOCA-ultrebuie lansat astfel :
--drive>acad widget setup
Astfel¬ numele implicit al noului desen va fi "widget˘ si se incepe citirea comenzilor din fisierul "setup.scr".
--Dupa terminarea citirii acestui fisier¬ cererea "Command:˘ apare si AUTOCAD-ul asteapta comenzi in mod normal. Bineinteles se presupune ca se cunosc destul de bine secventele de comenzi ale AUTOCAD-ului¬ pentru ca fisierul prescris sa contina raspunsurile exacte. De notat ca cererile AUTOCAD-ului (si chiar numele comenzilor© se pot modifica in comuniarile ulterioare » de aceea uneori este necesara revizuirea fisierului.trebuie evitata utilizarea abrevierilor» pot fi create ambiguitati. De notat ca in acest fisier¬ fiecare blank este important¬ pentru ca AUTOCAD-ul accepta fie blankul fie RETURN-ul drept comenzi sauterminator de cimp de date.
--11.1.2. Comanda SCRIPT
--Comanda SCRIPt permite invocarea fisierului prescris din Editorul de desenare.
--Command s SCRIPt Script files (name)
Extensia ".scr˘ este asumata» aceasta nu trbuie inclusa in raspuns. Secventa de comenzi continuta in fisier este executata si cererea "Command:˘ reapare. Daca si comanda SCRIPt este citita din fisier¬ fisierul prescris curent esteterminat si fisierul chemat de comanda devine cel curent.
--Anumite comenzi suplimentare sint prevazute pentru o mai mare flexibilitate a secventei prescrise. Acestea sint descrise in continuare.
--11.1.3. Comanda DELAY
--Uneori¬ anumite operatii ale AUTOCAD-ului decurg¬ destul de repede¬ facind dificila vizualizarea pe ecran. Comanda DELAY este Sprevazuta pentru a determina o pauza suficienta intre astfel de operatii :
--Command s DELAY Delaytime in millisecondss (numar)
--Numarul precizeaza durata pauzei. Un numar mai mare indica o pauza mai indelungata. In functie de viteza de procesare a calculatorului este greu de precizat precistimpul de pauza dar acesta este aproximativ de o milisecunda pe increment. Astfel¬ daca se introduce "DELAY 1000"¬ urmatoarea cerere "Command:˘ va fi intirziata cu aproximativ o secunda. Limita superioara pentru numarul care precizeaza pauza este 32767¬ aproximativ 3ł secunde.
--11.1.4. Comanda RESUME
--Introducind CTRL C sau Backspace de la tastatura se intrerupe secventa prescrisa la sfirsitul comenzii curente si se permite introducerea de comenzi prin metodele normale.
--Daca ulterior se doreste revenirea la secventa prescrisa (in locul unde a avut loc intreruperea© se introduce
--Command s RESUME
Orice eroare intilnita in timpul procesari secventei din fisierul prescris¬ determina suspendarea acesteia.
--Daca aceasta se intimpla intimp ce Editorul de desenare este activ¬ se poate utiliza comanda RESUME pentru continuare. Daca o comanda este in executie intimpul aparitiei erorii se poate apela in modtransparent comanda RESUME cu un apostrof anterior ('RESUME').
--11.1.5. Comenzile GRAPHSCR sitEXTSCR
--Anumite comenzi ale AUTOCAD-ului (de exemplu HELP sau STATUS)¬ comuta automat pe afisareatext in sistemele cu un singur display. Desi se poate utilizatasta FLIP SCREEN pentru revenirea manuala in afisarea grafica¬ nu exista nici o metoda de includere a acesteitaste intr-o comanda prescrisa si nici intr-o rubrica meniu. De aceea s-au prevazut doua comenzi speciale pentru a permite comutarea comenzilor prescrise si a rubricilor meniu intre displayuriletext si grafic. Aceste comenzi sint :
--Command s GRAPHSCR
pentru comutarea in afisarea grafica¬ si
--Command stEXTSCR
pentru comutarea in afisareatext. Aceste comenzi pot fi folosite si in modtransparent (precedate de un apostrof© intimp ce alta comanda este in executie. Ele sint ignorate in sistemele cu doua displayuri.
--11.1.6. Comanda RSCRIPt Comenzi prescrise continue
--In anumite situatii (programe demonstrative cu scop comercial)¬ este util a avea o secventa de comenzi care sa ruleze continuu pentru a releva multiple aspecte ale unui produs.
--Metoda utilizata depinde de modul de apelare a fisierului prescris. Daca acesta a fost apelat in linia de comanda de lansare in executie a AUTOCAD-ului si ultima comanda prescrisa din fisier este "END˘ sau "QUIt Y"¬ se va relua la reaparitia meniului principal (Main Menu).
--In acest caz¬ fisierul prescristrebuie inceput cu una dintre optiunile meniului principal. Pe de alta parte¬ in cazul in care comanda SCRIPt a fost utilizata pentru invocarea fisierului prescris curent¬ se poate cere explicit reluarea acestuia¬ incluzind comanda RSCRIPT.
--Command s RSCRIPT
Aceasta comanda este executata de Editorul de desenare al AUTOCAD-ului » ea nu determina abandonarea acestuia. De aceea¬ fisierul prescris va fi reluat cu comenzi ale Editorului de desenare si nu cu raspunsuri la optiunile meniului principal.
--De notat ca RSCRIPt nu este inteleasa de rutina meniului principal. De aceea ¬ nutrebuie sa urmeze o comanda "END˘ sau "QUIt Y˘ in secventa prescrisa.
Exemple :
Urmatorul exemplu reprezinta o secventa prescrisa continua apelata din linia de comanda "acad".
--1--------¨desen nou)
--demo------ (nume desen)
--line 1,± 2,± 2,˛ 1,˛ c (deseneaza un patrat)
--delay 500---- (pauza 1/˛ secunde)
--move ÷ 0,° 3,ł 7,° (muta patratul la dreapta · unitati)
----------("7.0˘ reprezinta deplasarea)
--delay 1000---- (pauza ± secunda)
--quit y------(ciclare)
Daca aceasta secventa se scrie in fisierul "box.scr˘ se va apela astfel :
--drive>acad ř box
De remarcat ca secventa denumeste desenul ("demo")¬ astfel incit numele implicit al desenului "X˘ specificat in linia de comanda este ignorat. Secventa creaza desenul "demo"¬ deseneaza un patrat si il deplaseaza · unitati la dreapta inainte de terminare si reluare. La editarea secventeitrebuie asigurata introducerea spatiilor (blank-urilor© si a RETURN-urilor in locurile adecvate. In exemplu de mai sus¬ de remarcat cele ˛ blankuri intre perechile "3,3˘ si "7,0˘ din comanda MOVE.
--Primul blank indicaterminarea cimpului de date "3,3"¬ iar al doilea indica completarea selectarii obiectului. Caracterele din fisier sint interpretate intotalitate si fiecare caracter este luat in considerare. Urmatorul exemplu prezinta o secventa prescrisa continua¬ invocata cu comanda SCRIPt :
--regen------ (regenerare desen)
text 3,˛ .µ 0----(adaugaretext)
--Come in for a demonstration !
--delay 1000---- (pauza ± secunda)
--erase L------(stergetextul)
----------(blank sfirsit selectare obiect)
--rscript------(reluare si restart secventa)
Daca aceasta secventa este scrisa in fisierul "showoff.scr˘ se va apela astfels
--Commands SCRIPt Script file s showoff
Aceasta secventa regenereaza desenul si adauga o scurta pauza¬ textul este sters si secventa este reluata cu comanda "regen".
--11.2. Demonstratii "slide"
--Uneori este necesara prezentarea mai multor vederi ale unui desen compleř sau vizualizarea mai multor desene diferite. Acestea pot fi realizate utilizind metodele obisnuite ale AUTOCAD-ului (incarcind desene diferite si aplicind daca este necesar procedee zoom)¬ dar cu consum detimp marit. In aceste cazuri posibilitatile "slide˘ ale AUTOCAD-ului sint preferabile.
--Se pot crea demonstratii complexe combinind facilitatile "slide˘ cu cele oferite de secventele de comenzi prescrise descrise mai inainte.
NOTA s Versiunea standard a AUTOCAD-ului poate fi utilizata pentru vizualizarea slide-urilor¬ dar pentru crearea lor este necesar pachetul ADE-2.
--Ce este un "slide˘ ?
In AUTOCAD un slide este un fisier care contine o secventa instantanee ("snapshot"© a displayului pe monitorul grafic.
--Se pot utiliza comenzi obisnuite ale AUTOCAD-ului pentru obtinerea imaginilor dorite pe monitor si ulterior obtinerea unui slide al acestui display.
--11.2.1. Comanda MSLIDE Formarea unui slide (+2)
--Comanda MSLIDE apartinind pachetului ADE-˛ este utilizata pentru a face un slide al displayului curent pe monitorul grafic. Initial¬ se creaza displayul care se doreste a fi salvat¬ apoi se introduce :
--Command s MSLIDE Slide file <currentľs (nume)
Numele desenului curent este considerat ca implicit. Pentru utilizarea acestuia¬ setasteaza RETURN. Extensia ".sld˘ este asociata numelui introdus» nu se include extensia in raspuns. La crearea slide-ului¬ are loc o operatie de redesenare¬ astfel incit aceasta poate fi vizualizata. Portiunile din desen care sint in afara ecranului sau pe straturile care sint "off"¬ nu sint incluse in slide.
--11.2.2. Comanda VSLIDE Vizualizarea unui slide
--Pentru vizualizarea unui slide¬ se utilizeaza comanda :
--Commmand s VALIDE Slide file s (nume)
Nu se include extensia in raspuns» este asumata ".sld˘ de catre AUTOCAD. Daca fisierul slide este gasit este citit¬ iar continutul sau este afisat pe monitorul grafic. Pentru restaurarea desenului curent pe monitor se utilizeaza comanda REDRAW.
--Daca sint necesare mai multe slide-uri la o prezentare¬ o posibilitate suplimentara poate fi folosita. In mod normal¬ viteza cu care un slide este afisat¬ este limitata de accesarea discului pentru citirea fisierului. Este insa posibila incarcarea de pe disc in memorie a slidului care urmeaza¬ in timpul asimilarii slidului curent si apoi afisarea rapida din memorie a celui nou.
--Pentru o astfel de preincarcare a unui slide se introduce un asterics inaintea numelui in comanda VSLIDE. Urmatoarea comanda VSLIDE sesizeaza preincarcarea unui slide si-l afiseaza fara a mai cere un nume de fisier. Pentru exemplificare se considera urmatoarea secventa prescrisa :
--VSLIDE SLIDE1----(incepe prezentarea slide-ului)
--VSLIDE *SLIDE2----(preincarca slide-ul 2)
--DELAY 2000---- (timp vizualizare slide-ul 1)
--VSLIDE------ (afiseaza slide-ul 2)
--VSLIDE *SLIDE3----(preincarca slide-ul 3)
--DELAY 2000---- (timp vizualizare slide-ul 2)
--VSLIDE------ (afiseaza slide-ul 3)
--DELAY 3000---- (timp vizualizare slide-ul 3)
--RSCRIPT------(ciclare)
Timpul de acces al discului necesar pentru incarcarea slide- urilor care urmeaza¬ este marit cutimpii de vizualizare pentru slide-urile curente. Pot fi utilizati in functie de necesitati¬ timpii suplimentari.
--11.2.3. Notatii asupra slide-urilor
--Facilitatea "slide˘ este foarte diferita de alte aspecte ale AUTOCAD-ului si ia in considerare faptul ca trebuie incarcata pentru utilizare in particular :
s Slide-urile nu pot fi editate. In cazul in care comenzile de editare normale (pntru a desena un segment¬ de exemplu© sint executate in timpul vizualizarii sint executate in timpul vizualizarii unui slide¬ editarea nu afecteaza sliderul ci desenul curent (care nu este vizibil). De aceea se recomanda numai a comenzilor urmatoare intimp ce se vizualizeaza un slide:
-- VSLIDE¬ pentru a vizualiza alt slide
-- DELAY¬ pentru a lasatimp pentru vizualizarea slide-ului
-- REDRAW¬ pentru readucerea desenului curent pe monitor. (De notat ca orice comanda care forteaza operatia de redesenare¬ de exemplu GRID OFF¬ reintoarce desenul curent pe monitor). Alte comenzi¬ ca MENU sau SCRIPT¬ care nu afecteza -- slide-ul sau desenul curent. Comenzile care comuta in modul text pe sistemele cu un singur ecran¬ ca FILES si HELP¬ pot fi de asemenea utilizate¬ cu exceptia celor care comutind din modultext inapoi in modul grafic forteaza operatia de redesenare.
Daca se doreste revizuirea unui slide¬ se editeaza desenul continut si apoi se formeaza un nou slide.
s Conditionarile layer/color¬ zoom-ul si alte conditii ale Editorului de desenare¬ active in momentul vizualizarii unui slide¬ nu influenteaza derularea acesteia. Un slide este pur si simplu o copie a ecranului¬ in momentul formarii lui¬ cu toate particularitatile existente.
s Daca se utilizeaza un monitor grafic cu rezolutie scazuta in momentul crearii unui fisier slide si apoi se vizualizeaza pe un monitor grafic de inalta rezolutie¬ AUTOCAD-ul ajusteaza imaginea in mod corespunzator. Cutoate acestea¬ slide-ul nu va beneficia de toate avantajele noului monitor pina la reformarea dupa desenul original.
--11.3. Variabile si expresii AutoLISP (+3)
--Daca pachetul optional ADE-ł este prezent se pot defini variabile detip intreg¬ real¬ punct si sir si li se pot asigura valori care pot fi folosite ori de cite ori AUTOCAD-ul cere date.
De asemenea se pot efectua operatii aritmetice si conditionale cu aceste valori si se pot utiliza expresii cu ele pentru a raspunde la cererile AUTOCAD-ului.
--Aceste facilitati avansate sint extrem de folositoare cind sint utilizate cu sistemul de meniuri (Anexa B). In cazul in care sinteti un utilizator nou al AUTOCAD-ului¬ se recomanda evitarea acestei sectiuni pentru aprofundarea notiunilor de baza anterioare.
--Variabilele si expresiile utilizeaza limbajul de programare AutoLISP¬ dar doar schiteaza o parte din posibilitatile acestuia. Aceasta sectiune introduce elementele de baza ale AutoLISP-ului (suficiente pentru utilizarea efectiva a variabilelor)¬ cele mai multe informatii fiind prezentate in Ghidul de programare AutoLISP.
--11.3.1. Expresii AutoLISP
Toate expresiile AutoLISP au forma :
(nume functie [argumente]...)
Fiecare expresie incepe cu o paranteza stinga si este formata ditr-un nume de functie si o lista optionala a argumentelor functiei (fiecare poate fi ea insasi o expresie).
--Expresiatrebuieterminata cu o paranteza. Fiecare expresie returneaza o valoare care poate fi utilizata de alta expresie» daca nu exista o astfel de expresie¬ AutoLISP-ul returneaza valoarea AUTOCAD-ului.
--Daca se introduce o expresie AutoLISP ca raspuns la cererea "Command:˘ a AUTOCAD-ului¬ valoarea acesteia este afisata pur si simplu. Desi cererea "Command:˘ nu mai apare¬ se poate introduce o comanda AUTOCAD in maniera uzuala. Cererea "Command:˘ va reapare cind comanda ce urmeaza esteterminata.
Daca o expresie incorecta estetiparita sau este citita dintr-un fisier¬ AutoLISP-ul poate afisa :--n>
unde n este un numar intreg care indica cite paranteze ramin neinchise. Daca apare aceasta cerere¬ trebuie introduse n paranteze pentru a iesi din aceasta conditie. O greseala frecventa este omiterea inchiderii apostrofului dublu ("© dupa un sirtext¬ in care caú parantezele ce urmeaza vor fi interpretate asemanator si modificarea lui n nu are nici un efect. Pentru corectarea acestei situatii se introduce ("© urmata de n paranteze.
--11.3.2. Variabile AutoLISP
--Variabilele AutoLISP pot fi de patrutipuris intreg¬ real¬ punct si sir.tipul variabilei este asociat in mod automat pe baza tipului valorii asignate. Variabilele retin aceste valori pina la o noua atribuire sau pina la incheierea sesiunii Editorului de desenare. Aceste variabile pot fi denumite oricum cu conditia ca primul caracter sa fie o litera. Variabilei "pi˘ ii este atribuita valoarea lui pi.
--Functia "setq˘ este utilizata pentru atribuirea de valori variabilelor. Formatul este :
--(setń nume-variabila valoare)
Functia "setq˘ atribuie valoarea specificata variabilei cu numele precizat. De asemenea reintoarce valoarea ca functie rezultata.
--Daca se utilizeaza "setq˘ cind AUTOCAD-ul a afisat o cerere "Command:˘ se va selecta variabila si se va afisa valoarea atribuita. De notat ca parantezeletrebuie sa incadreze expresia» ele sint obligatorii. Urmeaza citeva exemple :
--(setń k 3)S
--(setń ř 3.875)
--(setń layname ˘ EXTERIOR-Walls")
Aceste expresii atribuie valori unor variabile de tip intreg¬ real si respectiv sir. Variabilele punct reprezinta un bit mai complicat¬ in sensul ca ele contin amindoua coordonatele.
--Acestea sint prezentate ca o lista de doua numere incadrata de paranteze :
Primul termen din lista reprezinta coordonata Ř si al doilea¬ coordonata Y. Se poate utiliza si o alta functie de construire "list"¬ pentru formarea unei liste cu aceasta forma :
--(list 3.87µ 1.23)
De aceea¬ pentru atribuirea unor anumite coordonate unei variabile punct¬ se poate folosi una dintre expresiile urmatoare:
--(setń pt (list 3.87µ 1.23))
--(setń pt (list Ř 1.23))
Ultima utilizeaza valoarea variabilei "X˘ drept coordonata Ř a punctului. Se pot referi individual fiecare dintre coordonate¬ utilizind ˛ functii de constructie numite "car˘ si "cadr".
--(car pt© (intoarce coordonata Ř a variabilei punct "pt")
--(cadr pt© (intoarce coordonata Y a variabilei punct "pt")
De exemplu¬ sa presupunem ca variabilelor "pt1˘ si "pt2˘ le sint atribuite punctele (1,2© si (3,4)¬ ca fiind colturile opuse ale unui dreptnghi. Se pot utiliza functiile "car˘ si "cadr˘ pentru atribuirea variabilei "pt3˘ a coordonatelor unui alt colt al dreptunghiului (care are coordonata Ř a variabilei "pt1˘ si coordonata Y a variabilei "pt2"¬ dupa cum urmeaza:
--(setń ptł (list (car pt1© (cadr pt2)))
Functia "reverse˘ este de asemenea prevazuta .
Ea inverseaza ordineatermenilor in lista si este des folosita
pentru inversarea coordonatelor unei variabile de tip punct.
Continuind exemplul anterior¬ de exemplu :
--(reverse pt3)
va fi returnat punctul (4,1)
In cazul in care se doreste utilizarea valorii unei variabile ca raspuns la o cerere AUTOCAD¬ se introduce pur si simplu numele variabilei precedat de semnul axclamarii "!". Sa presupunem de exemplu¬ ca s-a atribui variabilei "abc˘ valoarea 14.887024. Se poate introduce de acum "!abc˘ ori de cite ori se doreste ca raspunsul la o cerere AUTOCAD sa fie 14.887024.
De exemplu :
S--Column distance s !abc
in mod asemanator¬ daca se dorestetrasarea unui segment din punctul (1,4©¬ atribuit variabilei "pt˘ se poate introduce :
--Command s LINE
--From point s !pt
OBSERVATII :
--1. Pentru ca expresiile si variabilele referite sa fie interpretate corect¬ paranteza "(˘ sau semnul exclamarii "!˘ trebuie sa fie primul caracter introdus in raspunsul la o cerere. Intrucit si siruriletext obisnuite pot incepe cu "!˘ sau "(˘ nu se poate folosi o variabila sau o expresie care sa furnizeze sir text pentru comenzi catEXt sau ATTDEF (a se vedea descrierea functiei "command˘ descrisa ulterior in aceasta sectiune).
--2. Nu se poate utiliza o variabila ca referire la o comanda AUTOCAD . De exemplu daca s-a atribuit sirul "line˘ variabilei "X˘ si apoi se introduce "!X˘ drept raspuns la cererea de comenzi a AUTOCAD-ului¬ "Command :"¬ se va afisa pur si simplu valoarea "line"» comanda LINE nu va fi executata.
--11.3.3. Variabilele sistem ale AUTOCAD-ului
--AUTOCAD-ul este prevazut cu numeroase variabile predefinite¬ multe dintre ele putind fi utilizate pentru modificarea diferitelor moduri si limite de desenare. Variabilele sistem pot fi accesate prin intermediul functiilor "getvar˘ si "setvar˘ unde:
--(getvar "nume-variabila")
intoarce numele variabilei sistem¬ iar :
--(setvar "numevariabila˘ valoare)
atribuie valoarea specificata¬ variabilei sistem cu numele precizat. De notat ca numele variabilei trebuie inclus intre apostrofuri duble. Unele variabile sistem sint detip read-only si nu pot fi modificate. De exemplu¬ pentru comutarea grilei pe off¬ se poate utiliza :
--(setvar "GRIDMODE˘ 0)
Comanda "GRID OFF˘ va avea acelasi efect¬ si va modifica in mod corespunzator variabila de sistem.
In anexa A este prezentata o lista completa a variabilelor sistem.
--11.3.4. Expresii aritmetice
--Anumite functii aritmetice¬trigonometrice si geomerice sint prevazute pentru utilizarea lor in expresii.
Majoritatea functiilor aritmetice accepta argumente intregi sau reale. Dacatoate argumentele sint intregi¬ rezultatul va fi de asemenea intreg» daca unul dintre argumente este real¬ intregii vor fi convertiti in reali si rezultatul va fi real.
Functiile aritmetice includ :
--(« ř y© intoarce suma x+y
--( ř y) intoarce diferenta x-y
--(« ř y) intoarce produsul x*y
--(Ż ř y) intoarce raportul x/y
--(mař ř y) intoarce maximul dintre ř si y
--(min ř y© intoarce minimul dintre ř si y
Fiecare dintre aceste functii permit mai multe argumente . De exemplu :
--(s ł ´ 5)
vor realiza suma¬ diferenta¬ produsul si impartirea argumentelor respective¬ returnind valoril 325.000000¬ 78,6° si respectiv 25.000000. In mod asemanator ,(mař ¸ ł 14.µ 300) va conduce la rezultatul 300.000000¬ maximul argumentelor specificate.
--Pe de alta parte¬ functiile listate in continuare cer numarul de argumente precizat :
(abs x)-- intoarce valoarea absoluta (modulul© lui x
(sqrt x)-- intoarce radacina patrata (radicalul© din x
(expt ř p)-- intoarce ř ridicat la puterea p
(exp p)-- intoarce e ridicat la puterea p
(log x)-- intoarce logaritmul natural din x
(float x)-- intoarce x-ul intreg convertit in real
(fiř x©-- intoarce partea intreaga a lui ř (conversia inversa). Aplicata valorii reale 2. va returna 2. Aplicata lui -2. va returna -2.(sin ang© intoarce sinusul lui ang¬ unde ang este un unghi in radiani (cos ang© intoarce cosinusul lui ang¬ unde ang este un unghi in radiani (atan x)-- intoarce arctangenta (in radiani© lui x(1« x©-- incrementeaza ř-ul cu 1. Este echivalent cu (« ř 1) (± x©-- decrementeaza ř-ul cu 1. Este echivalent cu ( ř 1) (angle p± p2© intoarce unghiul (in radiani© intre punctele p± si p2 (distance p± p2© intoarce distanta intre punctele p± si p2 (polar p± ang d© intoarce punctul aflat la distanta d de punctul p1¬ suâ unghiul ang (in radiani) (type a) intoarce tipul lui a (intreg¬ real¬ lista¬sir)
De remarcat ca nici una dintre aceste functii nu schimba valoarea curenta a variabilei» ele doar opereaza si intorc un rezultat.
--Daca se doreste utilizarea unei expresii pentru a schimba valoarea unei variabile¬trebuie atribuit rezultatul expresiei prin intermediul functiei "setq". De exemplu :--(setń x( ř 2))
scade ˛ din variabila "x˘ atrubuind rezultatul tot variabilei "x".
--11.3.5. Functii pentru siruri
--Citeva functii pentru siruri sint prevazute pentru utilizarea in expresii. Acestea sint :
(itoa int©-- intoarce valoarea intreaga int convertita in sir ASCII
(atoi s©---- intoarce valoarea intreaga rezultata prin conversia sirului s
(ascii c)---- intoarce codul ASCII pentru caracterul c
(chr int©-- - intoarce caracterul ASCII reprezentat de intregul int
(strcat s± s2)-- intoarce concatenarea sirurilor s± si s2
(strlen s)-- intoarce lungimea sirului s
(terpri)---- incepe o noua linie pe displayul ecran
--11.3.6. Expresii conditionale
--Se pot construi expresii conditionale care presupun executarea unei operatii date¬ numai daca o anumita conditie este indeplinita. Aceasta se poate realiza cu ajutorul functiei "if". Trebuie precizate functiei¬ conditia de testat si operatia efectuata in cazul verificarii conditiei. Se poate indica si operatia caretrebuie efectuata in cazul in care conditia nu se verifica. In continuare sint prezentate cele ˛ forme ale functiei "if˘ :
--(if conditie executie-adevarat)
--(if conditie executie-adevarat executie-fals)
"Conditie","executie-adevarat˘ si "executie-fals˘ pot fi expresii¬ incluse in paranteze.
Conditia este evaluata si daca rezultatul este non-nil (adevarat© Sexpresia "executie-adevarat˘ este executata¬ iar daca rezultatul este nil expresia "executie fals˘ este executata. Anumite functii sint prevazute pentru utilizarea drept conditii. Acestea sint :
(minusp num© intoarce t daca num este negativ,nil in sens contrar
(zerop num) intoarce t num este zero,nil in sens contrar
(numberp x© intoarce t daca ř este un numar (intreg sau real)¬ nil in sens contrar
(not a â...) intoarce "not˘ logic intre a,b...
(or a b...) intoarce "sau˘ logic intre a,b...
(and a b...) intoarce "si˛ logic intre a,b...
(˝ a b)-- intoarce t daca a=b¬ nil in caú contrar
(/˝ a b)-- intoarce t daca a=b¬ nil in caú contrar
(ľ a b)-- intoarce t daca a>b,nil in caú contrar
(>˝ a b)-- intoarce t daca a>=b¬ nil in caú contrar
(Ľ a b)-- intoarce t daca a<b¬ nil in caú contrar
(<˝ a b)-- intoarce t daca a<=b¬ nil in sens contrar
(listp a©-- intoarce t daca a este o lista¬ nil in sens contrar
(null a)-- intoarce t daca a este nil¬nil in sens contrar
De exemplu sa presupunem ca avem o variabila intreaga i si o variabila sir s si se doreste ca sirul sa fie "Correct˘ daca i este zero si "Error˘ in caú contrar :
--(if (˝ i 0© (setń s "Correct"© (setń s "Error")
In acest exemplu¬ "(˝ i 0)˘ este conditia care setasteaza » ea inseamna "este variabila i egala cu zero?". Daca da¬ va fi executat primul "setq"» daca nu¬ va fi executat al doilea "setq". Alta modalitate pentru acest exemplu este :
--(setń s (if (=i 0© "Correct˘ "Error"))
Aici expresia "if˘ returneaza fie "Correct˘ fie "Error"¬ iar rezultatul este atribuit variabilei s. Va puteti baza pe o testare conditionala asupra valorii unei variabile sistem a AUTOCAD-ului¬ iar rezultatul este atribuit variabilei s.
--(if (ľ (getvar "FILLETRAD"© 0.2µ (setvar "GRIDMODE˘ 0))
Aici functia "getvar˘ este utilizata pentru obtinerea si verificarea variabilei sistem "FILLETRAD˘ (raza de racordare). Daca aceasta este mai mare de 0.2µ ¬ atunci functia "setvar˘ este utilizata pentru selectarea pe zero a variabilei sistem "GRIDMODE˘ (comutind grila pe OFF).
--In acest exemplu¬ nu este specificata nici o expresie "executie-fals"¬ astfel incit daca raza de racordare este mai mica sau egala cu 0.2µ ¬ nu se va executa nici o operatie.
--11.3.7. Functii pentru introducerea datelor
--Anumite functii sint prevazute pentru a permite cereri de Sintroducere si pentru utilizarea raspunsurilor in expresii. Aceste functii sint mult folosite in rubricile meniurilor (a se vedea anexa B).
--Cereri pentru introducere
--Se poate formula o cerere de introducere utilizind functia "prompt˘ :
--(prompt "sir")
Aceasta presupunere ca "sir˘ reprezinta o cerere AUTOCAD. Sirul trebuie precizat explicit sau poate fi facuta o referire la o variabila sir. De exemplu :
--(prompt "Enter your name:")
--(setń s "Enter your name:")
--(prompt s)
vor avea acelasi efect. Functia "prompt˘ intoarce intotdeauna nil.
--Obtinerea unui punct
--Pentru citirea unui punct introdus de utilizator¬ se foloseste functia "getpoint"
--(getpoint [bazaÝ [cerere])
argumentele "baza˘ si "cerere˘ sint optionale. Daca "baza˘ este prezent¬ el specifica punctul de baza al liniei ajutatoare (subiectul modului Ortho). Daca un sir "prompt˘ este prezent el este afisat ca o cerere. Functia "getpoint˘ intoarce nil daca se semnaleaza o eroare.
--Utilizatorul poate folosi orice metoda de specificare a unui punct¬ incluzind formate speciale folosite de comanda UNITS.
Exemple :
--(setń pt± (getpoint "First end of wall:"))
--(setń pt˛ (getpoint pt± "Other end of wall?"))
--Obtinerea unei distante
--Pentru citirea unei distante specificate de utilizator¬ se foloseste functia "getdist".
--(getdist [bazaÝ [cerere])
Utilizatorul poate folosi oricare dintre metodele de specificare a distantei¬ incluzind formatele speciale utilizate de comanda UNITS.
--Daca se introduce un anumit punct¬ AUTOCAD-ul ataseaza plecind din acesta un cursor de forma unei linii indicatoare ajutatoare si formuleaza o cerere pentru un al doilea punct. Dupa aceasta¬ returneaza distanta dintre aceste doua puncte. Daca este specificata valoarea unui punct drept argument optional "baza˘ pentru functia "getdist"¬ acest este considerat drept prim punct iar linia indicatoare ajutatoare este asociata acestuia. Daca se mai introduce un punct AUTOCAD-ul va returna distanta dintre punctul de baza si acesta.
--Daca este specificat argumentul optional "cerere"¬ sirul respectiv este considerat o cerere. Daca amindoua argumentele optionale sint dorite¬ ele se specifica in ordinea mentionata. Functia "getdist˘ returneaza nil daca este semnalata o anumita eroare.
--Obtinerea unui unghi
--Pentru citirea unui unghi specificat de utilizator¬ se foloseste functia "getangle".
--(getangle [bazaÝ [cerere])
Aceasta opereaza exact ca functia "getdist˘ cu deosebirea ca unghiul este returnat in radiani¬ dupa introducerea punctelor de catre utilizator. Daca este semnalata o eroare¬ este returnat nil. Utilizatorul poate folosi oricare dintre metodele de specificare a unghiului¬ incluzind formatele speciale utilizate de comanda UNITS.
--Obtinerea unui numar real
--Pentru citirea unui numar real (factor de scalare ¬ etc.© solicitat de utilizator se foloseste functia "getreal".
--(getreal© [cerere])
Numai numerele zecimale si notatia stiintifica sint acceptate de catre aceasta functie.
--Formatele speciale utilizate de comanda UNITS nu reprezinta raspunsuri valide. Se returneaza nil¬ in cazul semnalarii unei erori.
--Obtinerea unui intreg
--Pentru citirea unui numar intreg furnizat de utilizator¬ se utilizeaza functia "getint".
--(getint [cerere])
Formatele speciale de introducere utilizate de comanda UNITS¬ nu reprezinta raspunsuri valide. "Getint˘ returneaza nil daca este Ssemnalata o eroare.
--Obtinerea unui sir text
--Pentru citirea unui sirtext furnizat de utilizator¬ se utilizeaza functia "getint".
--(getint [cerere])
Daca este furnizat un argument diferit de nil¬ utilizatorul trebuie sa termine introducerea sirului tastind RETURN. Daca "getstring˘ semnaleaza o eroare¬ se returneaza nil.
--11.3.8. Functia obiect snap
--Se poate utiliza mecanismul obiectului snap in expresii cu ajutorul functiei "osnap".
--(osnap pt "s")
"pt˘ este un punct supus mecanismului obiectului snap al AUTOCAD- ului si "s˘ este un sir care contine modurile obiect snap dorite. Functia returneaza punctul care rezulta prin aplicarea sirului "s˘ lui "pt". Daca nu este gasit un punct adecvat¬ se returneaza nil. De exemplu :
--(setń pt˛ (osnap pt± "mid")
selecteaza "pt2˘ la mijlocul segmentului pe care "pt1˘ il determina. Functia "osnap˘ este aplicata doar punctului.
--11.3.9. Executarea comenzilor AUTOCAD
--Functia "command˘ executa comenzi ale AUTOCAD-ului dintr-o expresie AutiLISP si returneaza intotdeauna nil. Formatul este :
--(command [argumente]...)
Argumentele reprezinta comenzi ale AUTOCAD-ului¬ subcomenzi¬ optiuni si alte raspunsuri. Fiecare argument este evaluat de AutoLISP si este transmis AUTOCAD-ului ca raspuns cererilor succesive. Numele comenzilor si optiunilor sint furnizate ca siruri iar punctele ca liste de doua numere reale. Numele comenzilor sint recunoscute de AUTOCAD numai daca a fost formulata o cerere "Command". Exemplu :
--(setń pt± (list 1.4µ 3.23))
--(setń pt˛ (getpoint "enter a point:"))
--(command "line˘ pt± pt2)
--(command ˘")
Secventa expresiilor de mai sus selecteaza o valoare pentru Spunctul "pt1"¬ formuleaza o cerere pentru punctul "pt2˘ si executa comanda LINE aplicata celor doua puncte.
--Un sir nul (""© este echivalent cu un blank introdus de la tastatura. Utilizarea functiei "command˘ fara nici un argument este echivalenta cu tastarea unui CTRL C si va intrerupe executarea comenzilor AUTOCAD.
--Desi in general nu este posibila utilizarea unei expresii sau variabile AutoLISP la cererea de siruritext¬ se poate totusi utiliza functia "command˘ pentru furnizarea tuturor raspunsurilor unei comenzi¬ inclusiv sirurile text. Exemplu :
--(setń name "Your name")
--(command "text" (list ± 2))
--(command 0.2µ ° name)
Presupunind ca ultima cerere a AUTOCAD-ului a fost "Command:˘ aceasta secventa va executa comandatEXt si va plasa sirul text "Your name˘ in punctul (1,2) cu o inaltime de 0.2µ unitati si cu un unghi de rotire zero. Asa cum s-a aratat¬ argumentele functiei "command˘ pot fi siruri¬ intregi¬ reali¬ sau puncte. Functia "command˘ transmite pur si simplu in mod secvential argumentele AUTOCAD-ului .
--Comenzile executate prin intermediul functiei "command˘ nu sint afisate pe ecran daca variabila sistem CMDECHO este selectata pe zero.
NOTA s Daca o functie "get˘ ("getstring"¬ "getint"¬ "getpoint"¬ etc.© este utilizata in functia "command"¬ aceasta nu poate include o cerere de sir.
--11.3.10. Functii pentru controlul afisarii
--Aceste functii sint prevazute pentru a permite anumite orientari ale afisarii si pentru a putea fi folosite in expresii. Acestea sint :
--(redraw)-- redesenare reconditionata
--(graphscr©-- comuta pe afisare grafica in sistemele cu un singur ecran
--(textscr©-- comuta pe afisare text in sistemele cu un singur ecran
Fiecare dintre aceste functii este similara comenzii respective a AUTOCAD-ului.
|