Kangaroo beam component

Hi all,

I’m currently working on an active bending wooden grid-shell (form finding and structural analysis) and I would like to have some informations about the latest version of Kangaroo, which introduces the beam component.

Indeed, until now, I have always used the rod component to find the form of the grid shell, but this component is only 3dof and don’t take into account the difference between Ix and Iy inertia. Also, to retrieve the local axis for further analysis, I have to use a patch which is not really accurate and takes lot of time to compute.

With the beam component, the fact that we can retrieve the start/end frame is much more comfortable and the form finding takes into account 6dof effects and Ix/Iy beam inertia (time of computing is also faster).

I’m posting here to get more informations about this new tool as the units of the physical parameters or the local axis of beams (for Ix and Iy) are not mentioned, and which of the beam or rod component is closest to the reality ? Also, I didn’t see any difference when changing the inertia or the area of sections. Is that normal ?

@DanielPiker can you have a look at this please, I really appreciate this new functionality and really want to work with it. Thank you !

Here are the two different script and the results (in blue with beam and in red with rod).

Hi Daniel,

Did you have some news about the development of the Kangaroo2 beam component ?

I am really interested by this functionnality and want to know a bit more about it.

Many thanks,


Hi @Flavien_Bessiere and @DanielPiker
Sorry to resurrect an old thread, but I have a similar question about this. Flavien, did you manage to figure this out in the end?

I have a similar situation where I am modelling thin lathes that are twisting around a cylinder, meeting each other face-to-face where they intersect. I’d like to use the 6DOF components to relax the parts of the lathes in between connections, and to see how the overall form changes once all the beams are relaxed. In this instance, I am trying to have the beams straighten out and untwist, and therefore find the form once all twisting and bending forces are balanced.

I’ve attached a small isolated sample of what I am trying to do. There are groupings of planes that are used to build the beams. I find that, once these groups share a point (i.e. they intersect), the simulation doesn’t work (i.e. all the outputs disappear). If I don’t include these intersection points, the beams relax, but since they are not connected, they relax individually and don’t give any meaningful result.

211220 - K2 Beam example 01.gh (108.0 KB)
I have tried to follow the K2 Beam example closely, but to no avail.

Any help or suggestions would be most welcome :slight_smile:


Hi @tom_svilans
Do you want the ring beams to have a straight rest state or curved?

Hey @DanielPiker , I’d like them to be relaxed, so I guess their rest state should be straight, while constrained by the attachments of the other beams. Thanks for taking a look!

Here’s an example showing connections between curved beams so that they are free to swivel about a common axis, but keeping their faces aligned
swivel_connection.gh (28.8 KB)

Note that the StartNode and EndNode inputs for Beam are used as well as the Frames.

StartFrame/EndFrame set the initial orientations for the beam ends. The Node inputs are used to identify the 6dof particles the beam acts on.
When working with the regular 3dof particles, points being coincident automatically combines them into a single particle.
However, with 6dof particles, they only get combined if both their position and orientation match.

By default, if no input is given to StartNode/EndNode of Beam, it uses the WorldXY.
If this is used for all the beams, the node orientations match, so if they share a point they actually get locked together. Compare the behaviour of this with the example above:
locked_connection.gh (28.1 KB)
See how the beams are not free to swivel at their connection point.

So to keep the beams from locking together, we give them different orientations for the Nodes. However if we did nothing else, they wouldn’t be connected at all, so we need the extra ‘Swivel’ goal, which keeps a pair of frames locked together in translation, and in 1 axis.

I hope this makes it clearer!


@DanielPiker that’s absolutely brilliant! Thank you so much!