(defun C:SPIRAL (/ #ANGLE #ANGLE-DELTA #ANGLE-TAN
#COILS #DIAMETER #LIST #PITCH #POINT #POINT-0
#POINT-1 #RADIUS #RESOLUTION #SEGMENTS #TAN-0
#TAN-1 #Z #Z-DELTA #Z-END #Z-TAN)
(setq #DIAMETER (getreal "\nDiameter: "))
(setq #PITCH (getreal "\nPitch: "))
(setq #COILS (getint "\nNumber of coils: "))
(setq #POINT-0 (getpoint "\nCenterpoint: "))
(setq #RESOLUTION 16)
(setq #RADIUS (* #DIAMETER 0.5))
(setq #ANGLE-DELTA (/ (* 2 pi) #RESOLUTION))
(setq #ANGLE 0.0)
(setq #SEGMENTS (* #COILS #RESOLUTION))
(setq #Z-DELTA (/ #PITCH #RESOLUTION))
(setq #Z 0.0)
(repeat #SEGMENTS
(setq #POINT-1 (polar #POINT-0 #ANGLE #RADIUS))
(setq #POINT-1 (list (car #POINT-1)
(cadr #POINT-1)
(+ (caddr #POINT-1) #Z)))
(setq #LIST (cons #POINT-1 #LIST))
(setq #ANGLE (+ #ANGLE #ANGLE-DELTA))
(setq #Z (+ #Z #Z-DELTA))
)
(setq #LIST (reverse #LIST))
(setq #ANGLE-TAN (/ pi 500))
(setq #Z-TAN (* 0.001 #PITCH))
(setq #TAN-0 (polar #POINT-0 (- #ANGLE-TAN) #RADIUS))
(setq #TAN-0 (list (car #TAN-0)
(cadr #TAN-0)
(- (caddr #TAN-0) #Z-TAN)))
(setq #Z-END (caddr (last #LIST)))
(setq #TAN-1 (polar #POINT-0 #ANGLE-TAN #RADIUS))
(setq #TAN-1 (list (car #TAN-1)
(cadr #TAN-1)
(+ #Z-END #Z-TAN)))
(command "_.spline")
(foreach #POINT #LIST (command #POINT))
(command "" #TAN-0 #TAN-1)
)
               (
geocities.com/wpsmoke/acadalisptrng)                   (
geocities.com/wpsmoke)