Wanted: CAD Blocks

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 ~
Reply to
Loading thread data ...
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.).
Reply to
Michael (LS)
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.
Reply to
Michael Bulatovich
: 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. ================================
Reply to
try a lisp routine, several are out there. what was that name again? starts with G
Reply to
Brian Spillane
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".
Reply to
Dennis Behrend
And too may cooks spoil the broth.
Get the CD-Rom from Rugby Joinery or JELDWIN they have Stairs
I have these on my collection CD see
formatting link
Alan (Cadalot)
Reply to
Why not take the same approach for everything? A building's a building-right?
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?
Reply to
Michael Bulatovich
Feel The Love!!! Boy am I glad to see that there are still good people out there willing to help out. Thank You!!!
CB ~
Reply to
Tell your friends!
Reply to
Michael Bulatovich
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
;->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))
;->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
;;;------------------------------------------------------------------------- --;;;
;;;------------------------------------------------------------------------- --;;;
Reply to
Brian Spillane

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.