Newsgroup: it.comp.software.cad
Titolo: help estrusione spline elicoidale in ACAD2000

Ho un grosso problema con AUTOCAD 2000
Vorrei riuscire a eseguire un'operazione:
Partendo da una scala elicoidale in 3d, e volendo creare lo corrimano, come
posso fare?
Aiutatemi ci sto perdendo le notti.
Grazie in anticipo.
maver...@libero.it





IO OFFSETTEREI LA PARTE DEGLI SCALINI FINO 
ALL'ALTEZZA VOLUTA,POI CON QUESTO PROFILO CI FAREI QUELLO CHE MI 
PARE



A mio parere...non è il caso di perdere tempo con AutoCAD sul 3D.
Scaricati Rhino
--
Posted from 
obi.netsys.it
 [194.244.100.2] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

Aiutatemi ci sto perdendo le notti.
Allora, AutoCAD da solo non può farlo. O qualche buon'anima ti dà un
Lisp oppure passi a un programa decente per fare 3D. Nel caso in cui
opti per la seconda soluzione il programma che ti suggerisco si chiama
Rhino e lo trovi su 
www.rhino3d.com
.
Ciao ciao.
--
Gabriele Pranzo-Zaccaria   architetto
gabri...@tiscalinet.it
  ICQ 77540493
http://members.tripod.it/LightWorks/gabripranzo/gpranzo.htm

Ribadisco quanto espresso da Gabriele e Diego: lascia perdere Autocad!!!
Ci ho perso settimane per un problema simile!!! Rhino è eccezionale e
abbastanza immediato!
Buon lavoro,
Giacomo



maver...@libero.it
Io sinceramente ho un Lisp, ed uso quello!
Ora te lo allego di sotto:
-- cut ---
;SPST.LSP
;Copyright 1995 Xue-dong Zhao
;Modificata ed adattata alle esigenze italiane da Aniello Annunziata
per CADLandia
;
;Disegna una scala a chiocciola
;
;--------------------------------------------------------------------
;Funzione principale
;--------------------------------------------------------------------
(defun c:scalachioc ( / zcmd zblp zosm cn ag0 r1 r2 ag ht rase
                  dag dht ag1 tyn ty rw rn rt p1 p2 p3 p4
                  pa pb b1 b2 b31 b41 b5 b6 b32 b42 
                  plist lista listb nr
              )
   (setq zcmd (getvar "cmdecho")
         zblp (getvar "blipmode")
         zosm (getvar "osmode")
   )
   (setvar "cmdecho" 0)
   (initget 1)
   (setq cn  (getpoint "\nCentro della scala:")) 
   (initget 1)
   (setq ag0 (getangle cn "\nAngolo di rotazione del primo gradino:"))
   (initget 7)
   (setq r1  (getdist cn "\nRaggio interno:"))
   (initget 7)
   (setq r2  (getdist cn "\nRaggio esterno:"))
   (initget 3)
   (setq ag  (getreal "\nAngolo totale tra il primo e l'ultimo
gradino:"))
   (initget 3)
   (setq ht  (getreal "\nAltezza della scala [+ alto][- basso]:"))
   (initget 7)
   (setq nr  (getint "\nNumero di gradini:")
         ag (* pi (/ ag 180.0))
         rase (/ ht nr)
         dag  (/ ag nr)
         dht  (/ ht (1+ nr))
         ag1  (- ag0 dag)
         tyn 8
   )
   (setvar "osmode" 0)
   (setvar "blipmode" 0)
   (initget 1 "A B")
   (setq ty (getkword "\nTipo della scala (A con corrimano, B con
ringhiera chiusa) <A><B>:"))
   (initget 5)
   (setq rw (getreal "\nLarghezza del corrimano:"))
   (initget 5)
   (setq rh (getreal "\nQuota del corrimano:"))
   (initget 1)
   (if (= ty "A")
       (setq rt (* -1 (getreal "\nSpessore (altezza) del corrimano:"))
tyn 4)
   )
   (repeat (+ nr 1)
     (setq ag1 (+ ag1 dag)
           p1 (polar cn ag1 r1)
           p2 (polar cn ag1 r2)
           p3 (sp p1 dht)
           p4 (sp p2 dht)
     )
     (if (minusp ht)
         (setq pa (sp p1 (* 2 dht))         
               pb (sp p2 (* 2 dht))
         )
         (setq pa (sp p1 (* -1 dht))
               pb (sp p2 (* -1 dht))
         )
     )
     (if (and (equal ag1 ag0 0.001)(null (minusp ht)))
         (setq pa p1 pb p2)
     )
     (if (and (equal ag1 (+ ag0 ag) 0.001)(minusp ht))
         (setq pa (sp p1 dht) 
               pb (sp p2 dht)
     ))
     (setq b1 (sp p1 rh)
           b2 (polar b1 ag1 rw)
           b31 (polar p1 ag1 rw)
           b41 (polar cn ag1 (- r2 rw))
           b5 (sp b41 rh)
           b6 (polar b5 ag1 rw)
           b32 (sp b31 dht)
           b42 (sp b41 dht)
     )
     (if (= ty "A")
         (setq plist (append plist (list pa p1 p2 pb pa p3 p4 pb))
               lista (append lista (list b1 b2 (sp b2 rt)(sp b1 rt)))
               listb (append listb (list b5 b6 (sp b6 rt)(sp b5 rt)))
         )
     )
     (if (= ty "B")
         (setq plist (append plist (list pa b1 b2 b31 b41 b5 b6 pb
                                         pa b1 b2 b32 b42 b5 b6 pb))
         )
     )
     (setq cn (list (car cn)(cadr cn)(+ (caddr cn) dht)))
   )
   (setq nr (length plist))
   (command "_3dmesh" (/ nr tyn) tyn)
   (repeat nr
      (command (car plist))
      (setq plist (cdr plist))
   )
   (spstnc)
   (if lista
       (progn (setq nr (length lista))
              (command "_3dmesh" (/ nr 4) "4")
              (repeat nr (command (car lista))
                         (setq lista (cdr lista))
              )
              (spstnc)
              (command "_3dmesh" (/ nr 4) "4")
              (repeat nr (command (car listb))
                         (setq listb (cdr listb))
              )
              (spstnc)
       )
   )
   (setvar "osmode" zosm)
   (setvar "blipmode" zblp)
   (setvar "cmdecho" zcmd)
   (princ)
)
;
;--------------------------------------------------------------------
;Ottieni i punti incrementato dell'altezza del gradino in direzione Z
;--------------------------------------------------------------------
(defun sp ( pt h)
   (list (car pt)(cadr pt)(+ (caddr pt) h))
)
;
;--------------------------------------------------------------------
;Chiudi la 3D Mesh quando è l'ultima entità in direzione N
;--------------------------------------------------------------------
(defun spstnc ( / en ed )
   (setq en (entlast)
         ed (entget en)
         ed (subst (cons 70 48)(assoc 70 ed) ed)
   )
   (entmod ed)
)
;
;--------------------------------------------------------------------
;Messaggio stampao su caricamento
;--------------------------------------------------------------------
;
(princ "\nSPST.LSP caricato. Digita SCALACHIOC per disegnare una scala
a chiocciola.")
(princ)
 --- fine cut --
 --
Aniello Annunziata
Webmaster di CADLandia
aniello.a...@cadlandia.com
www.cadlandia.com