home *** CD-ROM | disk | FTP | other *** search
- (defun spinfo ()
- (setq cp (getpoint "\nCenter of Spiral Staircase:"))
- (setq sp (getpoint "\nLower Left Corner of Staircase:"))
- (setq riser (getreal "\nRiser:"))
- (setq step (getreal "\nStep:"))
- (setq wide (getreal "\nWidth:"))
- (setq case (getint "\nNo. of Steps:"))
- (setq hrl (getreal "\nHelght of Handrail:"))
- )
- (defun spcalc ()
- (setq blkfil (open "blocks.mem" "r"))
- (if (not (equal blkfil nil))
- (setq blk (read-line blkfil))
- )
- (if (equal blk nil)
- (setq blk "$$1")
- (setq blk
- (strcat "$$"
- (itoa
- (1+
- (atoi (substr blk 3))
- )
- )
- )
- )
- )
- (setq pt4 (polar sp 0 wide))
- (setq uppt1 (list (car sp) (cadr sp) riser))
- (setq uppt4 (list (car pt4) (cadr pt4) riser))
- (setq count 0)
- (setq el riser)
- (command "line" sp pt4 "")
- (command "arc" (polar sp
- (angle sp pt4)
- (/ (distance sp pt4) 2.0)
- )
- "c" cp "L" step
- )
- (command "line" "" 0 "")
- (setq rp (getvar "LASTPOINT"))
- (COMMAND "ERASE" rp "")
- (command "erase" rp
- (polar sp
- (angle sp pt4)
- (/ (distance sp pt4) 3.0)
- )
- "")
- (setq diag (angle cp rp))
- (setq incr diag)
- (setq uppt3
- (list (car (polar cp diag (distance cp pt4)))
- (cadr (polar cp diag (distance cp pt4)))
- riser
- )
- )
- (setq uppt2
- (list (car (polar cp diag (distance cp sp)))
- (cadr (polar cp diag (distance cp sp)))
- riser
- )
- )
- (setq hrlpt3
- (list (car (polar uppt4
- (angle uppt4 uppt1)
- (/ (distance uppt4 uppt1) 10)
- )
- )
- (cadr (polar uppt4
- (angle uppt4 uppt1)
- (/ (distance uppt4 uppt1) 10)
- )
- )
- (+ riser hrl)
- )
- )
- (setq hrlpt4
- (list (car (polar uppt3
- (angle uppt3 uppt2)
- (/ (distance uppt3 uppt2) 10)
- )
- )
- (cadr (polar uppt3
- (angle uppt3 uppt2)
- (/ (distance uppt3 uppt2) 10)
- )
- )
- (+ riser riser hrl)
- )
- )
- (setq hrlpt1
- (list (car (polar hrlpt3
- (angle hrlpt3 hrlpt4)
- (/ (distance hrlpt3 hrlpt4) 2)
- )
- )
- (cadr (polar hrlpt3
- (angle hrlpt3 hrlpt4)
- (/ (distance hrlpt3 hrlpt4) 2)
- )
- )
- (+ riser (/ riser 2) hrl)
- )
- )
- (setq hrlpt2
- (list (car (polar hrlpt3
- (angle hrlpt3 hrlpt4)
- (/ (distance hrlpt3 hrlpt4) 2)
- )
- )
- (cadr (polar hrlpt3
- (angle hrlpt3 hrlpt4)
- (/ (distance hrlpt3 hrlpt4) 2)
- )
- )
- riser
- )
- )
- (command "3dface" uppt1 uppt2 uppt3 uppt4 "")
- (command "3dface" sp uppt1 uppt4 pt4 "")
- (command "3dline" hrlpt1 hrlpt2 "")
- (command "3dline" hrlpt3 hrlpt4 "")
- (command "block" blk sp "c" (polar sp (dtr 215) 0.1)
- (polar pt4 (dtr 90) (distance uppt4 uppt3))
- ""
- )
- (command "oops")
- (setq count (1+ count))
- (setq diag2 (angle uppt1 uppt2))
- (setq isd (distance uppt1 uppt2))
- (setq sp (list
- (car (polar sp diag2 isd))
- (cadr (polar sp diag2 isd))
- riser
- )
- )
- (setq insang (* (/ diag pi) 180))
- (setq riser (+ riser el))
- )
- (defun sbuild ()
- (command "insert" blk sp "" "" insang)
- (setq diag2 (+ diag2 incr))
- (setq sp
- (list (car (polar sp diag2 isd))
- (cadr (polar sp diag2 isd))
- riser
- )
- )
- (setq diag (+ diag incr))
- (setq insang (* (/ diag pi) 180))
- (setq count (1+ count))
- (setq riser (+ riser el))
- )
- (defun pole ()
- (command "circle" cp
- (polar cp 0 (/ (distance cp sp) 10))
- )
- (command "change" "l" "" "p" "e" 0 "th" (+ riser 65) "")
- )
- (defun C:SLT4 ()
- (setq oldblp (getvar "BLIPMODE"))
- (setq oldech (getvar "CMDECHO"))
- (setq oldelv (getvar "ELEVATION"))
- (setvar "BLIPMODE" 0)
- (setvar "CMDECHO" 0)
- (setvar "ELEVATION" 0)
- (spinfo)
- (spcalc)
- (while (< count case) (sbuild))
- (pole)
- (setvar "BLIPMODE" oldblp)
- (setvar "CMDECHO" oldech)
- (setvar "ELEVATION" oldelv)
- (if (not (equal blkfil nil)) (close blkfil))
- (setq blkfil (open "blocks.mem" "w"))
- (write-line blk blkfil)
- (close blkfil)
- )
- (defun dtr (a)
- (* pi (/ a 180.0))
- )
-
-