Hey all
I was wondering where I could find an already done up CAD block of an
interior stairway. I need to be able to modify it to meet the local
specs. I just didn't want to have to spend a bunch of time making one
if there was already one done for me!
I thought I seen on this group sometime ago that someone was putting
together a site that had blocks to "Share" If not, it's not a bad
idea. Anyway, Thanks in Advance!!
CB ~
First, there's lots of sites with CAD blocks. Do a Google search for a
bunch of sites. Also, there are free CDs you can get full of blocks (Thomas
Registrar puts out some, free for the asking).
That being said, I think you'd be better off just drawing the stairs
yourself. Any stair block you find most likely would require as much
modification time as it would take to just draw it. Your floor to floor
height will be different than the block, minimum tread size varies (i.e. 9"
or 10" residential, 11" commercial), maximum riser height varies (7"
commercial, 7-3/4" or 8" residential), different railing types and
construction, stair shape (i.e. straight, L, U, circular etc), stair
construction (i.e. all wood, steal stringer with wood treads, steel pan,
etc.).
HTH,
Michael
Wood, stone, concrete, or steel? Open or closed stringers? Open or closed
risers?
Spiral, curved, L, scissor, switchback, or straight? Magic or regular?
You sound like a very efficient person.
I agree, but I don't have the time to do it if someone else will do it for
me.
Where can we find *your* blocks? Post the URL.
: Hey all
:
: I was wondering where I could find an already done up CAD block of an
: interior stairway. I need to be able to modify it to meet the local
: specs. I just didn't want to have to spend a bunch of time making one
: if there was already one done for me!
:
: I thought I seen on this group sometime ago that someone was putting
: together a site that had blocks to "Share" If not, it's not a bad
: idea. Anyway, Thanks in Advance!!
:
: CB ~
Actually He sounds like just another lazy architect who is too lazy to draw.
--
================================
Macleod
(Born in the Highlands of Scotland 400 years ago)
There Can Be Only One.
================================
Good Morning All,
Lazy or not, I thought that was the whole idea of blocks, so you did not
have to keep drawing the same thing over and over again.
I have a few that I dont mind sharing.
Isnt there a proberb that goes along the line of " many hands make lite
work".
Dennis.
Why not take the same approach for everything? A building's a
building-right?
URL?
I've heard that one. How/whom are you helping? Here's another saying:
Why buy the cow when you can get the milk for free?
maybe this will help?
;;;
;;;
;;;
;;; ****Stairs.lsp Version 1.0
;;; ****(C) Copyright 1997 by Dan E. Thomas
;;;
;;; Stairs.lsp: This routine will calculate and draw stair sections
;;; based on information you supply from your keyboard and graphics screen.
;;; Stairs.lsp draws in the current UCS, current linetype, current color,
;;; and on the current layer.
;;; To figure stairs, first determine the total height, then divide
;;; that height by a desired riser height. Round that result up or down
;;; to the nearest integer to yield the actual number of risers. Divide
;;; total height by the number of risers to yield the size of each riser.
;;; There are four rules for stairs that Stairs.lsp will employ.
;;; They are:
;;; 1) Riser + tread = 17" to 17.5"
;;; 2) 2x riser + tread = 24" to 25"
;;; 3) Riser x tread = 70" to 75"
;;; 4) Stairs should be 30 degrees to 35 degrees
;;; After loading stairs.lsp, type "stairs" to activate.
;;; This routine will prompt you to pick a point on the lower level.
;;; Osmode is set to nearest for this pick so you can pick anywhere.
;;; Next you will pick the top step. Osmode is set to endp., int. for
;;; this pick. It will then prompt for stair direction and nosing
;;; style (square or round). You will then be able to choose to accept
;;; defaults or customize. If you choose to accept defaults, this
;;; routine will do division, round numbers and draw stairs that will
;;; meet the tests mentioned above. We can assume that all stairs are
;;; constrained vertically, going from one floor to another or from
;;; a porch to a sidewalk etc. In some cases stairs are also constrained
;;; horizontally. If you choose to customize, you will be asked if you
;;; need to consider horizontal constraints. If you answer yes, the
;;; routine will prompt you to pick a point for the bottom riser after
;;; the number of risers has been determined. If that is your choice,
;;; the routine will draw stairs that fit in that space, and display the
;;; angle of the stairs. However, there is no guarantee your stairs
;;; will meet the tests mentioned above. In any case, if you choose to
;;; customize, you can enter your own number of risers, tread thickness,
;;; and nosing overhang. The routine will divide the height determined
;;; from the two points by the desired riser height you enter, display
;;; that result and ask how many risers you want. It will display
;;; the actual riser height. You will then be asked for a tread size if
;;; you did not choose to consider horizontal constraints.
;;; A range of recommended tread sizes will be displayed. They will
;;; be the minimum and maximum treads that will yield a stair to meet
;;; the tests outlined above. A default will be displayed. The default
;;; tread size will be the average of the median values from the first
;;; three rules above, if it meets the fourth rule. If not, the default
;;; will be the tread size required to make a stair at 32.5 degrees. You
;;; can accept it or not. It will prompt for nosing size (tread
;;; thickness & nozing overhang). Defaults have been set for these.
;;; Square tread thickness is set at 1.5" (as if a "2 by" is going to be
;;; used as a tread) and the overhang is 1.25". Round nosing defaults
;;; are both set at 1.25 inches. You can accept them or not. If you
;;; don't want any nosing, choose square nosing, and enter zero for
;;; both tread thickness and nosing overhang. Stairs.lsp will display
;;; riser, tread, and angle information at the command line and prompt
;;; if you want to print that information on your drawing. If you
;;; print it on the drawing, the text will be the current text style
;;; and size if the current text style has a size assigned. If it
;;; doesn't, the text will have a size of 6. Stairs.lsp always draws
;;; stairs from the top down.
;;; Stairs.lsp has its own error handler that will display an error
;;; message and then exit, resetting all ACAD variables and setting
;;; stairs.lsp variables to nil. It will restore the original error
;;; handler. However, if you find it necessary to cancel this routine,
;;; just "Control C" one time so the error handler will have time to do
;;; what it has to do. This "Control C" business may only work in windows
if
;;; you have your keyboard preferences set to Autocad classics. Otherwise
;;; you may must "Esc" to cancel the routine.
;;; This routine was written by a true amateur. It is the intellectual
;;; property of DETOUR. Outrageous fees may be charged by him for use
;;; of this routine.
;;; NO WARRANTIES EXPRESSED OR IMPLIED!! NO RECOURSE!!
;;; Notes follow ( ;-> ).
;---------------------------------------------------------------------------
---;;;
;-> define internal error handler: if cancelled or on error,
;-> display error msg. and exit
(defun str_err (msg)
(if (/= msg nil)
(progn
(princ (strcat "\nError: " msg )) (princ)
(str_normex)
(str_varnil)
) ;progn
) ;if
) ;defun
;;;-------------------------------------------------------------------------
---;;;
;-> resets ACAD variables (normal exit)
(defun str_normex ()
(setvar "lunits" slun)
(setvar "luprec" slprec)
(setvar "osmode" sosm)
(setvar "plinewid" splw)
(setvar "cmdecho" scmd)
(setvar "textsize" stxtsz)
(setq *error* old_error)
(setq old_error nil)
) ;defun
;;;-------------------------------------------------------------------------
--;;;
;-> set all stairs.lsp variables to nil
(defun str_varnil ()
(foreach varlst '(ff th apx dvsr tavg mintrd midtrd maxtrd
nzh nzl slun slprec sosm splw nor lft rt dn
rht trdflt tsiz tdir nostp step nostp rnded
dflts pt1 pt2 pt3 pt4 pt5 strshp scmd ang
dist horiz botris stxtsz txtpt prntxt)
(set varlst nil)
) ;foreach
(princ)
) ;defun
;;;-------------------------------------------------------------------------
--;;;
;-> define math functions
(defun dtr (a)
(* pi (/ a 180.0))
)
(defun tan (a)
(/ (sin a) (cos a))
)
(defun rnd (n / fn sfn)
(setq fn (fix n))
(setq sfn (- n fn))
(if (>= sfn 0.5)
(setq n (+ fn 1))
(setq n fn)
) ;if
) ; defun
;;;-------------------------------------------------------------------------
--;;;
(defun str_setup ()
;-> set variables
(str_varnil) ;-> set stairs.lsp variables to nil
(setq old_error *error* ;-> trap old error handler
*error* str_err) ;-> set error handler
(setq slun (getvar "lunits"))
(setvar "lunits" 2 ;-> decimal
)
(setq slprec (getvar "luprec"))
(setvar "luprec" 4 ;-> four decimal places
)
(setq splw (getvar "plinewid"))
(setvar "plinewid" 0.0 ;-> set polyline width
)
(setq sosm (getvar "osmode")
)
(setq scmd (getvar "cmdecho"))
(setvar "cmdecho" 0 ;-> set cmdecho off
)
(setq stxtsz (getvar "textsize"))
(setvar "textsize" 6 ;-> set textsize to 6
)
) ;defun
;;;-------------------------------------------------------------------------
--;;;
;-> call other info functions
(defun str_info ()
(str_ht) ;1
(str_dir) ;2
(str_shp) ;3
(str_default) ;4
(str_ris_ht) ;5
(str_trd_siz) ;6
(str_trd_th) ;7
(str_nozlen) ;8
);defun
;;;---------------------------------------------------------------------
;->determine total height #1 from info
(defun str_ht ( / ff) ;-> first floor
(princ "\nDetermine Overall Height...")
(setvar "osmode" 512) ;-> set osnap to nearest
(initget 9)
(setq ff (getpoint "\nPick Any Point On The Lower Level: "))
(setvar "osmode" 33)
(initget 9)
(setq pt1 (getpoint "\nPick The Top Step: "))
(setq th (-(cadr pt1)(cadr ff)))
(setq txtpt (polar pt1 (/ pi 2.0) 36))
);defun
;;;-------------------------------------------------------------------------
;->determine stair direction #2 from info
(defun str_dir ()
(princ "\nDetermine Stair Direction...")
(initget 1 "Left Right")
(setq tdir (getkword "\nStairs Go Down To Right or Left? (R or L) "))
(if (= (substr tdir 1 1) "R")
(setq tdir nil)
(setq tdir 1)
) ;if
) ;defun
;;;---------------------------------------------------------------------
;->determine stair shape #3 from info
(defun str_shp ()
(princ "\nDetermine Nosing Shape...")
(initget 7 "Square Round")
(setq strshp (getkword "\nDo You Want Square Or Round Nose? (S or R) "))
(if (= (substr strshp 1 1) "S")
(setq strshp nil)
(setq strshp 1)
) ;if
) ;defun
;;;-------------------------------------------------------------------------
;;;
;->accept defaults or customize #4 from info
(defun str_default ()
(princ "\nSelect Design Method...")
(initget 6 "Customize Defaults")
(setq dflts (getkword "\nCustomize or Defaults (C or D) "))
(if (or
(= dflts nil)
(= (substr dflts 1 1) "D")
) ;or
(setq dflts 1)
(setq dflts nil)
) ;if
) ;defun
;;;-------------------------------------------------------------------------
;;;
;->determine riser height #5 from info
(defun str_ris_ht ( / dvsr ;->desired riser height (divisor)
apx
rnded) ;->rounded apx
(princ "\nDetermine Riser Height...")
(if dflts
(progn ;then
(setq nor (rnd (/ th 7)))
(setq rht (/ th nor))
) ;progn then
(progn ;else
(initget 6)
(setq dvsr (getreal (strcat
"\nDesired Riser Height Is: " " @ 30 "
trdflt) ;-> default tread size
;->if constrained horizontally, set tread size to fit
(princ "\nDetermine Tread And Nosing Size...")
(if (not dflts) ;customize
(progn ;then
(initget 6 "Yes No")
(setq horiz (getkword
"\nHorizontal Constraints? (Y or N): "))
(if (or
(= horiz nil)
(= (substr horiz 1 1) "N")
) ;or
(setq horiz nil)
(setq horiz 1)
) ;if
) ;progn then
) ;if not dflts
(if horiz
(progn ;then
(setvar "osmode" 33)
(initget 9)
(setq botris (getpoint "\nPick Point For Bottom Riser:"))
(setq tsiz (abs (/ (- (car pt1) (car botris)) (- nor 1))))
) ;progn then
;->first three rules of stairs average
(progn ;else
(setq tavg (/ (+ (- 17.25 rht) (- 24.5 rht) (/ 72.5 rht)) 3))
;->test for angle of stairs and set tread size default
(setq mintrd (/ rht (tan (dtr 35))))
(setq midtrd (/ rht (tan (dtr 32.5))))
(setq maxtrd (/ rht (tan (dtr 30))))
(if (and
(>= tavg mintrd)
(display range of tread sizes for 30-35 degree stair
(princ "\nFor Stair Between 30 and 35 Degrees...")
(princ (strcat
"\nTread Should Be: " (rtos mintrd 5 4) "\" to " (rtos maxtrd 5 4)
"\"")
) ;princ
(initget 6)
(setq tsiz (getreal (strcat
"\nEnter Tread Size In Inches: display angle of stairs
(princ (strcat
"\nAngle Of Stairs Is: " (angtos (atan rht tsiz) 0 2) " Degrees")
) ;princ
) ;defun
;;;-------------------------------------------------------------------------
--;;;
;->determine tread thickness #7 from info
(defun str_trd_th ()
(if (and
(= dflts 1)
(not strshp)
) ;and
(setq nzh 1.5)
) ;if
(if (and
(not dflts)
(not strshp)
) ;and
(progn ;then
(initget 4)
(setq nzh (getreal (strcat
"\nEnter Tread Thickness In Inches: ")))
(if (= nzh nil) (setq nzh 1.25))
) ;progn then
) ;if
) ;defun
;;;-------------------------------------------------------------------------
-
;->determine nosing overhang #8 from info
(defun str_nozlen ()
(if dflts
(setq nzl 1.25) ;then
(progn ;else
(if (and
(not dflts)
(not strshp)
) ;and
(initget 4)
) ;if
(if (and
(not dflts)
(= strshp 1)
) ;and
(initget 6)
) ;if
(setq nzl (getreal (strcat
"\nEnter Nosing Overhang In Inches: draw steps
(defun str_draw ( / pt2 ;->points for polylines
pt3 ;-> " " "
pt4 ;-> " " "
pt5 ;-> " " "
lft ;-> left for polar
rt ;-> right "
dn ;-> dn "
ang ;-> angle "
dist ;-> distance "
nostp ;-> counter for while loop
step) ;-> entity to copy
(if (not tdir)
(progn ;then
(setq rt 0.0)
(setq lft pi)
) ;progn
(progn ;else
(setq rt pi)
(setq lft 0.0)
) ;progn
) ;if
(setq dn (* pi 1.5))
(if strshp (setq nzl (- nzl (* nzh 0.5))) ;->subtract radius
) ;if ; from nosing
(setvar "osmode" 0) ;-> set osnap to none
(setq pt2 (polar pt1 rt nzl))
(setq pt3 (polar pt2 dn nzh))
(setq pt4 (polar pt3 lft nzl))
(if (not strshp)
(command "pline" pt1 pt2 pt3 pt4 "")
(command "pline" pt1 pt2 "a" pt3 "l" pt4 "")
) ;if
(setq pt1 (polar pt1 dn rht))
(setq pt2 (polar pt1 rt (+ tsiz nzl)))
(setq pt3 (polar pt2 dn nzh))
(setq pt4 (polar pt3 lft nzl))
(setq pt5 (polar pt4 dn (- rht nzh)))
(if (not strshp)
(command "pline" pt1 pt2 pt3 pt4 pt5 "")
(command "pline" pt1 pt2 "a" pt3 "l" pt4 pt5 "")
) ;if
(setq ang (angle pt1 pt5))
(setq dist (distance pt1 pt5))
(setq nostp (- nor 2)) ;-> set counter for while loop
(while (>= nostp 1)
(setq step (entlast))
(setq pt1 pt5)
(setq pt5 (polar pt1 ang dist))
(command "copy" step "" pt1 pt5)
(setq nostp (1- nostp))
) ;while
) ;defun
;;;-------------------------------------------------------------------------
--;;;
;->display properties of stairs at command line and prompt if you
;->want to print that information on the drawing.
(defun str_display ( / prntxt)
(initget "Yes No")
(setq prntxt (getkword
"\nPrint Stair Dimensions On Drawing? (Y or N) "))
(if (or
(= prntxt nil)
(= prntxt "Yes")
) ;or
(setq prntxt 1)
) ;if
(if (= prntxt 1)
(progn
(if (= (cdr (assoc 40 (tblsearch "style" ;if no fixed
(getvar "textstyle")))) 0.0) ;text height
(command "text" txtpt "" "" ;then
(strcat "Overall Height Is: " (rtos th 4 4)))
(command "text" txtpt "" ;else
(strcat "Overall Height Is: " (rtos th 4 4)))
) ;if
(command "text" ""
(strcat (itoa nor)" Risers @ "(rtos rht 5 5)"\""))
(command "text" ""
(strcat (itoa (- nor 1))" Treads @ "(rtos tsiz 5 4)"\""))
(command "text" ""
(strcat "Angle is: " (angtos (atan rht tsiz) 0 2)" Degrees"))
) ;progn
) ;if
(princ (strcat
"\nOverall Height Is: "(rtos th 4 4)))
(princ (strcat
"\n"(itoa nor) " Risers @ "(rtos rht 5 5)"\" " ))
(princ (strcat
(itoa (- nor 1)) " Treads @ "(rtos tsiz 5 4)"\" "))
(princ (strcat
"Angle is "(angtos (atan rht tsiz) 0 2) " Degrees"))
) ;defun
;;;-------------------------------------------------------------------------
--;;;
;-> defines ACAD command "stairs"
(defun c:stairs ( / slun ;-> trap lunits
slprec ;-> trap lunits precision
sosm ;-> trap osnap setting
splw ;-> trap plinewidth
scmd ;-> trap cmdecho
stxtsz ;-> trap textsize
nor ;-> number of risers
rht ;-> riser height
tsiz ;-> tread size
nostp ;-> number of steps
strshp ;-> stair shape (round or square nose)
th ;-> total height
pt1 ;-> top step
txtpt ;-> point for text on drawing
tdir ;-> stair direction
dflts ;-> defaults or customize flag
nzh ;-> nosing height (tread thickness)
nzl) ;-> nosing overhang length
(prompt "\nStairs.lsp by DETOUR (C) Copyright By Dan E. Thomas 1997")
(str_setup)
(str_info)
(str_draw)
(str_display)
(str_normex)
(princ)
) ;defun
;;;-------------------------------------------------------------------------
--;;;
;-> END OF STAIRS.LSP Thank You
;;;-------------------------------------------------------------------------
--;;;
PolyTech Forum website is not affiliated with any of the manufacturers or service providers discussed here.
All logos and trade names are the property of their respective owners.