CATEGORII DOCUMENTE |
AutoCAD-ul poate aseza grupuri de entitati in seturi de selectie. Comenzile AutoCAD si functiile AutoLISP pot actiona asupra unui set de selectie si facind aceasta, poate actiona global asupra grupului de entitati din setul de selectie.
in acest capitol veti invata:
Cum sa creati un set de selectie.
Cum sa folositi un set de selectie cu comenzi AutoCAD.
Cum sa creati un set de selectie interactiv, cu fereastra, cu filtru si prin selectarea tuturor componentelor dintr-un desen.
Cum sa aflati lungimea numarului de entitati intr-un set de selectie.
Cum sa lucrati cu nume de entitati intr-un set de selectie.
Un set de selectie in AutoLISP reprezinta un tip unic de date numit PICKSET, alcatuit dintr-o colectie de nume de entitati. Setul de selectie nu este o lista.
AutoLISP poate pastra maximum 128 de seturi de selectie deschise odata (numarul ar putea fi mai mic pentru un sistem dat).
Legati intotdeauna o variabila de un set de selectie pe care il creati sau modificati; altfel nu aveti acces la setul de selectie si nici o cale de a elibera resursele sistemului consumate de setul de selectie pina ce nu iesiti din AutoCAD.
Cind ati terminat cu o variabila atribuita setului de selectie, este bine sa setati variabila pe nil pentru a elibera resursele folosite de setul de selectie.
AutoLISP dispune de o varietate de functii pentru a crea si manipula seturile de selectie. Acest capitol descrie functionalitatea si arata exemple de functii ssget, sslength si ssname.
Functia |
Operatia |
ssget |
Creaza un set de selectie |
ssadd |
Adauga o entitate la un set de selectie |
ssdel |
Sterge o entitate dintr-un set de selectie |
sslength |
Determina numarul de entitati dintr-un set de selectie |
ssmemb |
Verifica daca fiecare entitate este parte a setului de selectie |
ssname |
Extrage numele entitatilor din setul de selectie |
Tabelul 29. Functii pentru seturi de selectie
Functia ssget include virtual toate seturile de selectie interactive, cuprinzind metode care sint disponibile in AutoCAD la mesajul Select objects: . Sintaxa completa si numarul de aplicatii ale functiei sint prea complicate pentru a fi descrise aici in intregime. De aceea ne vom concentra atentia asupra citorva dintre formele de sintaxa cele mai folosite si vom lasa descrierea completa in seama manualului AutoLISP Programmer's Reference Manual.
Sintaxa functiei |
Operatia |
(ssget) |
"Select objects standard:cererea permite utilizatorului selectia interactiva ' |
(ssget 'X') |
Selecteaza toate entitatile din desen |
(ssget 'W' '(1.0 1.0 0.0) '(11.0 8.0 0.0)) |
Selecteaza toate entitatile din fereastra de la 1,1,0 la 11,8,0 |
(ssget 'X' '((0 . 'LINE'))) |
Selecteaza toate entitatile Line din desen |
Tabelul 30.Sintaxa si operatiile functiei ssget.
Deschideti desenul ssget.dwg in directorul student. Veti folosi acest desen pentru urmatoarele patru exemple care arata cum sa folositi ssget.
Functia ssget apelata fara argumente va genera cererea standard 'select objects:' in zona liniei de comanda si va permite utilizatorului sa selecteze obiecte interactiv. Cind utilizatorul termina procesul de selectie cu tasta Return sau Space, functia ssget returneaza valoarea ei sub forma unui nou set de selectie.
Cind va aflati in desenul ssget.dwg, introduceti expresiile care urmeaza.
Folositi ssget pentru a cere utilizatorului sa selecteze obiecte.
Command: (setq ss1 (ssget))
Select objects: pick several objects
Select objects: Enter
<Selection set: 1>
Verificati tipul de date ale variabilei ss1.
Command: !ss1
<Selection-set: 1>
Command: (type ss1)
PICKSET
Folositi setul de selectie pentru care variabila ss1 este legata in cadrul comenzii AutoCAD.
Command: erase
Select objects: !ss1
Select objects: Enter
Refaceti obiectele sterse.
Command: oops
Functia ssget apelata cu un singur argument, sirul 'X', va returna un set de selectie compus din entitatile componente din desen. Aceasta functie include entitatile care nu sint afisate pe monitor si entitatile de pe layere care sint inghetate si/sau inchise.
Cind sinteti in desenul ssget.dwg, introduceti expresiile care urmeaza.
Folositi functia ssget pentru a crea un set de selectie format din toate entitatile din desen.
Command: (setq ss1 (ssget 'X'))
<Selection set: 2>
{tergeti toate obiectele din desen.
Command: (command '.erase' ss1 '')
Refaceti obiectele sterse.
Command: oops
Puteti apela functia ssget cu un argument de tip sir care corespunde oricarei optiuni standard la cererea 'select objects:', optiuni cum ar fi 'W' pentru entitatile incluse in fereastra, 'C' pentru entitatile care traverseaza sau sint incluse in fereastra si 'F' pentru entitati care intersecteaza o polilinie de selectie.
Cind sinteti in desenul ssget.dwg, introduceti expresiile care urmeaza.
Creati un set de selectie din entitati care apartin unei ferestre definita de punctele 6,3,0 si 11,8,,0.
Command: (setq ss1 (ssget 'W' '(6 3 0)
'(11 8 0)))
<Selection set: 3>
{tergeti toate entitatile care se afla in interiorul ferestrei.
Command: (command '.erase' ss1 '')
Refaceti toate entitatile sterse.
Functia ssget va permite sa selectati entitatile prin filtru. Puteti filtra in acord cu oricare dintre proprietatile entitatilor care sint pastrate in coduri de grup DXF in cadrul listelor asociate entitatilor.
O lista filtru este asemanatoare cu o lista asociata entitatii. Implicit, o entitate trebuie sa corespunda fiecarei proprietati din filtru pentru a putea fi adaugata la setul de selectie. Exista si alte metode de creare a listelor de tip filtru.
Comanda AutoCAD FILTER definita de fisierele filter.lsp si filter.dcl este in general o interfata bazata pe dialog la functia ssget si listele de tip filtru.
Cind va aflati in desenul ssget.dwg, introduceti expresiile care urmeaza.
Creati un set de selectie format din entitatile de tip Line din desen.
Command: (setq ss1 (ssget 'X' '((0 .
'LINE'))))
<Selection set: 4>
{tergeti toate entitatile de tip Line din desen.
Command: (command '.erase' ss1 '')
Refaceti obiectele sterse.
Command: oops
Setati variabila ss1 pe nil si eliberati resursele folosite curent de setul de selectie.
Command: (setq ss1 nil)
nil
Functia sslength cere un singur argument: un set de selectie valid. Functia returneaza numarul de nume al entitatilor din setul de selectie.
Cind va aflati in desenul ssget.dwg, introduceti expresiile care urmeaza.
Creati un set de selectie din trei (3) entitati.
Command: (setq ss1 (ssget))
Select objects: pick three objects
Select objects: Enter
<Selection set: 5>
Folositi functia sslength pentru a verifica numarul de entitati din setul de selectie.
Command: (sslength ss1)
3
Setati variabila ss1 pe nil si eliberati resursele folosite curent de setul de selectie.
Command: (setq ss1 nil)
nil
Un set de selectie este un grup format din nume de entitati AutoCAD. Functia ssname poate stabili numele oricarei entitati dintr-un set de selectie.
Functia ssname cere doua argumente: un set de selectie valid si un numar intreg. Numarul intreg corespunde unui index 0 al numelui entitatii din setul de selectie.
Cind va aflati in desenul ssget.dwg, introduceti expresiile care urmeaza.
Creati un set de selectie din trei entitati.
Command: (setq ss1 (ssget))
Select objects: pick three objects
Select objects: Enter
<Selection set: 6>
Folositi ssname pentru a returna numele fiecarei entitati din setul de selectie.
Folositi entget pentru a returna lista asociata fiecarei entitati.
Command: (setq ename (ssname ss1 0))
<Entity name: xxxxxxxx>
Command: (entget ename)
Command: (setq ename (ssname ss1 1))
<Entity name: xxxxxxxx>
Command: (entget ename)
Command: (setq ename (ssname ss1 2))
<Entity name: xxxxxxxx>
Command: (entget ename)
Setati variabila ss1 pe nil si eliberati resursele folosite curent de setul de selectie.
Command: (setq ss1 nil)
nil
Grupurile de entitati pot fi plasate in seturi de selectie.
Un set de selectie in AutoLISP are un tip de date PICKSET. Setul de selectie nu este o lista.
AutoLISP poate mentine 128 de seturi de selectie deschise in acelasi timp.
Legati o variabila ori de cite ori creati un set de selectie.
Eliberati intotdeauna resursele folosite de un set de selectie dupa ce ati terminat de lucrat cu acesta.
Functia ssget poate crea un set de selectie in diferite moduri.
Functia sslength returneaza numarul de entitati din setul de selectie.
Functia ssname returneaza numele entitatii din setul de selectie.
exercitiul33: crearea interactiva a seturilor de selectie
in acest exercitiu:
Veti aprofunda cunostintele despre seturile de selectie din AutoLISP.
Veti folosi functia ssget.
Veti obtine un set de selectie interactiv de la utilizator.
Veti accesa entitatile dintr-un set de selectie.
Deschideti fisierul grafic moddim.dwg din directorul student.
in editorul de text deschideti fisierul numit chdim.lsp din directorul student.
Adaugati codul care realizeaza urmatoarele:
Creati o functie numita c:chdim.
Cereti utilizatorului un set de selectie.
Explorati fiecare entitate din setul de selectie.
Transferati ficare lista asociata entitatii ca argument la functia chdim_mod.
Eliberati setul de selectie.
Salvati fisierul chdim.lsp.
incarcati fisierul in AutoCAD si incercati comanda chdim.
Iesiti din desen moddim fara a salva modificarile.
Daca aveti timp va puteti modifica programul astfel:
Adaugati o rutina de tratare a erorilor.
Adaugati un dictionar de date.
Transformati variabilele corespunzatoare mai degraba in variabile locale decit in variabile globale.
(defun chdim_mod (elist)
(if ;if entity is a dimension
(= 'DIMENSION' (cdr (assoc 0 elist)))
(entmod ;modify it based on
(subst
(cons 8 'DIM') ;substituting layer DIM
(assoc 8 elist) ;for its current layer.
elist
)
)
exercitiul 34: seturi de selectie cu filtru
Acesta este un exercitiu optional.
Rezolvati acest exercitiu numai daca aveti timp in clasa.
Codul care urmeaza, implementeaza o versiune a CHDIM care este din punct de vedere functional echivalenta cu versiunea anterioara. Aceasta versiune foloseste un filtru pentru set de selectie in combinatie cu o selectie interactiva de entitati cu scopul de a amplasa numai entitatile de tip dimension in setul de selectie.
Deschideti fisierul grafic moddim.dwg din directorul student.
Creati un nou fisier in editorul text numit chdim2.lsp.
Introduceti codul care urmeaza.
Acest cod creaza functia c:chdim2. CHDIM2 va cere utilizatorului un set de selectie, va filtra toate entitatile cu exceptia entitatilor de tip dimension si va schimba entitatile pe layerul DIM.
(defun c:chdim2 ()
;get a selection-set from user and filter out all but dimensions
(setq ss (ssget "X"((0 . 'DIMENSION'))))
(if ;if no selection-set, exit
(not ss)
(exit)
;change the layer
(command '._chprop' ss '' 'LA' 'DIM' '')
(setq ss nil) ;free selection-set
(prin1) ;quiet exit
Salvati fisierul chdim2.lsp.
incarcati fisierul in AutoCAD.
Activati comanda CHDIM2.
Parasiti desenul moddim fara sa faceti modificari.
Politica de confidentialitate | Termeni si conditii de utilizare |
Vizualizari: 1777
Importanta:
Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved