Stairs Utility

Discussion in 'AutoCAD' started by Chip Harper, Sep 18, 2003.

  1. Chip Harper

    Chip Harper Guest

    Anyone have or know where I can download a lisp utility to draw a stairs
    profile (thread/riser) from floor to landing, don't need 3D or spiral.
    Normally we use the Achies section, but I've got one thats total garbage and
    I'd like to save some layout time.
     
    Chip Harper, Sep 18, 2003
    #1
  2. Chip Harper

    Rudy Tovar Guest

    Rudy Tovar, Sep 18, 2003
    #2
  3. Chip Harper

    Chip Harper Guest

    I found one through google that I had to modify a bit to get what I needed,
    I try this one in awhile to see which I like better. Thanks for the utility.
    :)

    --

    Chip Harper
    Member of the AutoDesk Discussion Forum Moderator Program



    "
     
    Chip Harper, Sep 18, 2003
    #3
  4. Chip Harper

    Chip Harper Guest

    I looked at the LISP section of DigitalCAD but I couldn't find your Stair
    section profiles. :-(
     
    Chip Harper, Sep 18, 2003
    #4
  5. Chip Harper

    Luis Guest

    Go to search and type: stairs Rudy Tovar


    I was able to find it...
     
    Luis, Sep 18, 2003
    #5
  6. Chip Harper

    Rudy Tovar Guest

    I've since revised it, but now forms part of MASi.
    (Modulated Architectural Symbols Innovated)

    It was there, and here it is.

    Enjoy!

    (defun c:stairs (/ ts la t-con o-con ct-con point_list
    pt1 pt2 pt3 up dn ri le r1 r2
    r3 r4 r5 r6 r7 r8 r9 r10 run
    ris rih rep ang ang2 cnt st1 st2 st3
    st4 len
    )


    (setq ts (getvar "osmode"))
    (setq la (getvar "clayer"))

    (setvar "osmode" ts)
    (setvar "clayer" la)

    (if (tblsearch "LAYER" "FINISH")
    (progn
    (setq ct-con (tblsearch "LAYER" "FINISH")
    t-con (cdr (assoc 70 ct-con))
    o-con (cdr (assoc 62 ct-con))
    )
    (if (= t-con 1)
    (command "layer" "t" "FINISH" "")
    )
    (if (< o-con 0)
    (command "layer" "on" "FINISH" "")
    )
    )
    (command "layer" "m" "finish" "c" "r" "finish" "")
    )
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    (if (tblsearch "LAYER" "FRAMING")
    (progn
    (setq ct-con (tblsearch "LAYER" "FRAMING")
    t-con (cdr (assoc 70 ct-con))
    o-con (cdr (assoc 62 ct-con))
    )
    (if (= t-con 1)
    (command "layer" "t" "FRAMING" "")
    )
    (if (< o-con 0)
    (command "layer" "on" "FRAMING" "")
    )
    )
    (command "layer" "m" "framing" "c" "y" "framing" "")
    )
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;




    (setvar "cmdecho" 0)
    (setq point_list nil)

    (setq pt1 (getpoint "\nPick Base Point..."))


    (if pt1
    (setq pt2 (getpoint pt1 "\nPick Direction of Projection..."))

    )

    (if (and pt1 pt2)
    (progn

    (setq pt3 (getpoint pt2 "\nPick Height of Stairs... "))


    (if (and pt1 pt2 pt3)
    (progn

    (setq up (angle pt2 pt3)
    dn (angle pt3 pt2)
    ri (angle pt1 pt2)
    le (angle pt2 pt1)
    )

    (if (and pt1 pt2 pt3)

    (progn
    (setvar "osmode" 0)
    (setvar "clayer" "framing")

    (setq run (distance pt1 pt2)
    ris (distance pt2 pt3)
    rih (/ ris 8)
    rih (fix rih)
    )

    (if (< (* rih 8) ris)
    (setq rih (+ rih 1))
    )

    (setq rep rih
    rih (/ ris rih)
    ang (angle pt1 pt2)
    cnt 1
    )

    (repeat rep
    (setq r1 (polar pt1 ri 1)
    r2 (polar r1 up (- rih 1))
    r3 (polar r2 le 1)
    r4 (polar r3 up 1)
    r5 (polar r4 ri 11)
    r6 (polar r5 ri 1)
    r7 (polar r6 dn 1)
    r8 (polar r2 ri 1)
    r9 (polar r1 ri 1)
    r10 (polar r9 dn 1)
    pt1 (polar r5 le 1)
    )

    (setq point_list
    (append point_list
    (list r1)
    (list r2)
    (list r3)
    (list r4)
    )
    )

    (setq cnt (+ cnt 1))
    (if (< cnt (- rep 1))
    (setq point_list (append point_list (list r5)))
    )

    (command "pline" r3 r4 r6 r7 "c")
    (command "pline" r1 r9 r8 r2 "c")


    )


    )
    )

    ) ; end of progn
    ) ; end of pt1 pt2 pt3

    ) ; end of progn
    ) ; end of if pt1 pt2



    (if point_list
    (progn
    (setvar "clayer" "finish")
    (command "pline" (mapcar 'command point_list))
    (setq st1 (nth 1 point_list))
    (setq len (length point_list))
    (setq st2 (nth (- len 3) point_list))
    (setq ang2 (angle r1 r10))
    (setq st1 (polar st1 (+ ang (dtr 0.0)) 1))
    (setq st2 (polar st2 (+ ang (dtr 0.0)) 1))
    (setq st3 (polar st2 (+ ang2 (dtr 0.0)) 13.25))
    (setq st4 (polar st1 (+ ang2 (dtr 0.0)) 13.25))
    (setq
    st4 (inters (nth 0 point_list)
    (polar (nth 0 point_list) (+ ang (dtr 0.0)) 100)
    st3
    st4
    nil
    )
    )
    (setq st3 (inters st4 st3 r8 r9 nil))
    (setvar "clayer" "framing")
    (command "line" (nth 0 point_list) st4 st3 r9 "")
    )
    )

    (setvar "osmode" ts)
    (setvar "clayer" la)


    (princ)

    )

    (defun dtr (a)
    (* pi (/ a 180.0))
    )
    (defun rtd (a)
    (/ (* a 180.0) pi)
    )


    www.Cadentity.com
     
    Rudy Tovar, Sep 18, 2003
    #6
Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments (here). After that, you can post your question and our members will help you out.