Selezione di più oggetti

Angelo2449

Utente Junior
Professione: Pensionato
Software: Autocad
Regione: Lombardia
#1
Salve a tutti,
con la funzione "entsel" seleziono un elemento, ora ho il problema di dover selezionare un gruppo di elementi (estratto catastale in dxf)
, come posso operare per selezionare l'intero gruppo mantenendo la possibilità di estrarne le caratteristiche :
Codice:
(setq Estratto nil)
    (while
        (= Estratto nil)
        (setq Estratto (entsel "\nSeleziona l'Estratto da georeferenziare : "))
    )

    (princ "\n")
    (princ Estratto)
    (princ "\n")

    (setq ed1 (entget (car Estratto)))
    (setq en1 (cdr (assoc -1 ed1)))
    (redraw en1 3)
Grazie.
 

rpor66

Utente Standard
Professione: Programmatore
Software: AutoCad, GstarCAD, CadWorx, Excel, Lisp, VBA
Regione: Sicilia
#2
Con ssget, cerca in rete, trovi esempi di tutti i tipi.

Il termine gruppi può creare confusione, non si capisce se intendi un insieme di entità o fai riferimento ai gruppi in Autocad creati tramite il comando Group; meglio specificare.

Bye
 

Angelo2449

Utente Junior
Professione: Pensionato
Software: Autocad
Regione: Lombardia
#3
Ho letto un po', penso che il problema sia risolvibile creando prima un blocco di tutti gli elementi da selezionare.
Ora occorre scrivere le relative istruzioni.
Grazie
 

Cristallo

Utente Standard
Professione: Leggo e confronto
Software: Lettura critica
Regione: Fuori dalla cerchia
#4
per estratto cosa intendi?
un insieme di entità diverse tra loro? (archi, testi, linee, cerchi etc)
oppure omogenei in qualche caratteristica (colore, layer, tipolinea)
Se non hai un punto comune non riesci a selezionarli via ssget, a meno di non metterli da qualche parte nel disegno dove non ci sono altre entità e fare una selezione ssget con finestra.
 

Angelo2449

Utente Junior
Professione: Pensionato
Software: Autocad
Regione: Lombardia
#5
Grazie a tutti,
ho risolto creando un blocco con questo programmino :

Codice:
(defun C:CREABLOCCO (/ sset tell ent ent_get entu ent_getu blk)
        (princ "\n Seleziona gli oggetti da raggruppare in Blocco anonimo: ")
        (setq sset (ssget))
        (if sset (progn
             (entmake (list
                       '(0 . "BLOCK")
                       '(2 . "*U")
                       '(70 . 1)
                       '(10  0.0 0.0 0.0)))
             (setq tell 0)
             (setq ent (ssname sset tell))
             (while ent
               (setq ent_get (entget ent))
               (if (/= (cdr (assoc 0 ent_get)) "POLYLINE")(progn
                      (setq ent_getu (cdr ent_get))
                      (entdel ent)
                      (entmake ent_getu))
                   (progn
                     (setq entu ent
                           ent_getu (cdr ent_get))
                     (while (/= (cdr (assoc 0 ent_getu)) "SEQEND")
                      (setq ent_getu (cdr (entget entu)))
                      (entmake ent_getu)
                      (setq entu (entnext entu))
                      );while
                      (entdel ent)                   
                   )
               );if
               (setq tell (+ tell 1))
               (setq ent (ssname sset tell))
             )       
             (setq blk (entmake (list '(0 . "ENDBLK"))))
             (entmake (list '(0 . "INSERT")
                             (cons 2 blk)
                             '(10 0.0 0.0 0.0))) 
          );progn
        );if
      (princ "\n Il gruppo è stato creato")
      (princ)
)                   
(princ)
Poi seleziono il blocco creato e ne faccio qualsiasi cosa.