It is possible for the future. Even a straight stair that flares both ways.
I'll add it to the wish list.
It is possible for the future. Even a straight stair that flares both ways.
I'll add it to the wish list.
I've added the progressive flare to the plugin.
This stair has a flare amount of 20 mm, and a progressive flare of 20 mm ( could have been different ) and a flare count of 5 treads.
So starting at the bottom of the stair we have the following flares at the front of the treads in mm.
1 - 120
2 - 100
3 - 80
4 - 60
5 - 40
6 - 20
7 - 20
...
13 - 20
I have also fixed a number of bugs - but before I can release a new version to the testers I've got this wild bug ( my inadequate testing let this one slip in ) OOPS !!!
It happens with flare amounts of 80 mm or greater on housed stringers.
That is gorgeous! But unfortunately it is out of scope for this software.
Jabbers has a 5 axis CNC - maybe he could do it !!!
There are a number of different possibilities. Could have a drop down box that contains possible choices as an insertion point for the stair. Such as "Origin", "Click Center", "Top Left", "Top Right" etc.
Then there is the idea of rotating the stair into position.
All this could be set up prior to drawing the stair. Need more feedback on this.
I am fully intending in adding posts and spindles ( newels and balustrades ) in the future. But it probably won't be ready by the end of this week.
I'm preparing to cap off this version 1.0 on the Stair Builder Plugin System. This version will include The main Stair Build plugin, The Add a Handrail Profile plugin and Extrude Handrail along Path plugin. The complete system comes with 6 pre-defined handrail profiles as described in earlier posts. The system also comes with a pre-defined file of default values in a file called defaults.txt which is found in the folder plugins\GKWare\StairMaker. A help file called StairMaker.pdf also exists in this folder. The help file is short and contains an important section which explains special behaviour of a few input box entry fields. The 6 pre-defined handrail profiles are in 6 corresponding files in the folder plugins\GKWare\StairMaker\Handrail.
There has been only 1 comment about a free version. Since that is the case I am not considering creating a free version at this time. I do however, want a few beta users. If anyone is interested in testing out the software please contact me with a personal message - either from my web site or from within this forum. I am expecting to have the documentation completed by the end of this coming week.
The attached pictures illustrate a couple of steps in modeling a stair and attaching a handrail.
Thank you very much for your comments.
I'm hoping that my tool set will simplify and speed up the design process.
The big bonus is helping clients visualize a complex stair. If the plan changes for what ever reason - a new stair can be quickly put into the plan without costing hrs and hrs.
Thanks - I appreciate what you said.
Here's the same stair with round spindles which go 2, 1, 2 on the treads starting at the middle. I worked it out so that it still meets code for spindle spacing here in Canada.
I have spent some time conversing with Bob and have spent some time working on an eliptical stair. I have also worked on a couple of follow me plugins for handrails.
The first plugin allows you to add handrail profiles to a handrail profile that is in my space. I create a GKWare folder that contains a Cabmaker folder (if you are running my Door maker) and a Stairmaker folder for this plugin that I am working on. There is a folder called Handrail under the Stairmaker folder that contains 1 file for each handrail that you wish to use. I will provide the 6 mentioned earlier.
The follow me handrail plugin centers the top of the handrail on the path that you choose. It begins by scaling the handrail vertically based on the initial slope of the path.
I made the handrail that is on the elliptical stair with this plugin.
I modeled the elliptical stair mostly by hand - as my stair plugin does not currently build elliptical stairs. I also had to make an elliptical plugin which builds a 180 ellipse where each point is close to the same distance apart from the prior point. The math for the ellipse does break down close to each end. But it is workable. This results in, elliptical stringers and handrails that are very close to a constant pitch which will make building the elliptical stairs easier.
I know exactly what you mean - I've built a lot of curved staircases.
The challenge when it comes to modelling is to try an approximate the handrail profile and to manage ( or control ) the distortion. You feather the distortion over a distance so as to minimize it visually.
Ok - the premis for my strategy 2) is flawed. The code works - but produces a twist in the profile as it changes elevation.
strategy 1) is still not figured out.
The way I have been handling this is first of all transform scaling in the x direction. Then rotating and placing. It produces a result that will work but only if there is a consistent pitch if working with an elevation change. This is the second picture.
The problem here is if we start changing the pitch to close to vertical then the shape is wrong.
It appears that there has to be a compromise Conceptually if I use strategy 2 and come from both sides the intersect_line_plane will produce points that do not meet. Perhaps taking the midpoint between each pair ( 1 pt from vector 1 and the other pt from vector 2 ) it may produce an acceptable compromise. Just speculating as it is a bit difficult to visualize.
I found an error where I was setting z to 0 for the vectors - I changed that and I am getting closer.
At least I can get a compound plane with Dan's code. I have several errors doing it the other way and have to test for ang != 0 and now also test for transformation.rotation as it says it can't create a vector that has 0 length.
I'll keep chunging along !
I believe that I did
v = vec_1.clone
ang = vec_1.angle_between( vec_2 )
if ( ang != 0 )
nor = vec_1.cross( vec_2 )
tr = Geom::Transformation.rotation( pt1, nor, ang / 2.0 )
vec_1.transform!( tr )
miter_plane = [ pt1, vec_1 ]
p3 = []
for pt in p2
line = [ pt, vec_1 ]
p = Geom.intersect_line_plane( line, miter_plane )
p3 << p
ent1.add_cpoint( p )
end
end
What is really interesting is that Dan Rathbun's solution produces the same plane as does Tig's, except Dan's does it with 1 line of code.
miter_plane = [ ipoint, vec1.normalize + vec2.normalize ]
I checked it out and it appears that the miter_plane is always vertical and not a compound miter. What I was looking for - like on a compound miter saw is to change the angle of the miter saw so as to cut a compound miter.
What I am missing is how to rotate in 2 planes at the same time.
Thanks Tig,
That will work for strategy 2.
This strategy may accumulate errors as I walk down the path. I will check it out over the weekend.
I was thinking that adding the 2 normalized vectors together should result in a vector that has a plane which is perpendicular to the resulting vector.
Maybe I'm going about this the wrong way. but I was hoping to use the plane to transform a moulding profile - but it would have to stretch in X and Y and rotate along the plane.
Another strategy is to come up with this plane - transform the moulding to the first vector and use the points in sequence and intersect_line_plane.
I'm just a bit slow at getting my head around all the necessary transforms.
Have I left you totally confused?
I'm trying to get my head around finding a plane that is at the intersection of 2 vectors.
Think of it as calculating the angles to cut a compound miter for moulding and the plane I'm after is the plane representing the cut surface of the miter.
In sketchup I have 2 lines that intersect - I know where they intersect - but am not seeing how to derive the plane.
Hello Bob,
Welcome to Sketchucation, and thank-you for your kind words!
If you visited my web site you may have noticed that I have cabmaker32 cabinet making software for system 32 style cabinets. I have done work with nesting parts and outputting DXF files for cabinets. I have a program called CutMasterPro that takes output from cabmaker32 and optimizes it for material utilization.
CutMasterPro only optimizes rectangular shaped parts.
What kind of parts are you using CNC for? Do you have a flat bed or pod style CNC? Do you have a lathe attachment? What size of bed. I'm thinking you might have a 3 axis CNC.
I would guess that you would machine all flat parts such as treads, flat risers, flat stringers, Rail parts such as elbows etc. I would like more information to determine exactly what parts you would want DXF for and also what parts would require nesting.
The software as a first version should be ready within a month or so. All depends how many more features will make it into the first version. At a very minimum I still need to finish off the top nosing assembly ( needs bullnosing like the rest of the treads ). I would like to complete the progressive flare but it doesn't have to make it into the first version. I do have to complete documentation and do more testing. So at a very minimum it would be 3 weeks.
If you are serious about wanting the software - we can arrange something.
When I was building curved stairs I would glue lam treads as a rough over sized blank. Treads for open riser freestanding stairs would have 3 layers of 3/4 fir plywood. For cheaper frameups I would purchase 1" spruce ply as it meets code. I would then draw the treads on the blanks using 1 or more templates, then rought bandsaw the treads a bit oversized and then screw on the template and use a 7 hp shaper with a tersa head and a perfectly sized collar press fit onto a ball bearing. Essentially I would use the shaper to finish size the treads.
I could go on and on - perhaps it is best that we take this off line. You send me a private email from my web site if you wish.
No problem,
I should have mentioned that the configuration file has an item called segments set it to what ever you want (within reason)
Here is a picture of a flared tread with the new setting which produces a chamfer
segments=0
The reason is that a chamfer is within building code as is a tread with a bullnose
I also have these settings
inside_stringer_section=3
outside_stringer_section=4
This allows you to change how many segments of handrail and stringer there are for each tread. One for inside and one for outside curved rail / stringer.
Since you can make a handrail any way you want. The arc can have as many or as few segments as you wish.