Divide surface by equal distance

i have a loft surface i need to divide by equal distances based on proximity to adjacent isocurves, so i can populate it with fixed dimension boxes. Standard UV extraction doesn’t do it, as can be seen in image below, where box sometimes overlap, when at other parts there is too much distance between them. See image below with blue parts overlapping, red is more distance between them. I’ve been try all sort of alternative, but kinda stuck how to best approach this.

even_divide_srf.gh (134.2 KB)

Given related topics on this discourse, i tried using tools from plugin Paneling Tools, but ‘Surface Distance’ node only give me partial points, so cannot check the result (probably using it wrong). Also mentioned by someone to use Pufferfish RebuildSurface but results was identical as my loft

I attach file, how someone can have a look and guide me in the right direction, been stuck on this for way too long :wink:

1 Like

I doubt what you’re trying to achieve is geometrically possible (if i understood what you’re after correctly)

Essentially i need the spacing between the iso curves to be somewhat more similar ten now (the blue lines).

Possible a logic can be thought of using Galapagos, but even that doesn’t seem trivial.

1 Like

What about this? It is just an idea, possible to make it a lot more optimized

even_divide_srf.gh (124.9 KB)

2 Likes

Maybe @rajaa you can suggest a workflow on this specific type of populating a loft surfaces width fixed sized objects using Paneling Tools?

tried these grids, but none of them seems to be the right pick

PS, this surface geometry cannot be changed, part of solar shape derived model

even_divide_srf Edited v0.gh (266.9 KB)

Find the component in Flexibility

1 Like

thanks @Quan_Li , @dfytz1 for both your inputs. learned quite a few new things today !

@Quan_Li

i was too quick to reply, I optimistically just looked at the distance numbers, which indeed solve my question. But it seems it was the wrong question to ask, as when i orient the geometry, you can see the mapping is still not there, when i orient the boxes to the new iso curves. They still overlap or have spacings. So it seems we need to a another curve to divide, or use the frame? I am breaking my head around this, seems so trivial.

PS, with native nodes i get same result, no need for the Flexibility node.

even_divide_srf Edited v1.gh (119.9 KB)

1 Like

Being agnostic towards a working solution, might a Kangeroo-based implementation be worth a shot? So instead of cutting the surface analytically, what if being thread as a combo of RigidBody and Solid collisions, with the surface as constraint.

before diving in (never played with Ka2), what is your take on this approach? Seems so trivial to just pack object on a loft, especially since top and bottom edge have same length. Me vs GH continues…

I already told you its geometrically impossible. You will not get ISOCURVES that can fit boxes that will NOT intersect with each other. Look at my solution, it solves your issue but does not utilise surface isocurves. You can map your boxes to sliced surfaces my solution produces

1 Like

thanks, and let me look at your script with a fresh perspective. Maybe i need to reevaulate my approach. The ‘need’ came out simplified future production step

You may give it a try with OffsetOnSrf, and for your reference.

OffsetOnSrf Grasshopper Online Document

OffsetOnSrf.gh (113.6 KB)

1 Like

With some vibe coding i was able to make a iterative loop that gave me a result that is good enough. Indeed a perfect alignment could not be achieved with this particular surface.

This approach treats the surface isocurves as a dynamic system that “relaxes” into an equidistant state through iterative refinement. The script evaluates a point (mid) on each isocurve, pulls that point to the adjacent curve to measure the shortest 3D distance, and uses a mass addition of all lengths to establish a target average. Then compare each gap to this average: gaps that are too wide cause the curve to nudge closer, while narrow gaps push it away.

equidistant_Isocurve_optimization_.gh (132.6 KB)

1 Like

that is an interesting/creative approach, in 15 years of using GH, never used Offset on Srf :hushed_face: .. and actually pretty elegant to be left with a single misfit i can potentially use to my advantage, instead of incremental ‘misfits’ . Thanks, food for thought