In data astrale Sun, 23 Nov 2003 16:48:19 GMT, ProgHettoLab ha
Post by ProgHettoLabNon ho ancora dimestichezza col lisp, quindi ti chiedo gentilmente
d'inviarmi la routine che hai modificato.
;
----------------------------------------------------------------------
; (Converte 3D Face in 3D Solidi)
; Copyright (C) 2002 CADLandia, Tutti i diritti riservati
; Website: www.cadlandia.com
;
----------------------------------------------------------------------
; DISCLAIMER: CADLandia non si assume nessuna responsabilità sui
danni
; possibili dall'utilizzo proprio od improprio di questa routine.
; CADLandia non da nessuna garanzia, ne implicita ne esplicita, dello
; utilizzo di questa routine in scopi particolari. Tutto il materiale
; è da considerare "così com'è", e l'uso di questo software è da
; considerare a PROPRIO PERSONALE RISCHIO.
;
----------------------------------------------------------------------
(defun c:3dfto3ds ()
(setq cmdecho (getvar "CMDECHO"))
(setq oldosnap (getvar "OSMODE"))
; salva le impostazioni vecchie
(setvar "CMDECHO" 0)
(setvar "OSMODE" 0)
; disabilita l'eco dei comandi e l'OSNAP
(command "_UNDO" "_G")
; imposta un punto di undo, per fare l'undo di tutto il macrocomando
(setq sset (ssget '((0 . "3DFACE"))))
; inizializzo una variabile che conterrà un selectionset con tutto
il solido
; e che mis ervirà alla fine
(setq ssrow (ssadd))
; ottiene le 3dmesh da processare
(setq bottom (getint "Quota della base del prisma: "))
; ottiene la quota base del prisma
(if sset
; se il set di selezione non è vuoto
(progn
; fai quanto segue
(setq itm 0 num (sslength sset))
; impopsta itm a 0 e num al numero di elementi del set di
selezione
(while (< itm num)
; fino a quando il contatore è minore di num
(setq hnd (ssname sset itm))
; leggi l'entità
(setq ent (entget hnd))
; leggi i dati dell'entità
(setq pt1 (cdr (assoc 10 ent)))
; trova il primo punto della mesh
(setq pt2 (cdr (assoc 11 ent)))
;trova il secondo punto della mesh
(setq pt3 (cdr (assoc 12 ent)))
;trova il terzo punto della mesh
(setq pt1b (list (car pt1) (cadr pt1) bottom))
(setq pt2b (list (car pt2) (cadr pt2) bottom))
(setq pt3b (list (car pt3) (cadr pt3) bottom))
; trova i punti sulla base del prisma
(entdel hnd)
; cancella la 3dface
(command "_.area" pt1b pt2b pt3b "")
; controlla se almeno due punti sono coincidenti
; nel qual caso non fa l'estrusione
(if (not (equal (getvar "area") 0.0 0.00000001))
(progn
(command "_.pline" pt1b pt2b pt3b "_c")
; disegna una polilinea (top)
(setq highest (max (caddr pt1) (caddr pt2) (caddr pt3)))
; trova il vertice più alto della polilinea top
(setq extr (+ (- highest bottom) 1))
; trova l'altezza d'estrusione
(command "_.extrude" (entlast) "" extr 0.0)
; opera l'estrusione
(command "_.slice" (entlast) "" "_3points" pt1 pt2 pt3
pt1b)
; taglia l'elementino per ottenere il cap giusto
(setq e1 (entlast))
; seleziona l'ultima entità ottenuta
(ssadd e1 ssrow)
; la aggiunge ad un set di selezione
);progn
);if
; crea il prisma tra la faccia ed il piano xy desiderato
(setq itm (1+ itm))
; incrementa il contatore
); fine while
(command "_UNION" ssrow "")
; unisce i solidi
(princ "Fatto.")
); fine if
)
(setq sset nil)
; cancella il set di selezione
(command "_UNDO" "_E")
; segna il marcatore di fine undo
(setvar "CMDECHO" cmdecho)
(setvar "OSMODE" oldosnap)
; ripristina l'eco dei comandi e l'osnap
(princ)
)
(princ "Caricato 3DFTO3DS.LSP. Digitare 3DFTO3DS per eseguire il
comando.")
(princ)
Saluti, Aniello
--
Aniello Annunziata
Content Director Manager
www.cadlandia.com
***@cadlandia.com
Per rispondermi in privato, togli NOGARBAGE dall'indirizzo