Extruded Circle Packing from a surface

I tried to write a definition to contour a surface and create a ‘giants causeway’ with each contour packed with circles with different radii. It is admittedly a very clunky definition. Has anyone tried to do something similar? Have a play around with what i have written- it uses parts of the kangaroo examples that @DanielPiker published, and then some. I have also tried to run a galapagos solver on top of it to optimize it based on the difference between the sum of areas of the circles and the surface that they represent.

I havent yet found a way to make a more responsive version, and I feel that trying to limit the radius sets is part of the problem.

Terrazzo Heatmap 3.gh (181.3 KB)

Hi Aditya,
Can you summarise the aim?
I see your definition has many separate solver components inside clusters - it’s usually good to have only one solver component on the canvas with all the different goals feeding into it.

If the intended result is different regions, each filled with circles of a specific radius, perhaps something like this:

circlepack_regions_radii.gh (15.6 KB)


Hi @DanielPiker thanks for replying so quickly!
The aim is to contour a freeform nurbs surface and pack each set of contours of a surface with circles of a set radii. I want to then extrude the circles into cylinders to the ground plane.

Looks like @DanielPiker did the hardest part (SWEET!), the rest sounds relatively easy?
In R5, your file is missing Subtraction and without a readable screen shot of your code, I can’t fix it. Good luck, sounds interesting.

Im now trying to rework your definition, to sync the different radii and regions, but it doesnt work for regions within regions? maybe i could just create w synchronous lists of regions and radii instead of splitting a base surface with curves?

following up with larger rez images of the same def.

did you mean these subtraction components? this is actually to try and create a fitness criteria for galapagos to test.
I thought that it would help to minimize the difference between the sum of areas of all the circles and the region im trying to pack with them.

Even with a “magnifying glass”, it’s hard for me to see those components clearly, and it won’t show missing components inside of clusters anyway. Frankly, it’s too much work for me. Enjoy.

Regions within regions shouldn’t matter here - as long as you have one outer curve, it is making a surface from this outer one and splitting it with all the interior ones


Terrazzo Heatmap 4.gh (132.1 KB)
hi david, that made sense i think. and you can see it works fine when i use curves like in your original definition (except for the boundaries) but i wanted to try sync the lists of points with the regions and radii (according to the contour they reprsent while populating the regions as a factor of their area ) but it seems that the ‘pull to mesh’ component gets funny with the smallest region- I can’t understand why!