(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)
 )

    Source: geocities.com/wpsmoke/acadalisptrng/scott_hull

               ( geocities.com/wpsmoke/acadalisptrng)                   ( geocities.com/wpsmoke)