toberino Posted June 13, 2014 Posted June 13, 2014 Hi everyone! I am designing floor joists which are drawn as rectangles to define the width of the joist and I spaced them at 16" o.c. and after review of the design I have found that I can go 19.2" o.c. Does anyone know of a command or lisp routine that I can use to redefine the spacing easily without deleting and redrawing everything. I am using aca drawing everything 2d and it needs to stay that way. I will redraw everything if need be for a routine thats follows a particular order and such. I wiould assume that this has already been accomplished just can't find anything at the moment. Maybe I am not talking to the googles with the right words.... Thanks! Quote
Dana W Posted June 13, 2014 Posted June 13, 2014 Hit the F1 key and Look into the ARRAY command. Just erase all but the first joist, set it on the starting point for the new spacing and ARRAY the rest back in. One row, multiple columns, at 19.2" apart. Array a couple extra so you can finagle the last joist in to line up with the edge of the wall. Erase the overrun at the other end. Quote
toberino Posted June 13, 2014 Author Posted June 13, 2014 Yeah, I hear ya on that. That is actually what I do now but....was hoping to find something that worked similar to to a beam system in Revit or floor containers in Sapphire Structure. It would be cool if you could recall a selection set from the array function to array at a different spacing. Or to just select a group of similar objects (like rectangles) and it recognizes equal spacing and allows you to change the spacing. I am surprised there isn't a lisp routing for this already unless it just isn't possible (but it has to be possible). Quote
Dana W Posted June 13, 2014 Posted June 13, 2014 (edited) Well, AutoCad does run lisp programs, so you or someone (other than me) could write some code. I betcha Lee Mac probably has one that will do exactly what you want, not necessarily re-align, but erase and re-array at a new spacing. How about a dynamic block, one for each spacing, 12" Block, 16" block, 19.2", 24"... This still would not get you your spacing change without inserting a new block. At least I don't think one can do multiple incremental stretches at different increments. An array can be associated with a linear parameter and add joists depending on how far you stretch it, and could have a simple stretch action running the other way for joist length. Don't ask, I am not sure how to do it, but I am pretty sure it can be done. I'd have to play with it for a while. I don't do a lot of dynamic blocks in the custom cabinetry world, not enough same-o-same-o. EDIT: I built one for 16" oc joists, 1.5" wide (as in 2x10), and attached it below. The first joist is set at edge of wall, so the second one has to be at 15 1/4" off that one, left face to left face. The block arrays the second joist 16" oc to the right, and stretches upward to any length. It took maybe 10 minutes to get it to work right. I kept forgetting to include the array parameter in the stretch so I could only get the first joist to stretch at first. I think using more than one array/linear set in a block for the same object is possible, it just won't work without using the first joist to array because the first one has to be half a joist off center due to the face lining up with the edge of sub floor instead of the center. Using the first joist as the array object would have all the rest of them a half joist too far to the right. Using the second joist as the array object leaves the proper spacing to the second one, but leaves that same first space non-variable. Thus, one block per spacing requirement. 16 oc joists.dwg Edited June 13, 2014 by Dana W Quote
toberino Posted June 13, 2014 Author Posted June 13, 2014 Interesting approach. I hadn't even considered this as a direction to take. I have downloaded your block and am going to play with it. I appreciate it, thank you! Lee-Mac.com was exactly where I went first I just didn't see anything. It is possible that I overlooked it though. Quote
toberino Posted June 14, 2014 Author Posted June 14, 2014 Hey, that block is pretty cool! Huge thank you for that! Quote
BIGAL Posted June 14, 2014 Posted June 14, 2014 In CIv3d there is an example dwg called carpark it has a number of standard carpark layouts as examples the real nice thing is grab the edge and drag for length the bays appear automatically at a fixed width this is basicly what you want have a block for standard widths. Will try to find dwg for you, I dont know a lot about dynamic blocks. Re lisp yes it can be done pretty easy start, end, draw, ok now hard part need some rules, always start and have first on edge and then equal spacing last on edge or first and last on edge with equal diff on both ends, remainder at equal spacing. I expect the first method. Code method is (fix (length / spacing)) repeat copy 1st then add last. Here is some sample code showing repeat something at fixed spacing not complete code. (defun dpark () (command "pline" pt1 pt3 pt4 pt5 "c") (setq distp1p3 (distance pt1 pt3)) ; length of bay along kerb (setq n (- (fix (/ (distance pt1 pt2) distp1p3))1)) ; no of car park bays (repeat n (command "copy" "L" "" pt1 pt3) ) (setvar "osmode" oldsnap) (setvar "clayer" oldlayer) ) Quote
toberino Posted June 14, 2014 Author Posted June 14, 2014 Hey, that block is pretty cool! Huge thank you for that! Quote
Dana W Posted June 14, 2014 Posted June 14, 2014 Interesting approach. I hadn't even considered this as a direction to take. I have downloaded your block and am going to play with it. I appreciate it, thank you! Lee-Mac.com was exactly where I went first I just didn't see anything. It is possible that I overlooked it though. It may depend on what keywords you searched with. I have not looked myself. Quote
Dana W Posted June 14, 2014 Posted June 14, 2014 Yes. ... need some rules, always start and have first on edge and then equal spacing Yes. last on edge No. ... first and last on edge with equal diff on both ends, remainder at equal spacing. Lets say we need a total of 18 joists. Either lisp code or a block will be used for #1 through #17. The distance from the outer face of #1 to the outer face of #2 will be 1/2 of a joist thickness less than the on center spacing distance. For example, for 2x10's @ 16" OC, face of #1 to CL of #2 = 15 1/4". From #2 to #17, the on center spacing applies. #18 will be handled manually since it will almost NEVER be exactly nn" from the center line of #17 to the outer face of #18, and often #18 must be doubled up due to the total distance of the underlying wall being 1" or 2" over an even multiple of nn". In a nutshell: Floor framing plans are a science project. What we are looking for is a predictable spacing for a nail / screw line along the center of every joist, especially where the ends of 8'-0" or 12'-0" plywood sub-floor sheathing butt each other. We cannot see through plywood, so it has to be ON. The ply has to butt on a joist. It is also required that the plywood joints be staggered by 1/2 sheet. The common spacing of 12", 16", 19.2", and 24" provide adequate bearing and they are evenly divided into 4'-0" (except 19.2 only divides 8'0" evenly) so those spacing modules work well. You may find the on center spacing to be different in some areas of the house. Longer spans, heavier loads like piano rooms, water beds, or indoor jetted bathtubs often require 12" OC spacing or even 16" OC doube joists. And then there are openings in the floor, flush beams, and cantilevered overhangs, and, bay windows to deal with. 19.2", and 24" is mostly used for engineered ply "I-beams" and open web floor trusses, which are much stronger than 2x lumber, so they can be further apart. They are also at least 3 1/2" thick in plan view, not 1 1/2" like a 2x10. The first and last joists are flush with the outside of the wall, either stud or sheathing, depending on the jurisdiction. Where nn" is your on center distance, Joists must be no greater than, nor less than nn" on center. Well, there can be joists in there at less than the OC distance, but there has to be a joist at each OC distance point. The second joist center line is always nn" from the outer face of the first joist, not the first joist center line. From the second joist on, they all are nn" on center. The distance from the last joist and the center line of the next to last joist can be less than nn", but it cannot be greater than nn". When the last joist is a little more than nn" from the center of the next to last joist, for instance 17" rather than 16", framing must be added to provide a nailing line at 16". in a case like this, Most builders, when using framing lumber will simply double up the last joist. When a framer/floor decker is confronted with a floor that is, lets say 32'-1" long, the first piece of plywood will be installed 1 or 2 joist bays short, depending on the joist layout. You really don't want a 1" wide ply strip under the bottom of your exterior wall. The first and last joists are flush with the outer structural surface of the wall, in the case of wood framing, the joists are flush with the wall studs, then exterior wall sheathing, usually 1/2" plywood and insulation foil is run vertically over the studs and joists, most of the time. In some places it is acceptable to leave the outer surface of the joists flush with the exterior sheathing, and simply cover then with the insulation foil. Now we move to the other side of the center bearing beam under the floor. joists and floor trusses often span the entire width of a 16, 20, or more foot wide floor, but a 2x10 or 2x12 is limited to not much more than a 10 foot clear span depending on the spacing. So, they will overlap side by side by at least 4" on top of the bearing beam. This will throw off the lisp code or the dynamic block I did, by the width of a joist, because everything moves over by that much, on the back side. Quote
toberino Posted June 16, 2014 Author Posted June 16, 2014 This turned out to be a great alternative to what I was initially after. I created a block for each of the spacings needed. 16", 19.2", and 24". (although if I could figure out how to get a prompt for the spacing from the array upon insertion and only have just one block to deal with that would be awesome!) I excluded the first member and have the insertion point at what would be center of that member (which also acts as the face of the wall in the event of the start of the layout). Since there are almost always multiple lengths of joists you can insert the block multiple times using the center of the last member as the insertion point. What a great time saver! I have also included a stretchable dimension in the block to see a live length during modification. [ATTACH=CONFIG]49514[/ATTACH] Here are my blocks for everyone to enjoy! 16 in o.c.TJI Joists.dwg 19.2 in o.c.TJI Joists.dwg 24 in o.c. Roof Trusses.dwg Quote
Dana W Posted June 16, 2014 Posted June 16, 2014 Outstanding. Yeah, leaving off the first joist is a good idea indeed. You have to fill in the last one anyway. Quote
rkent Posted June 16, 2014 Posted June 16, 2014 Yeah, I hear ya on that. That is actually what I do now but....was hoping to find something that worked similar to to a beam system in Revit or floor containers in Sapphire Structure.It would be cool if you could recall a selection set from the array function to array at a different spacing. Or to just select a group of similar objects (like rectangles) and it recognizes equal spacing and allows you to change the spacing. I am surprised there isn't a lisp routing for this already unless it just isn't possible (but it has to be possible). AutoCAD has associative arrays now, array once, adjust later for spacing, number, etc. Quote
toberino Posted June 16, 2014 Author Posted June 16, 2014 AutoCAD has associative arrays now, array once, adjust later for spacing, number, etc. I wonder if this will work on an array in a block? Quote
Dana W Posted June 16, 2014 Posted June 16, 2014 I wonder if this will work on an array in a block?You can think of an associative array as a block. Quote
toberino Posted June 19, 2014 Author Posted June 19, 2014 no, the array command is very different than inserting a block. the array command is not modifiable once included in the block. it has limited functionality as a parameter. But, mission accomplished! Thanks, Dana! Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.