Newsgroup: it.comp.software.cad
Titolo: 3DS --> Autocad

Salve a tutti,
Mi trovo di fronte al seguente problema:
Sto lavorando con Autocad 2000 realizzando un modello tridimensionale
utilizzando dei solidi, ma per ralizzare oggetti con caratteristiche
particolari ho utilizzato 3ds (per torsione, piegatura, etc.).
Imortando tali oggetti in Autocad noto che vengono letti come Superfici!!!
Questo mi crea delle difficoltà e mi chiedevo se c'è qualche soluzione.
Grazie1000.
LuCa

 ha scritto nel messaggio
news:UPea8.8090$tv6.2...@twister1.libero.it...

Nel sito 
www.emicad.it
 puoi scaricare liberamente un file lisp che si chiama
M2S.LSP che trasforma le superfici 3D in solidi. Forse è la soluzione
giusta.
Ciao
Marco

Grazie Marco,
ho provato con il lisp che mi hai sagnalato,
ma il problema persiste, visto che il lispino permette di trasformare in
solido una 3D-Mesh in solido, mentre ciň che io importo da 3d-Studio č una
3D-Face o al massimo una polimesh ed il giochino non funziona.
:-((  sembra che non ci sia soluzione!!
LuCa.

> :-((  sembra che non ci sia soluzione!!
invece c'è!!!
Aniello Annunziata ha pubblicato nella ezine di cadlandia (iscrivetevi!!!)
un lisp più evoluto di m2s.lsp (io l'ho già usato). Stasera ti mando il
file.
ciao
Stefano

 file.
A me non arriva piu' :( chissa' perche'....
bye bye

> A me non arriva piu' :( chissa' perche'....
...quando sei in difficoltà, devi lanciare il cadlandia-segnale:
ANIELLOOOOOOOOOOOOOOOOO!
;o)))
ciao
Stefano
PS:
se ti serve il lisp fammelo sapere, che lo mando anche a te!

> se ti serve il lisp fammelo sapere, che lo mando anche a te!
Si, grazie mi potrebbe servire :-)
bye bye
P.S.:Il fatto e' che non mi ricordo con quale email mi ero iscritto...ora mi
re-iscrivo ;-)

ANIELLOOOOOOOOOOOOOOOOO!
Presente!
Ecco la routine.
;
----------------------------------------------------------------------
;                   (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 3DFTO3DP per eseguire il
comando.")
(princ)
Saluti, Aniello
-- 
Aniello Annunziata
Content Director Manager
www.cadlandia.com
aniello.a...@cadlandia.com
Per rispondermi in privato, togli NOGARBAGE dall'indirizzo