Creare entità elementari con lisp

Qualche esempio su come creare entità elementari con lisp.

Procedura per creare una linea :

;;Crea una linea
 (setq v1 (list 
  (cons 0 "LINE");tipo di entità creata
  (cons 8 "0") ;nome del layer a cui appartiene
  (cons 10 '(5.0 10.0)) ;start point
  (cons 11 '(15.0 13.0)) ;end point
 ))
 (entmake v1) ;crea linea
 

Procedura per creare una cerchio :

 ;;Crea un cerchio
 (setq v1 (list 
   (cons 0 "CIRCLE");tipo di entità creata
   (cons 8 "0") ;nome del layer a cui appartiene
   (cons 10 '(5.0 10.0)) ;centro
   (cons 40 2.5) ;raggio
 ) )
 (entmake v1) ;crea cerchio

Procedura per creare una testo :

 ;;Crea un testo
 (setq v1 (list 
   (cons 0 "MTEXT");tipo di entità creata
   (cons 8 "0") ;nome del layer a cui appartiene
   (cons 100 "AcDbEntity") ;dichiarazione
   (cons 100 "AcDbMText") ;
   (cons 10 '(5.0 10.0)) ;punto di inserimento
   (cons 1 "Ciao") ;testo
 ))
 (entmake v1) ;crea testo 

Procedura per creare un layer :

 ;;Crea un layer
 (setq v1 (list 
   (cons 0 "LAYER");tipo di entità creata
   (cons 100 "AcDbSymbolTableRecord") ;dichiarazione
   (cons 100 "AcDbLayerTableRecord") ;tavola dei layer
   (cons 2 "MIO_LAYER") ;nome layer
   (cons 6 "Continous") ;tipo di linea
   (cons 62 5) ;colore (blu)
   (cons 70 0) ;stato
   (cons 290 1) ;stampa 1=si 0=no
   (cons 370 0) ;spessore
 ))
 (entmake v1) ;crea layer
 

Procedura per creare una polilinea :

 ;;Crea una polinea bidimensionale
 ;;Crea una lista vertici
 (setq plist (list
   '(0.0 2.0)
   '(3.0 3.0)
   '(5.0 1.0)
 ))
 ;;crea i parametri che caratterizzano la polilinea
 (setq v1 (list 
   (cons 0 "LWPOLYLINE");tipo di entità creata
   (cons 8 "0") ;nome del layer a cui appartiene
   (cons 100 "AcDbEntity") ;dichiarazione
   (cons 100 "AcDbPolyline") ;
   (cons 90 (length plist)) ;numero vertici
   (cons 70 0) ;1=chiusa 0=aperta
   (cons 43 0.0) ;larghezza polilinea
 ))
 ;;aggiunge i vertici
 (foreach le plist
   (setq v1 (append v1 (list (cons 10 le))))
 )
 (entmake v1) ;crea polilinea
 
Compago