How to create a beam whose Diameter depends on its curves radii?


Who can help me, to create a rectangular, curved bar/beam whose Diameter depends on its curves radii? I want to realize it with Rhino and Grasshopper.

Given is:

  • the curves of the the bar
  • the contour (square or rectangle)

Searched is:

  • the diameters of the bar on various points.

My question is:

  • How can I select all radii of the curve and use them as parameter for the diameter of the bar?

Would be great if somebody could help me.

Thank you very much.



If I understand you correctly, then check this demo. (7.4 KB)

1 Like

Hello HS_Kim

Thank you for you quick answer!

Your demo is partially what I´m looking for, but not complete. I want, that the diameter of the beam depends on the radii of the curve.

For example: if the curve is straight, the beam has a cross-section of e.g. 30x30mm. If the curve bends with a radius of 100mm, the beam gets a smaller cross-section. e.g. 15x30mm. if the curve has ha radius of 200mm, the beam has a cross-section somewhere between. e.g. 25x30mm…

My question now is: How can I pic out all the radii of the curve, to use them for the calculation of the cross-section-rectangle?

Three points along the curve gives you a circle. So you just test with triplets at different intervals to get circle radius at those intervals. You can use Evaluate Curve to get points along the curve, points which can be used to get the circle radius

// Rolf

Yes - at the moment I try to use “Evaluate Curve”. It creates a number of points on the curve. But I dont understand how to analyze the Radius on this points.

Does anybody know if it is possible to use the tool “Curvature Graph”? This tool makes exactly what I want. The thighter the curve is, the longer is the output of the curvature graph. If I could use this output of the Curvature Graph, I could use it to scale the cross-section of the beam.

Or the tool “Curvature”?
I do not understand how I get from the tool a number that corresponds to the radius and that I can use to scale the cross section.

(I´m sorry - I´m a really beginner of grasshopper and it´s quite difficult for me at the moment)

I think I’m just about to finish. :slight_smile:

It makes nearly what it shall do. But one mistake I cant repair:
Now the loft is as thicker as stronger the curvature is. But I need the opposite: In the curves, the loft/beam should be thin. On the straighter parts of the curve, the loft/beam should be thicker.
Can anybody help?

Thank you very much. Especially to HS_Kim, who gave me the crucial template. :slight_smile:

Grasshopper - Projekt gebogene Stäbe - Versuch (11.1 KB)

Projekt gebogene Stäbe - Versuch 3.3dm (24.2 KB)

Of course you can use a curvature value at a specified parameter on your curve, but somtimes your curvature circle’s radius is likely to be very huge…
So, you are better off using your curvature values proportionally. (9.6 KB)

Thanks for your help again! Thats very interesting but I think theres still a mistake somewhere.
I tried your programming with a new curve. Unfortunatelly it does not what it should do. The result does not make the beam thicker on the straight parts of the curve or does not make the beam thinner on the strong curved parts of the curve.
I load up a handdrawing of the result, how it approximately should look like.

Also I don´t understand why there´s a little narrowing in the middle of your example (also its in the middle of my example, but there it´s thicker because of my settings in the example). I marked it in a screenshot with a question mark.

Maybe you can tell me where´s the mistake.




Heres the curve from my example:
Versuch 5.3dm (31.7 KB)

It’s natural to assume that the radius of a curvature circle will correspond to the curvature of the curve but there’s no guarantee that it will.
It depends on how you make the curve. Turn on the preview of the Curvature and see how the curvature circles are look like.

There are some extreme big circles in the preview of the curvature. Are they the reason for that exceptional big (or small) Parts in the Beam?
What can I do against it?


is it possible to set a limit?
(For example: The beam must not be bigger than 30x30mm. )
That would also be helpful for a minimal limit: (For example: not smaller than 30x10mm)

Please edit previous posts with additions instead of adding new ones every other minute.

// Rolf

Thank you very much for your help! but unfortunately, I’m not getting closer to my goal. Maybe its good to describe the background of the project:
I have to bend different beams. Because of theyr thickness it´s not possible to bend them as they are. So I have to make them smaller on the curved parts. To get the best possible stability I want to make them as lass thinner as possible. That´s why I want to create this Grasshopper Programming.

For example: I have a beam with a sectional contour of 100x100mm. I know, to bend it in a curve with radius of 500mm the beam must be not thicker than 40mm. Otherwise it would get a crack on its outer side.
I have a list of radii with the respective maximum permissible thicknesses.

Maybe anybody has an idea how to programm such a simulation. (Maybe its not the right way to use the radii for the calculation of the thicknesses?).

@ Rolf: Ok - Sorry.

Add Minimum would help. (9.9 KB)