Trasformare una polyline 3D in 2D

Questo script serve a trasformare una polilinea con punti in tre dimensioni in una in due dimensioni, appiattendola su piano Z=0.

;;; trasforma una o più polilinee 3D in 2D...
 (defun c:32 ()
  (setvar "cmdecho" 0)
  (setq lista-punti nil)
  (setq clay(getvar "clayer")) 
  (princ "\n Seleziona le polilinee 3D... ") 
  (setq gruppoide(ssget)) 
  (setq i 0) 
  (if gruppoide 
    (progn 
      (repeat 
        (sslength gruppoide) 
        (if 
          (= (cdr(assoc 0 (entget (ssname gruppoide i)))) "POLYLINE") 
          (vai6 (ssname gruppoide i)) 
        ) 
        (setq i(1+ i)) 
      )
    ) 
  ) 
  (princ) 
 ) 
 
 (defun vai6 (RF0) 
   (setq lista-punti nil) 
   (setq Ramo(entget RF0)) 
   (setq 0ent0(entnext RF0)) 
   (setq 0ent(entget 0ent0)) 
   (setq 0entT(cdr(assoc 0 0ent))) 
   (while (/= 0entT "SEQEND") 
     (setq X(car (cdr(assoc 10 0ent)))) 
     (setq Y(cadr (cdr(assoc 10 0ent)))) 
     (setq Z(caddr (cdr(assoc 10 0ent)))) 
     (setq lista-punti(cons (list X Y 0) lista-punti)) 
     (setq 0ent0(entnext 0ent0)) 
     (setq 0ent(entget 0ent0)) 
     (setq 0entT(cdr(assoc 0 0ent))) 
   ) 
   (setq ent(entget RF0)) 
   (setq piano(cdr(assoc 8 ent))) 
   (command "_erase" RF0 "" ) 
   (CreaPolilinea lista-punti) 
 ) 
 
 (defun CreaPolilinea (lista-vertici) 
   (entmake 
     (list (cons 0 "POLYLINE") (cons 8 piano) 
      ;;;(cons 70 0) 
      ;;; togliere questa riga se si vuole una poly2D 
     ) 
   ) 
   (setq k 0) 
   (repeat 
     (length lista-vertici) 
     (setq V(nth k lista-vertici)) 
     (setq VX(car V)) 
     (setq VY(cadr V)) 
     (setq VQ(caddr V)) 
     (entmake 
       (list 
         (cons 0 "VERTEX") 
         (cons 8 piano) 
         (cons 10 (list VX VY 0.00))
       ;;; inserire 0.00 per la Z se si vuole una poly2D 
       ;;;(cons 70 32) 
       ;;; togliere questa riga se si vuole una poly2D 
       ) 
     ) 
     (setq k(+ k 1)) 
   )
   (entmake (list (cons 0 "SEQEND") (cons 8 piano)))
 ) 
 ;---------------------------------------------------------------- 
 ;comandi eseguiti al caricamento che spiegano brevemente 
 ;come lanciare la funzione 
 (princ "\n Il programma per Trasformare una polyline 2D in 3D è stato caricato") 
 (princ "\n Digitare 32 per lanciare il programma") 
 (princ) 

Se ci fossero problemi è possibile anche usare questo script lisp

Compago