Subdivide a surface into pentagonal shapes in Grasshopper

Hello!

I’m trying to produce a GH script that can take any surface input and subdivide it into pentagonal shapes, as shown in the attached image. As you can see, every four pentagonal shapes can be grouped together to form a larger hexagon, which may make it more feasible to subdivide the surfaces as intended. I’m sure this would involve the Lunchbox plugin somehow, but as I am still somewhat unfamiliar with GH as a whole so I would welcome any help or feedback offered.

If anyone also has additional methods or suggestions for subdividing a surface input into pentagonal shapes (regardless of if multiple of them can form a hexagon or not), I would welcome that as well!

Any surface? Like a circle, for example, or any shape with curved edges? How is that supposed to work?

3. Attach minimal versions of all the relevant files

This pattern is sometimes called the Cairo tiling. Here some previous posts on it

Initially I was starting this endeavor with standard-sized rectilinear surface inputs, but the end goal is to produce a script that can also accommodate for any variety of surface inputs - i.e. doubly curved surface inputs (or really any non-coplanar surface input), or any surface with a non-rectilinear perimeter (so yes, a circle or any shape with curved edges as an example).

These are great! Thank you so much for linking these articles. I’m working with the Weaverbird/Mesh+ script (the second one you linked), and my current focus now is determining how to make the script more flexible/able to accommodate for more surface inputs without needing to readjust the UV specifications each time.

Do you know of a way to bypass needing to specify the UV count when subdividing the surface input early in the script? If there was a way to subdivide the surface based on the desired target area/dimensions of each cell (so determining UV count based on size of cell, rather than the other way around), that would accomplish exactly what I’m looking for now. We basically want the facade tiling to look the same on all surface inputs.

I attached the PNG as a demonstration. The right geometry is what we want the facade composition to generally look like, while the geometry on the left is what happened when I input a folded polysurface (so two surfaces as an input, as I optimistically hoped the facade could be manipulated to fold around that corner) with completely different dimensions. Naturally, I know the left output looks quite different as I didn’t change any of the UV sliders or other settings (which are as shown in the Grasshopper window in the screenshot), but again our goal is to figure out how the script can apply the same facade qualities (size of cells, proportion to one another, etc.) to any surface input without needing to adjust those preliminary settings every time.

I know this is a niche & dense topic; you’ve already been a huge help and any additional suggestions you could offer are appreciated!