Newsgroup: it.comp.software.cad
Titolo: AutoCAD14 e le molle.

Devo disegnare una molla cilindrica a filo tondo con Autocad r14 e non ci
riesco. Qualcuno può aiutarmi per favore. Esiste, per caso, un sito dove
magari è possibile scaricare una routine Lisp che faccia al caso mio?
Grazie 1000,
Massimo

Dimenticavo la cosa più importante, devo disegnarla in 3d.
 Grazie 1000,
 Massimo



usa spiral.lisp.
lo trovi in rete
"Star Walker" <nunceprovà@nospam.itt> ha scritto nel messaggio
news:8qa4ns$6q5$1...@fe1.cs.interbusiness.it...



Crei un cerchio del diametro della molla
dividi il cerchio in due semicerchi (puoi fare la stessa operazione con due
archi)
dividi lo schermo in tre finestre -   commando FINESTRE
imposti le finestre una su piana, una su frontale e una prospettica
ti posizioni in quella frontale impostando l'UCS su fronte
selezioni il grip di divisione (estremità dei due semicerchi)
ruoti di 1/2 passo il primo semicerchio
selezione il secondo semicerchio e lo ruoti di 1/2 passo in senso contrario
in modo che apparentemente nella finestra "FRONTE" si veda una "V"
sempre rimanendo nella stessa finestra, crei due cerchi del diametro dello
spessore della molla
con il commando ESTRUDI - TRAIETTORIA selezioni il cerchio e, come
traiettoria,
il primo semicerchio così crei la prima metà "solida" della molla
fai la stessa cosa con l'altro semicerchio.
fai copie multiple tante quante sono le spirali della molla "VVVVVVV" e le
unisci con
EDITA -MOD. SOLIDI-UNISCI.
A questo punto la molla è fatta.
Probabilmente non sono stato molto chiaro, ad ogni modo puoi chiedermi
ulteriori chiarimenti via mail.
ciao.
g.p.





Egregio Gelyparis devo farti un monumento. Non solo mi hai risolto il
problema ma in questo modo mi pare di intravvedere la possibiltà di creare
una routine Lisp.
Grazie 1000 ancora,
Massimo

Scusate, ma cos'è una routine LISP?
Grazie e, se possibile, rispondetemi via mail
Star Walker <nunceprovà@nospam.itt> wrote in message
8qamro$gej$1...@fe1.cs.interbusiness.it...


 lo trovi in rete
Non è che per caso potresti indicarmi un sito dove trovarlo?
Grazie 1000
Massimo

 Grazie e, se possibile, rispondetemi via mail
Una routine LISP è un insieme di istruzioni in linguaggio Lisp (linguaggio
di programmazione di AutoCAD) e di comandi Autocad. Queste
istruzioni/comandi, memorizzate in un file che ha estensione *.LSP
consentono di far eseguire ad AutoCAD delle operazioni personalizzate.

 Non è che per caso potresti indicarmi un sito dove trovarlo?
di spiral.lisp credo ne esista piu' d'uno, lo "spiral.lsp" che segue sotto
ad esempio non fa al caso tuo credo.
Mentre invece potrebbe servirti "helix.lsp", sviluppato da non so chi, ma
non da me.
Se mi dici come si dice in inglese molla o altre parole che potrebbero avere
attinenza cerco tra i files.lsp che ho.
Eccoti un po' di siti da vedere dove trovare files.lsp, l'ordine e' casuale
e corrisponde all'inserimento nei miei preferiti cartella lisp (se vuoi ti
mando i files.url), non garantisco la validita' attuale di tutti gli url e
l'assenza di indirizzi che non siano strettamente attinenti; inoltre alcuni
riguardano il LISP e non l'AutoLISP che ne e' in effetti solo un dialetto:
Buona navigazione ne avrai per un po' immagino hehehe!
Non chiedermi in quali  e' reperibile uno "spiral.lsp", perche' chiaramente
non lo so.
http://yola.tu-graz.ac.at/autocad/news/faq/page5101.htm
http://www.eleo.it/acad2000-1.htm
http://www.aere.it/defaultIE.htm
http://afralisp.hypermart.net/tutor.htm
http://www.cli.di.unipi.it/help/
http://sites.uol.com.br/mmal/resumo.htm
http://space.tin.it/edicola/lwcon/
http://ucad1.uccb.ns.ca/acad/cad.htm
http://xarch.tu-graz.ac.at/autocad/docs/
http://xarch.tu-graz.ac.at/autocad/stdlib/
http://www.cadalog.com/
http://pw1.netcom.com/~rogh/autolisp.htm
http://ucad1.uccb.ns.ca/acad/util.htm
http://cad3d.it/
http://cad3d.it/bbs/index.sht
http://www.insa.com/files.shtml
http://www.freeweb.org/software/CadLandia/
 ora 
www.cadlandia.com
http://www.cadshack.com/lisp00e0.htm
http://www.cli.di.unipi.it/help/GNU-Manuals/emacs-19.29/cl-man/cl_toc.html#S
EC2
http://yola.tu-graz.ac.at/autocad/news/faq/autolisp.html
http://www.axios.it/1999/home99.htm
http://ucad1.uccb.ns.ca/acad/lisp.htm
http://www.cadinfo.net/reviews/LT-Toolkit.htm
http://web.tiscalinet.it/stefanopuddu/stefanopuddu/index.htm
http://www.cs.cmu.edu/afs/cs/project/ai-repository/ai/lang/lisp/code/math/cl
math/0.html
http://www.eleo.it/acad2000-3.htm
http://www.ransen.com/cadcourse.htm
http://www.aere.it/autodesk/sftw.htm
http://village.flashnet.it/users/fn205588/software.html
http://www.turvill.com/t2/free_stuff/
http://www.cadshack.com/lispfile.htm
http://www.caddepot.com/downloads.htm
http://www.dejanews.com/~cormanlisp/
http://www.4d-technologies.com/
http://www.4d-technologies.com/techcenter/
Eccoti le procedure che ti dicevo.
---cut---cut---cut---cut---cut---cut---cut---cut---cut---cut---cut---cut---
;       Display spiral
;       Designed and implemented by Kelvin R. Throop on 1985 January 85
;  (cspiral <# rotations> <base point> <growth per rotation> <points per
circle>)
(defun cspiral (ntimes bpoint cfac lppass / ang dist tp ainc dinc circle bs
cs)
        (setq cs (getvar "cmdecho")) (setvar "cmdecho" 0)
        (setq bs (getvar "blipmode"))  (setvar "blipmode" 0)
        (setq circle (* 3.141596235 2))
        (setq ainc (/ circle lppass))
        (setq dinc (/ cfac lppass))
        (setq ang 0.0)
        (setq dist 0.0)
        (command "pline" bpoint)
        (repeat ntimes
           (repeat lppass
              (setq tp (polar bpoint (setq ang (+ ang ainc))
                          (setq dist (+ dist dinc))))
              (command tp)))
        (command)
        (setvar "blipmode" bs)
        (setvar "cmdecho" cs)
        nil)
;----   Interactive spiral generation  ----
(defun C:SPIRAL ( / nt bp cf lp)
        (prompt "\nCentre point: ")              (setq bp (getpoint))
        (prompt "\nNumber of rotations: ")  (setq nt (getint))
        (prompt "\nGrowth per rotation: ")   (setq cf (getdist bp))
        (prompt "\nPoints per rotation: ")    (setq lp (getint))
        (cond ((null lp) (setq lp 30)))
        (cspiral nt bp cf lp))
---cut---cut---cut---cut---cut---cut---cut---cut---cut---cut---cut---cut---c
ut---cut---
---cut---cut---cut---cut---cut---cut---cut---cut---cut---cut---cut---cut---c
ut---cut---
(defun c:helix (/ revs divs cen rad rinc sta ht hinc revcnt r x y a z)
;
; fuction to creat a 3d spiral
; in the form of a 3dpoly (a zero-width wire spring)
;
(graphscr)
(setq revs(getreal"\nnumber of revolutions? ")
divs(getint"\nnumber of divisions per revolution? ")
cen(getpoint"\ncenter of bottom loop? ")
rad(getdist"\nbeginning radius? ")
rinc(getdist"\nradius increment? ")
sta(getangle"\nstarting angle? ")
ht(getdist"\nbeginning height between loops? ")
hinc(getdist"\nheight increment? ")
sta (/(* sta pi)180.0) a sta z (caddr cen) r 0 revcnt 0)
(command "3dpoly")
(while(< r revs)
(setq x(+(car cen)(* rad(cos a)))
y(+(cadr cen)(* rad(sin a))))
(command (list x y z))
(setq a(+ a(/(* 2.0 pi)divs))
z(+ Z(/ ht divs))
r(+ r(/ 1.0 divs))
revcnt(1+ revcnt)
rad(+ rad(/ rinc divs)))
(if(equal revcnt divs)
(setq ht(+ ht hinc) revcnt 0))
)
(command "")
)
---cut---cut---cut---cut---cut---cut---cut---cut---cut---cut---cut---cut---c
ut---cut---

 consentono di far eseguire ad AutoCAD delle operazioni personalizzate.
Sarai mica uno di quei programmatori in Autolisp che quanto a procedure e
lispini
lurkano e basta. Facci vedere cosa sai fare.
Se non ne sai nulla ti ho passato un po' di indirizzi da vedere, io ho
cominciato cosi'.
In tal caso tieni conto che il linguaggio e' piu' specificatamente
l'Autolisp uno dei tanti dialetti del Lisp, potresti incappare in dei
files.lisp o anche .lsp che sono in LISP, lasciali perdere, e' arabo se stai
cominciando.
--
Ciao Giovanni Anzani

Giovanni, millegrazie. Effettivamente il lisp che mi hai allegato non fà al
caso mio, comunque provvederò a cercare negli indirizzi che hai allegato. In
Inglese molla si dice SPRING.
Ciao,
Massimo

Mi spiace ma questo sistema crea delle molle apparentemente corrette, ma
basta dare un'occhiata anche alla vista laterale per capire che l'oggetto
così creato non è una molla ma qualcos'altro,
ciao,
Angelo
Star Walker <nunceprovà@nospam.itt> wrote in message



No, non sono un programmatore di Autolisp, io mi occupo di progettazione
meccanica di apparecchi per il settore medicale, "lispo", da perfetto
dilettante, solo per agevolarmi un pò il lavoro e comunque "tutta roba
piccola".

 In inglese molla si dice SPRING.
ora e' piu' facile cercarti qualcosa.
ho trovato tra i miei lisp 3 file contenenti la parola SPRING:
HELIX.LSP  gia' mandato forse puo' esserti utile, fa un fil di ferro 3D, se
implementi l'estrusione di un cerchio lungo la path disegnata dalla
procedura hai la tua molla, credo.
INCLUDE.LSP  non c'entra nulla e' stato rilevato uno spring ma non ci serve
;;;1. Ralph Gimenez 11630 N.W. 23rd Ct. Coral Springs, Fla. 33065
(305)755-0968
SPRCSEC.LSP non credo ti possa servire e solo un 2D di sezione della molla
comunque te lo allego.
---cut---cut---cut---cut---cut---cut---cut---cut---cut---cut---cut---cut---
;         ============ sprcsec ============
;         Compression Spring - Section View
;
(defun C:SPRCSEC ()
  (setq
        WireDiam (getreal "\nEnter Wire Diameter: ")
        Coils (getint "\nEnter Number of Coils: ")
        OutsideDiam (getreal "\nEnter Outside Coil Diameter: ")
        NominalDiam (- OutsideDiam WireDiam)
        StartLocation (getpoint "\nStarting Point: ")
        LowerLeft (list (- (car StartLocation) WireDiam)
                        (- (cadr StartLocation) WireDiam))
        UpperRight (list (+ (car StartLocation) (* OutsideDiam 2))
                         (+ (cadr StartLocation) (* WireDiam 2))))
  (command "LAYER" "S" "0" "")
  (command "CIRCLE" StartLocation "D" WireDiam)
  (command "LAYER" "S" "1" "")
  (command "HATCH" "U" "45" (/ WireDiam 4) "N" "W" LowerLeft UpperRight "")
  (command "COPY" "W" LowerLeft UpperRight ""
              (list NominalDiam 0.0) "")
  (command "LAYER" "S" "0" "")
  (command "LINE" StartLocation
              (list (+ (car StartLocation) NominalDiam)
                    (cadr StartLocation)) "")
  (command "MOVE" "L" "" (list 0.0 (/ WireDiam 2)) "")
  (command "COPY" "L" "" (list 0.0 (- 0.0 WireDiam)) "")
  (command "ROTATE" "W" LowerLeft UpperRight "" StartLocation "15")
  (command "ARRAY" "P" "" "R" Coils "1" (* WireDiam 2))
  (princ))
---cut---cut---cut---cut---cut---cut---cut---cut---cut---cut---cut---cut---

 hai scritto:
[cut]
Io non c'entro con le molle.
:-)
Ciao
--------
Massimo Ghio

 Io non c'entro con le molle.
hehehe!
Co sti cavolo di Nick non mi ci trovo proprio e tendo
a chiamare tutti per nome, tra l'altro sto Massimo alias
Star Walker <nunceprovа@nospam.itt> potresti pure
essere te, ...il poliedico Geom. dai cento indirizzi. :-)
Ti saluto,sono pieno di cose da fare nel prossimo mese,
ma cerchero' di fare delle capatine ogni tanto.
--
ciao Giovanni

In data astrale Thu, 21 Sep 2000 17:40:03 +0200, "Star Walker"
<nunceprovа@nospam.itt> non avendo null'altro da fare, ha scritto:
Eccovi le molle:
;;;; SPRING.LSP 
;;;; written by Michelle Pillers, P.E. 
(408)996-7831
;;;; last updated 11/15/92
;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;; This routine draws a faceted round helical spring about 0,0,0
WCS.    ;;
;;;; The insertion point of the resulting block can be used to find
the    ;;
;;;; center point on one end of the spring.
;;
;;;;
;;
;;;; Free for use by anyone for any purpose.
;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
** For quick editing with Norton Editor
(defun c:eds ()
  (command ".shell" "ne spring.lsp")
  (load "spring")
)
;; Decimal to Radian conversion
(defun dtr (a)
  (* a (/ pi 180))
)
(defun rtd (a)
  (* a (/ 180 pi))
)
;; Tangent
(defun tan (a)
  (/ (sin a) (cos a))
)
(defun c:spring ()
;; save environment
  (command ".ucs" "s" "pre_helix")
  (setq oldexp (getvar "expert")
        oldsurft1 (getvar "surftab1")
	oldsurft2 (getvar "surftab2")
  )
  (setvar "expert" 4)
 
;; input
  (setq  OD nil
         wiredia nil
	 lngth nil
	 coils-per-in nil
	 cyl-per-rev nil
	 centerpt '(0.0 0.0 0.0)
	 surftab nil
  )
  (setq OD (getdist "\nEnter outside diameter of spring <1.0>:  ")
    wiredia (getdist "\nEnter wire diameter <0.1>:  ")
    lngth (getdist "\nEnter the length of spring <0.5>:  ")
    coils-per-in (getint "\nEnter the number of coils per inch <4>:
")
    cyl-per-rev (getint "\nEnter the number of facets per revolution
<16>:  ")
    surftab (getint "\nEnter number of facets around wire diameter
<16>:  ")
    name (getstring "\nEnter name for spring <spring>:  ")
  )
  (if (not wiredia) (setq wiredia 0.1))
  (if (not OD) (setq OD 1.0))
  (if (not lngth) (setq lngth 0.5))
  (if (not coils-per-in) (setq coils-per-in 4))
  (if (not cyl-per-rev) (setq cyl-per-rev 16))
  (if (not surftab) (setq surftab 16))
  (if (= name "") (setq name "spring"))
 
;; initial calculations
  (setvar "surftab1" surftab)
  (setq  rise (/ 1.0 coils-per-in)
         rise-per-cyl (/ rise cyl-per-rev)
	 wirerad (/ wiredia 2)
	 lgth (- lngth wiredia)
         ang-of-each-cyl (/ 360.0 cyl-per-rev) ; degrees
	 tilt-of-1st-cyl (/ ang-of-each-cyl 2) ; degrees
	 sprR (- (/ OD 2.0) (/ wiredia 2.0))
	 firstpt (list (+ (car centerpt) sprR) (cadr centerpt) (caddr
centerpt))
  )
;; create 2 circles, position, and rulesurf
  (command "_.ucs" "")
  (command "_.ucs" "o" firstpt)
  (command "_.ucs" "s" "helix_fpt")
  (command "_.ucs" "x" "90")
  (command "_.ucs" "s" "helix_y90")
  (command "circle" "0,0"  wirerad)
  (setq  ss2 (ssadd (entlast)))
  (command "_.ucs" "w")
  (command "_.ucs" "o" center)
  (setq e1 (entlast)
        pt2 (list 0.0 0.0 rise-per-cyl)
  )
  (command "_.copy" e1 "" "0,0,0" pt2)
  (setq ss1 (ssadd (setq e2 (entlast))))
  (command "_.rotate" e2 "" "0,0" ang-of-each-cyl)
;
  (setq pte1 (list (car firstpt) 0.0 wirerad))
  (setq pte2x (* sprR (cos (dtr ang-of-each-cyl)))
        pte2y (* sprR (sin (dtr ang-of-each-cyl)))
	pte2z (+ wirerad rise-per-cyl)
	pte2 (list pte2x pte2y pte2z)
  )
  (command "_.rulesurf" pte1 pte2)
  (setq ss1 (ssadd (setq e3 (entlast)) ss1))
  (setq ptl2 (list (car centerpt) (cadr centerpt) lngth))
  (command "_.line" centerpt ptl2 "")
  (setq e4 (entlast))
  (repeat (fix (- (* lgth coils-per-in cyl-per-rev) 1))
    (command "_.copy" e3 "" "0,0,0" "0,0,0")
    (command "_.move" ss1 "" "0,0,0" pt2)
    (command "_.rotate" ss1 "" "0,0" ang-of-each-cyl)
    (setq ss2 (ssadd (entlast) ss2))
  )
  (setvar "surftab1" (/ cyl-per-rev 2))
  (setvar "surftab2" surftab)
  (command "_.revsurf" (list e1 pte1) centerpt "" "-180")
  (setq ss2 (ssadd (entlast) ss2))
  (command "_.revsurf" (list e2 pte1) centerpt "" "180")
  (setq ss2 (ssadd (entlast) ss2))
  (command "_.chprop" ss2 ss1 "" "la" "0" "c" "byblock" "lt" "byblock"
"")
  (command "_.move" ss2 ss1 "" "0,0,0" (list 0 0 wirerad))
  (command "_.block" name centerpt ss2 ss1 "")
  (command "_.insert" name centerpt "" "" "")
;; reset enviroment
  (setvar "surftab1" oldsurft1)
  (setvar "surftab2" oldsurft2)
  (setvar "expert" oldexp)
  (command "_.ucs" "w")
  (command "_.erase" e4 "")
  (command "_.redraw")
  (princ)
) ; end
(princ "\nSPRING.LSP written by Michelle Pillers, P.E. 11/92")
(princ)
 --
Aniello Annunziata
Webmaster di CADLandia
aniello.a...@cadlandia.com
www.cadlandia.com