cg-Cad

Lisp »Tips 'n Tricks »Esempio d'uso della funzione Entsel

Ecco un lisp che chiede di selezionare un'entità (una linea), ne estrae i punti estremi e li visualizza sulla linea di comando di Autocad.

(defun C:sel_l (/ s1 ent l1 l2 pl1 pl2 p1)
 (setvar "cmdecho" 0)
 ;la funzione entsel restituisce un elenco, 
 ;in cui il primo elemento è il nome 
 ;dell'oggetto scelto, e il secondo elemento 
 ;rappresenta le coordinate del punto
 ;utilizzato per selezionare l'oggetto.
 (setq s1 (entsel "\nSeleziona una linea...")) 
 ;entget restituisce un elenco dati di definizione 
 ;dell'entità
 ;ad esempio dopo aver disegnato una linea, digitando
 ;(entget (entlast)) ricavo:
 ;((-1 . )(0 . "LINE")(8 . "0")
 ;(10 x1 y1 z1)(11 x2 y2 z2)...)
 (setq ent (entget (car s1)))
 ;estraggo i punti estremi della linea con la funzione
 ;(assoc item list)
 ;assoc restituisce una sottostringa che contiene come
 ;primo elemento la chiave item
 (setq pl1 (cdr (assoc 10 ent)))
 (setq pl2 (cdr (assoc 11 ent)))
 (princ "\npE1 = ")(princ pl1)
 (princ " pE2 = ")(princ pl2)
 ;estraggo il punto di selezione dell'entità
 (setq p1 (cadr s1))
 (princ " pS = ")(princ p1)
 (princ)
)

Lisp »Tips 'n Tricks