Dividing a curve for handrails

I’m working on these railings for a stair that need to have posts at fixed locations, between these there needs to be balusters. All posts and balusters need to have a maximum spacing of 100mm.

I’ve tried different approaches, the best one I have is still not good enough. I’ve split/shattered the curves at the fixed locations, then divided the segments. Some segments work, but some are too long and too short, and some places these are making big jumps in spacing between the posts.

Would it be possible to divide the curve, so that there are an even or gradual transition in spacing throughout the curve, while still maintaining the fixed divisions and maximum desired length?

Grasshopper file

which are these fixed locations? :slight_smile:

is this step maybe also ofsetting in the wrong direction?

They were actually offsetting the wrong way, forgot to add a negative component, should be correct in the file below. The fixed posts are the ones in the screenshot below.

I can’t seem to upload to the forum, however, I’ve added dropbox links.


Grasshopper file

Why are the stair steps so uneven in length at least on the walking line?

not really sure, I’m just making the railing based on this stair. Obviously, evening out the step lengths would help, but I don’t think that’s a possibility, it’s just another fixed parameter we have to live with. It’s OK as long as the spacing between the posts and balusters look even throughout the stair—close to a desired length of 100mm without any dramatic transitions (like 3 balusters on one step, then 5 on the next).

So, the problem is basically how to divide a (segmented) curve evenly, with desired length of 100mm, while including the fixed points. Could min/max components work? or maybe constructing domains or something?

If helpful, every second fixed point / post can be culled, to provide extra length for division.

do you mean something like this
railing.gh (49.4 KB)

Nice work, that’s much better, it’s more even, unfortunately there are still a few places that looks off, it’s more obvious when actually extruding them :confused:

Starting to think it might not be possible at all?

What do think about this one
railing.gh (42.7 KB)

hmm, I think that’s even better, but still, at the same locations it tends to make too big jump in spacing. skipping or culling every second fixed point or post might be the only way?

thanks for the effort though :slight_smile:

I’ll try different lengths between 95-100mm to see if it helps.

this problem could be translated in something like: given a list of numbers (which is the distance between consecutive posts, measured along the XY-projected rail curve) find the “best range” of maximum common divisors less or equal to 100

the main issue is that the ratio between the distance among two consecutive posts and the max_value is sometimes so small (two) that it doesn’t leave any space of maneuver

for instance, when the distance between posts is 100<d<150 you need to place an element there, and their relative distance will be 75ish units: that’s the overall minimum distance you will get

at this point you could reverse the problem, and say “now that I know I’ll be forced to have at least a division at 75ish units, what’s the best range of maximum common divisors I can come up with, in such a way my target distance is now 75ish units instead of the previous 100?”

the more the white curve is jagged, the more different the distance between elements will be
of course → “tollerating” a general and overall smaller distance between elements means just using more and more balauster elements

for instance, in this case:

would you be happy if the maximum difference in distance between two vertical elements would be “just” 9 (probably difficult to notice by eye?) but this means that all the vertical elements would be at distance ranging from 63 to 72 ? "

a note: this is a completely linear solution, meaning that the distance between elements is for each post-to-post section
it would for sure be interesting to explore dynamic solutions that might change the single element-to-element distance, but due to the very low ratio between the post-to-post distance and the maximum allowed distance, if your final intent is to minimize the number of balauster elements I don’t think there would be a lot of space for manuever (but I’ve been proven completely wrong so many times… :smiley: )


Could you please share that file? :slight_smile:

yes of course, but be aware that you’ll see what gave rise to chaos in there
it was supposed to be just an experiment so there’s no kind of order whatsoever, looking at it will be disturbing
railing (1)Re.gh|attachment (91.3 KB)

Boy they have sure given you a difficult problem. If you want to just divide the curve evenly, without any reference to the steps, then that is pretty easy. Most of the time with stairs you have “half” a space at the front of the stairs and half at the back. Another way of saying that is that the riser splits a space. Because all of the treads are different lengths you will have different spacing on each and every tread. If you don’t vary all of the spacing then you chase the problem to a place where you see it on each riser. They should have a curb at each end of the steps. Not an open tread. That way you can divide the handrail curve evenly. The only other thought is to noodle around with Galapegos to minimize the differences on each tread. My opinion is that the Architect/ designer is asking you to do something basically impossible. Just my two cents.

Bill Amaya