I'm trying to array a geometry on a curved surface without overlapping

OK, so I made this surface which is the basic shape of the structure I want to make.

And there’s also this geometry which is what the structure will be made of.
Basically I’m trying to “array” this brick on the above curved surface in a way that the bricks are in contact with each other without overlapping, unlike what happens in a typical array where the distance between them is maintened but they overlap. I even projected a square grid directly onto the curved surface showing the “sockets” within which I want the small geometries to go, but this is where the issue comes. I’m not sure how exactly this is done.

In other words the idea is that it’s a brick wall but the bricks are sliding in and out to form these curves. So, how do I do that?

EDIT: Here’s the full code for what I have done until now. The geometries were made manually on Rhino.


My guess is you’re talking about morphing. And to get best results here in discourse you should provide your gh file with internalized data.


I don’t think it’s morphing I have in mind. It is basically a wall made of square shapes that slide back or forth to turn it from flat to wavy.

Kind of this…

Short of. But they aren’t really interchanging bricks. They are rows of bricks closely packed together. And my intention isn’t merely to extrude a deformed grid but to use a specific geometry I have made.

It is most unlikely that you can deal with this without code.

Get an entry level take (is public: meaning several real-life things are not included [like: any module other than box, overall stability, proper offsets per row … etc etc]). Play with distortY variable and see what happens.

Recursion_RectanglesAlongCurves_V1.3dm (164.4 KB) Recursion_RectanglesAlongCurves_V1.gh (128.5 KB)

That said you can attempt to use K2 for the collisions etc etc … but is VERY slow and thus 100% unrealistic.

Have you tried turning the mesh on the surface into curves and then array the geometry along the horizontal lines?

Edit: Actually, I think PanelingTools will do what you want.