Sostituire i punti con un blocco

confutatis

Guest
...fermo restando che le entità selezionate con ssget "x" o "_A" appartengono al layout corrente.

@Joseph
Ottima info, grazie! :finger:
 

Joseph

Utente Standard
professione: studio e sperimento
software: autocad 2012
regione: lombardia
Per Andrea, che sembra molto interessato all'argomento, a integrazione di quello che ha precisato Termin.., scusa, Confutatis:

(ssget "_X") seleziona tutti gli oggetti principali del database, anche fuori dallo schermo, anche posti su piani disattivati e/o congelati.
Esiste però un'opzione NON documentata di ssget:
(setq pts (ssget "_A" )) che seleziona tutti gli oggetti del database (come ssget "X") , tranne quelli situati su piani congelati.

Ciao

Mi era rimasto qualche dubbio sul comportamento di SSGET con le opzioni "X" e "_A", senza e con i filtri.
Ho disegnato 10 cerchi su 3 layers (inizialmente tutti ON, in seguito 1 layer congelato) nello spazio modello e 2 sullo spazio carta;
ho creato, sul layer 0, 2 finestre sia in Layout1 sia in Layout2;
in Layout2 ho congelato successivamente un layer per ogni finestra.
Quindi ho applicato i 2 stralci di codice seguente sia allo Spazio Modello sia allo Spazio Carta

SENZA FILTRI
(setq sel (ssget "X" ))
(setq i (sslength sel))

(setq sel (ssget "_a" ))
(setq i (sslength sel))

Spazio modello
- tutti i layers attivi
Opzione "X" e opzione "_A": numero di oggetti selez. = 18 (10 nello spazio modello, 4 finestre nello spazio carta, 2 oggetti sul layout1, 2 layout (sono considerati delle finestre, quindi degli oggetti?)
- 1 layer FREEZE (con 3 oggetti):
Opzione X: oggetti selez.= 18
Opzione A: oggetti selez. =15 (mancano i 3 oggetti sul layer congelato)
----
Spazio carta:
- dentro una delle finestre: i risultati sono uguali al caso precedente
- sullo spazio carta e con layer congelati SOLO localmente: "X" e "_A": oggetti selez. =18; se ne deduce che l'opzione

La selez. con "_A" è influenzata solo dal congelamento globale (e non locale nelle singole finestre) dei layers.

CON I FILTRI
p.es (setq sel (ssget "X" (list '(0 . "CIRCLE")) )), la selezione (n.ogg.=12), fatta nello Spazio Modello (0 nello Spazio Carta) comprende tutti i cerchi, anche quelli disegnati sullo spazio carta.
----
Diverso è il comportamento del comando SELEZ (opz. Tutto)
da Spazio Modello:
trovato(i) 18
8 non erano nello spazio corrente.

da Spazio Carta
trovato(i) 18
13 non erano nello spazio corrente
1 era una finestra nello spazio carta (???)
oppure (cambiando layout)
trovato(i) 15
8 non erano nello spazio corrente. (???)
e
aggiungendo un layout nuovo, questo viene visto come un oggetto, anche se non è stata disegnata alcuna finestra.
-----
I comandi che usano Selezione Oggetti (es. Copia, Sposta, ecc) pur selezionando gli oggetti in entrambi gli spazi (Modello e Carta), influenzano tuttavia solamente gli oggetti dello Spazio corrente.
 

kitemaster64

Utente poco attivo
professione: Tecnico
software: Cad
regione: Piemonte
Salve a TUTTI siete BRAVISSIMI e UTILISSIMI.
Intanto GRAZIE, da qualche tempo sto usando questo LISP, chiedo troppo se potesse essere modificato O INTEGRATO in modo che il Blocco che si autoinserisce vada a porsi sul layer al quale fa parte il punto..?
A cosa mi serve..? purtroppo non ho software specifici ... in poche parole cosa devo fare: ho i crocini(punto) già inseriti sul file.. a coordinate varie X,Y,Z e sono di vari colori a seconda del layer su cui sono posti.., al crocino/punto dovrei applicargli il valore della della coord. Z selezionando la nuvola di di crocette..
Si può fare? Magari inserire un blocco che si auto aggiorna a seconda delle caratteristiche del punto?


AutoCAD in italiano

(defun c:Rp()
(setq obj (car (entsel "\nSeleziona blocco: ")))
(prompt "\n\nSeleziona i punti")
(setq ss (ssget (list (cons 0 "point"))))
(setq inc 0)
(setq orgpnt (cdr (assoc '10 (entget obj))))
(while (setq node (ssname ss inc))
(setq topnt (cdr (assoc '10 (entget node))))
(command "_copy" obj "" orgpnt topnt)
(setq inc (1+ inc))
))
[/quote]
 

rpor66

Utente Standard
professione: Programmatore
software: Lisp, Vba per Autocad, BricsCad e GstarCAD, CadWorx
regione: Sicilia
Poche modifiche all'originale rp.lsp, il blocco selezionato viene inserito e non copiato, prima dell'inserimento viene settato il piano relativo al punto.
Il blocco per acquisire le proprietà del piano deve avere le entità su piano 0.
Ho inserito un "Undo Mark" così se vuoi tornare indietro ti basta un "Undo Back".
 

Allegati

  • rp.lsp
    621 bytes · Views : 23

Statistiche forum

Discussioni
59,370
Messaggi
505,771
Utenti registrati
111,039
Ultimo utente registrato
Vincenzo 10

Utenti online

Top