Trasformare una polyline 3D in 2D
- Details
- Category: Lisp
- Published on Wednesday, 07 December 2011 17:49
- Hits: 1188
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

