Hello! I have a couple of questions on this topic; below is an example I sought out that demonstrates the twisted ribbon aesthetic I’m trying to create—the Polycentric Pavilion.

My initial approach was using the Catenary curve component and lofting without Kangaroo, but as I’m trying to create a physical model, there is an issue of attachment angle. I’d like to attach the edges perpendicularly to the base plane so I need to force the lower sections to be straight, and see how that deforms the shape.

So first question! Is it better to model this in Kangaroo using the same approach, creating and lofting the adjusted rods, or creating a catenary mesh? Can/should I convert original lofted surface to a mesh and utilize it? I need to generate about 50 such interactions in a composition, so I’m looking for the most efficient solution.

Second, depending on which method, what goals do I need to add to force edge perpendicularity?

Attached are my original form-finding and my initial Kangaroo experimentation.

I know this is a simple enough shape that I could create this by Interoplating adjusted points on the curve but as I’m prototyping this physically, I’d like to have a feel for the bending limitations using Kangaroo. Thanks!

Not sitting in front of my computer. You don’t need catenary for this. Lofting two curves should work and then use the rod goal. To keep the first segment vertical you can use a on plane goal on the first two or three control points of the curves.

Thank you @oberbichler that is elegant and also solves the next question I was going to ask which is how to force edges to be flat to the ground, the alternative mounting option. It’s very interesting how much these alter the form.

Hi,
Seems that the surface normal is pointing in another direction then in my last example. Therefore, the sign of the angle within the Python nodes needs to be changed. Moreover, I would use the normal of the undeformed surface as reference (angle = 0). Here a first solution: EQLibs Troubleshooting 1.gh (39.4 KB)

Note that the solution becomes unstable at a certain angle. The trick with such nonlinear structures is to apply deformation and loads in small steps (e.g., by dragging nodes with the mouse). This usually helps the solver to converge. I would suggest modeling the strips in the flat configuration (everything what goes into the Model-component) and deform this model with Python (everything after the Model-component).

@oberbichler Thank you, so with this system if I want to add length (curved height) to the twisted arc I would need to physically bring the points closer together from the original positions? Or rather, start with the original positions further away? Unlike say adding length/gravity/ect to extend a curve in Kangaroo?

@martinsiegrist Thanks, I’m attempting both methods. I was trying to follow along your recommendation but I’m clearly missing some fundamental principle. Do you have any tips?

Extra steps for the vertical-ish planes because the curves are intentionally skewed to begin with.

Also can I feed both (potentially many) curves through at the same time, or is it a one at a time thing? Like if I wanted to process a lot of curves like this would I need to use a zombie solver with Record Data and cycle through them one at a time?

I played around with this already yesterday but got a little frustrated with the goals that seemed to fight each other. At some point, the solver collapses.

Using two pairs of lines as directions seems to work better than trying to clamp the points onto planes. You would have to bake the lines and drag their control points.

Exactly! FIRST create a flat strip and THEN deform it (like in real life). This makes the solution a lot easier and might also help in Kangaroo.

You don’t have to apply the deformation manually with the mouse. In the following example you can specify the final position of the edges and the final angle. Then you interpolate…