Rows of gradient radius holes to fill planar surfaces

This project started in a different thread but soon took a different direction, having nothing to do with projecting curves onto breps or Python or attractor curves that affect circle radii.

It took awhile to get data trees straightened out to work with any planar shape. This version has a Value List to switch between three sources of geometry. The third one is “Custom” to handle arbitrary geometry, to be defined. As a demo ten triangles are supplied (two branches of five). Other choices are ten hexagons (two branches of five) and 56 parallelograms at arbitrary orientations from the other thread (two branches of 28).

There are sliders for ‘Min_R ’ and ‘Max_R(radius domain) and a slider for ‘Steps(rows) that must be adjusted depending on shape and size of the surfaces. A slider (one per branch) chooses a reference edge where rows of different radii begin. I added a ‘Reverse’ switch that inverts the rows because with triangles, there is no opposite edge to act as a reference.

SrfSplit is slow so should be disabled when exploring circle sizes, many holes and different shapes. Enable preview on the circles instead. 49.3 seconds for 56 panels (51,054 holes total, ~912 holes per panel), 2.8 seconds for 10 hexagons (5,430 holes total, 543 holes per hexagon) and 1.4 seconds for 10 triangles (rows reversed, 2,000 holes total, 200 per triangle).


circles_2024Oct28b.gh (63.0 KB)

This is less than half of the 56 parallelograms. zoomed in to see the holes.

2 Likes

I’ve made extensive modifications to this code based on geometry found in this thread:

More work is required to restore three sets of test geometry in the first post.




circles_2024Nov2b.gh (64.1 KB)

Because the 20 triangles in this version vary in size and shape, I decided to scale the circles to have the same number of rows in all surfaces. After that, some rows are culled if they are too short to have two or more circles.

P.S. SrfSplit is disabled in the red group labeled “SLOW(bottom right). Enable it only when you have a circle pattern you like.

2 Likes

Just for fun, I selected six polyhedra from code posted here:

And added them to the code posted above - no other changes!

Results are spectacular, all things considered.


circles_2024Nov2bb.gh (87.6 KB)

One of the issues at play is selection of a “base edge” (white group), where I sorted edges by the Z value of their edge mid-points, choosing the lowest edge. This was appropriate for the geometry used but that was a special case. Different methods for other geometry could be better.

P.S. I forgot to enable SrfSplit - all polyhedra (96 faces, 19544 holes) takes only 6.8 seconds.


:rofl: