Newsgroup: it.comp.software.cad
Titolo: generare superficie da nuvola punti

salve,
ho sviluppato un programmino autolisp per ottenere in un file txt tutte le 
coordinate di curve di livello disegnate come 3dpoly
(che nel mio caso erano tutte nel layer 0801)
il problema è ottenere una superficie da questi punti.
ho utilizzato per provare surfer: tutto bene, mi crea la superficie però poi
esce con un dxf e quando torno in cad non ottengo una vera superficie ma 
una vista prospettica fatta di polylinee.
come posso operare per ottenere in cad la superficie data dai punti che ho 
estratto?
grazie
markobas

estratto?
io utilizzo Analist (
www.analistgroup.com
) per ottenere una superficie
da una nuvola di punti, poi con un lisp che ho fatto, converto le
superfici 3D Face in un solido sotteso e quindi posso ottenere le
curve di livello, le sezioni ed i profili.
Comunque mi sembra strano che surfer non restituisca 3dFace.
Saluti, Aniello
-- 
Aniello Annunziata
Content Director Manager
www.cadlandia.com
aniello.a...@cadlandia.com
Per rispondermi in privato, togli NOGARBAGE dall'indirizzo

 Saluti, Aniello
ciao e grazie anzitutto per la tua risposta.
al momento opero cosi :
estraggo le coordinate dei vertici di tutte le 3d poly in un file con un 
programmino lisp che ho creato (non sono un professionista, sia chiaro, 
però mi è sempre piaciuto programmare un pò)
in un nuovo disegno in cad uso un altro programmino lisp che ho creato che 
rilegge il file con le coordinate di tutti i vertici, e ridisegno la 
topografia con linee (ogniuna delle quali ha punti x,y,z).
a questo punto uso un terzo programma lisp creato da altri e libero,
che mi crea la superficie , anche piuttosto bene.
nel prossimo messaggio  invio tutti e tre i programmi lisp .
il problema successivo è creare il solido; mi farebbe piacere vedere il tuo 
programma  lisp per ottenere i solidi.
ciao e grazie ancora.
mark...@newnet.it
 

programma  lisp per ottenere i solidi.
;
----------------------------------------------------------------------
;                   (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)



ti ringrazio ancora.
allego le routine molto elementari che avevo preparato, compresa quella già 
postata tempo fa -non ricordo da chi ma comodissima- mapmesh !
 
markobas