I’m trying to create a spiral stair that is completely parametric, I need to add in sawtooth stringers but I’m having trouble getting the ‘zig zag’ edge to curve to the same radius of the stair. I’m very new to grasshopper so please excuse my messy file. I have already tried to use flow and divide curve using AI to help me but I just can’t get it. In the ss I’ve attached you can see the lines cutting into the tread which I don’t want, ultimately I need the curve to look circular in plan view but keep its zig zag edge in elevation view.
Any advice is much appreciated! Thanks
I don’t get it. Is the stringer supposed to be helical or polygnal?
Also, provide a file!
In the ss in the plan view you can see its polygonal, I’m trying to make that line mimic the outer/circular curve, but in elevation I need it to preserve the stair shape. Hope that’s a better explanation?
I’ve attached the file
STAIRS GH.gh (17.8 KB)
Is it supposed to be made out of wood? 
Search the forum first, spiral staircases have been done MANY times.
I managed to make this but it’s Rhino 8 and uses a Python 3 script (I couldn’t figure out the “repeat” node). To stay in character I’ve made sure the script is a MESS. This one’s especially bad. I think sometimes we have to “make a mess” to figure it out then create a clean better functioning script later on (which I never do). I struggled a lot and had to copy stuff when I could have just re-used other geometry (kind of). Stuff also wasn’t cutting well (that normally cuts just fine in model space) so some of the mess isn’t totally my fault :-S . I’ll also attach a file with the baked result - if it’s what you’re after then it might be worth cleaning this script up… but I don’t recommend it (I’ll probably re-create this from scratch when I have time) - instead I’ll try to explain as best I can the process I’m using.
I’ve seen other scripts but there’s almost always something lacking. Or it uses a plugin I don’t have. Or it just doesn’t work (hopefully this one works - remember that it’s Rhino 8 though). Lots of stairs are missing simple things like nosings. Other times the soffit is really messed up. This one’s soffit ends up a little better… kind of… There’s something weird going on. I might be able to fix this in the lofting options though. If I delete the surface after baking and just do an edge surface it ends up perfect. But it would be nice to get it good straight out of GH:
The key to doing this is that you have to cut the string shape out of a cylinder. Note that I’m not showing all the cutters.
You’d probably be looking to get something more like this:
My script DOESN’T do this right now it runs a few laps because I struggled a lot. In fact I was surprised when it spat out a closed Brep. If I clean up my script I would split up the cylinder (which might be two open surfaces - one for the inner diameter and one for the outer). I would probably start with the bottom - split grey with blue, then split grey with green, and then split green with red, and then grey with red - if that works on a solid it would clean my script up really well. If not then I have to fight with the surfaces. It can be frustrating because something that works in Rhino’s model space blows up spectacularly in Rhino, especially lots of really easy operations like really simple lofts. Make the surfaces a little bigger than the objects they cut, and avoid situations where two surfaces are planar and it should eventually work.
Spiral Stair Test.gh (47.9 KB)
Spiral Stairs Sample.3dm (279.2 KB)
The last thing I’ll show is the curves for the soffit’s loft. All the python script does is copy/rotate/move the geometry because I couldn’t figure out “Repeat”. I’ve done this for both the soffit and the Risers/Treads. If I separate the riser/tread maybe I could get rid of the forced top riser.
I ask this question because spiral staircase are usually not made from wood. And when made from metal, the individual stairs are either radially supported and connected to a central pole, or are supported by side stringers that are not cut to fit the treads…
I got lazy towards the end:
Spiral Staircase Sawtooth Stringer VR 1.gh (35.7 KB)
This definition may be a little more verbose, but, in exchange, conceptually more transparent for a beginner. We create the profiles in the XZ Plane and then Flow to an arc. Offset the surfaces and create ruled surfaces between the offsetted surfaces. Brep Join, complete.
A drawback is that if the stairs wind over an angle greater than 360 degrees, you cannot use Flow with an arc. That was the purpose of my investigation of an arc larger than 360 degrees here. Also, Flow will rebuild your surface contours, so that your ruled surfaces are not so clean. Realistically, there is nothing holding you back from defining the stairs with cylindrical points and geodesics. Then you would have clean ruled surfaces.
Uses Metahopper for slider constraints.
@keithscadservices I’ve cleaned it up:
Spiral Staircase Sawtooth Stringer VR 3.gh (65.1 KB)
and included an undershot of the stairs so that you can see how cleanly the soffit surfaces of the stringers turned out.
While we can build a spiral around all sorts of shapes you very quickly end up with very dangerous stairs. For a commerical staircase there are rules for the min tread length at each end of the tread. Spiral stairs are aesthetically pleasing, but not overly useful in many cases.
It can be made to be practical. For example, if I were to really polish up my definition I’d include checks for tread width - probably at the narrowest place and also intersect it somewhere that matches whatever the code uses. No sense at this point. If I were doing lots of spiral stairs a well-tuned GH would absolutely be practical.
I use GH definitions for regular stairs. I simply have a panel to show me the riser height (sliders for total rise and no. of risers) so that I know it’s within code. Other parameters are usually memory. Regular stairs aren’t too hard. Winders and spirals come up so infrequently that I just manually model them. But if I had a project with lots of winder stairs I’d probably go all in on a GH definition. The thing is that if I manually modelled a spiral stair run and it’s not within code, I’d have to start over, versus the GH definition where I just bake it, find out it’s wrong, then go back in GH, change a couple inputs, and re-bake it. Even for a single building but with multiple runs it would be worth the time to build a definition.
What I’ve defined here should fit rather comfortably within safety regulations. At least in terms of the step sizes. That’s because I’ve constructed from the centerline and forced an ideal rise/run division based off of a ratio of 17 to 29. The angle of rotation is resultant.
Of course, building codes are different country to country. And there other considerations than just the step size. Such as width and how long a run of steps are allowed before you must platform.
In many Bundesländer (states/provinces), spiral staircases are inadmissible as fire escapes or as a part of fire escape routes anyway. So if you are planning a spiral staircase, you are dealing with an internal stair with less restrictions.
In many cases I see spiral staircases considered to save space. If if the inner radii is too small that can lead to an almost vertical fall if you follow the inside path. Large radii are fine, but then the length of the tread at the outer radii can lead to two steps, and for some, that can cause more tripping. Some of Joseph’s very cool shapes appear to have some regions where the stair might not be super usable.
Winders are terrible. In Canada they are permitted for residential staircases, but not in commercial means of egress stairs. We advise clients to delete them whenever you have sufficient space for a few more treads.
I hear you. But a “spiral staircase” in such a small diameter is not going to be realized with an open eye / well. It’s going to be executed out as spindle staircase, and here the narrow parts of the treads are a constructive necessity while the true zone of travel lives on the outside of the staircase near the handrail.
So, yes, a spiral staircase should constrain stair width so that the tread depth on the inner side of the winding is not too small and I didn’t do that in my definition above. I was mostly concerned, however, with the methodology of constructing the stringers, which also happens to be stated objective of the thread. Ruled surfaces are a natural fit in comparison to a loft, which can be somewhat sketchy.
Winders are a common thing here in Europe. They’re not so bad as long as they don’t turn a full 180 degrees around a post. Usually, they only turn 90 degrees as an introduction to the straight-away of a stairway, both at the top and the bottom of the stairs. And this does save space.