Scrunching Arc Tubes with Collision

Hi there,
I’m wondering if anyone can help me with a Kangaroo situation.

I’m hoping to be able to model this configuration of interlaced tubes in a way that accounts for collision, and adjusts the length, but not the radius, of the arcs, to create an even edge at both sides.

The tubes are stacked on one side, and interlaced on the other.


The goal is to simulate forces cinching the tubes together at either side of the assembly, and then let the collision forces ease the length of each tube into some equilibrium. If it’s not possible to have the tube length change in a live manner I could also adjust a data set of starting lengths until I get the end result.

I’ve tried working through some Kangaroo example files and applying my geometry to them but I am having trouble getting both the collision and the attraction between the ends of the tubes to function simultaneously. I’m not sure if this would require feeding one solver output into another solver, or there’s a way to combine all these goals into one solver.

My basic approach has been to create the tubes, create lines to use as springs between each tube end and their neighbors, and then also define the tubes as a rigid body to try to prevent intersection as they wrestle for equilibrium.

I’ve managed to simulate spheres bunching like this but I’m not sure how to add the tubes in way that they will collide.

If anyone can advise or wants to take a crack I uploaded a grasshopper file, apologies for the spaghetti!

Tube scrunch share.gh (35 KB)

Can you draw a sketch of the expected result?

1 Like

The result would be like in the first two pictures, where a series of tubes are stacked on one side and interlaced on the other, but my goal is to be able to have the final geometry respect collisions. Right now the way we are modeling this doesn’t account for collisions, so when made using physical materials the way tubes collide and nest ends up.

Assuming the materials are rigid, simple semicircular arcs of increasing radii, the goal is to create this sort of interlaced stacking but have the ends of the tubes wind up in a predictable position relative to each other, to create a somewhat smooth appearing edge of the assembly overall. Right now we’ve been getting some tubes poking out, mostly due I believe to the way they nest.

Essentially, nesting two arcs of the same length but different radii, the flatter tube longer chord length and project more if the ends are lined up on one side. In this case, the arc radius increases along the length of the assembly, and due to the stacking pattern, in each pair of tubes there is an alternation between whether the big spoon (tube on bottom) is a larger or smaller radius.

This diagram is a model of one pair of identical tubes which are diagonally stacked on one side, and side by side on the other side and manually adjusted to try to minimize intersection while still being as close as possible.


You can see that the red tube projects by 2.8mm on the left due to the way the length of the green tube is “consumed” by trying to cross over the red tube.

Essentially the goal is to be able to control or the relationship of the tube endpoints in these assemblies by adjusting the arc lengths, in this case I could make the tube ends come even by lengthening the red tube by 2.8mm.

It’s possible this may be simpler to approach with just math, but it seemed like Kangaroo might be a cool approach to being able to dynamically solve this.

I managed to get a little farther last night but I think using the Rod component may not be the right path as I’m not sure if I can reduce the flexibility enough to get it to act relatively rigid.

Is part of the process here adjusting the various strengths of the goal components in order to set the correct hierarchy of primacy?

Tube scrunch share edit night 6-30-25.gh (46.7 KB)