home *** CD-ROM | disk | FTP | other *** search
- (vmon)
-
- (defun staerr(s)
- (if (/= s "Function cancelled")
- (princ (strcat "\nError:" s))
- )
- (command "layer" "s" "0" "")
- (setvar "cmdecho" 1)
- (setq *error* oer)
- (princ)
- )
-
- (defun C:STAIR(/ x sp ang ang0 ang2 wi hg n sk rk ni p1 n0 n1 lw x1 x2 x3 x4 p0 sk2 sk10 p2 p3 p01 y1 y2 y3 r1 r2 r3 r4 r5 q1 q2 q3 q01 q0 r0 z1 z2 z3 z4 z5 pl oer)
- (setvar "cmdecho" 0)
- (setq oer *error* *error* staerr)
- (initget 1 "Left Right")
- (setq x (getkword "╤í╘±╫≤╙╥╖╜╧≥? (Left or Right) "))
- (if (/= "Left" x) (setq x "Right" ang 0 ang0 (- ang 1.57079) ang2 (+ ang 1.57079)) (setq ang pi ang0 (+ ang 1.57079) ang2 (- ang 1.57079)))
- (setq wi (getdist "\n├┐╠ñ▓╜┐φ╢╚:"))
- (setq hg (getdist "\n├┐╠ñ▓╜╕▀╢╚:"))
- (setq n (getint "\n┬Ñ╠▌╠ñ▓╜╩²─┐:"))
- (setq sk (getdist "\n┬Ñ╠▌╝Σ┐τ╢╚:") sk2 (/ sk 2) sk10 (/ sk 10))
- (setq rk (getdist "\n╨▌╧ó╞╜╠¿╜°╔ε:"))
- (setq ni (getint "\n┬Ñ▓π╩²─┐:"))
- (setq sp (getpoint "\n╞≡╩╝╡π:"))
- (command "layer" "m" "sstair" "")
- (setq p1 sp n0 0 lw (* 0.5 (getvar "userr1")))
- (repeat ni
- (setq x1 (polar p1 (+ ang pi) (* sk10 0.7)))
- (setq x2 (polar x1 ang0 (/ sk2 10)))
- (setq x3 (polar x1 ang0 sk10))
- (setq x4 (polar x3 ang (* sk10 0.7)))
- (setq p0 (polar p1 ang0 (/ sk2 10)))
- (setq pl nil pl (cons p1 pl))
- (repeat n
- (setq p2 (polar p1 ang2 hg) pl (cons p2 pl))
- (setq p3 (polar p2 ang wi) pl (cons p3 pl))
- (setq p1 p3)
- )
- (setq n1 1 pl (reverse pl))
- (command "pline" (nth 0 pl) "w" lw "")
- (repeat (1- (length pl))
- (command (nth n1 pl))
- (setq n1 (1+ n1))
- )
- (command)
- (setq p01 (polar p3 ang0 (/ sk2 10)))
- (setq y1 (polar p3 ang (* 0.7 sk10)))
- (setq y2 (polar y1 ang0 sk10))
- (setq y3 (polar y2 (+ ang pi) (* 0.7 sk10)))
- (setq r1 (polar p2 ang (+ wi (+ rk 240))))
- (setq r2 (polar r1 ang0 sk10))
- (setq r3 (polar r2 (+ ang pi) 240))
- (setq r4 (polar r3 ang2 (- sk10 (/ sk2 10))))
- (setq r5 (polar y1 ang0 (/ sk2 10)))
- (command "pline" x2 x3 x4 p0 p01 y3 y2 r5 r4 r3 r2 r1 p3 "")
- (setq q1 p3 pl nil pl (cons q1 pl))
- (repeat n
- (setq q2 (polar q1 ang2 hg) pl (cons q2 pl))
- (setq q3 (polar q2 (+ ang pi) wi) pl (cons q3 pl))
- (setq q1 q3)
- )
- (setq n1 1 pl (reverse pl))
- (command "pline" (nth 0 pl) "w" 0 "")
- (repeat (1- (length pl))
- (if (= n1 (1- (length pl))) (if (= n0 (1- ni)) (command (nth n1 pl))) (command (nth n1 pl)))
- (setq n1 (1+ n1))
- )
- (command)
- (setq q01 (polar q3 ang0 (/ sk2 10)))
- (setq r0 (polar p3 (+ ang pi) wi))
- (setq q0 (polar r0 ang0 (- (/ sk2 10) hg)))
- (command "pline" q0 q01 "")
- (setq p1 q3)
- (setq n0 (1+ n0))
- ) ;end repeat ni
- (setq z1 (polar q3 (+ ang pi) (* 0.7 sk10)))
- (setq z2 (polar z1 ang0 sk10))
- (setq z3 (polar z2 ang (* 0.7 sk10)))
- (setq z4 (polar z2 ang2 (/ sk2 10)))
- (setq z5 (polar z3 ang2 sk10))
- (command "pline" z4 "w" lw "" z2 z3 z5 "")
- (command "layer" "s" "0" "")
- (setvar "cmdecho" 1)
- (setq *error* oer)
- (princ)
- )