Note that I disabled Boundary at the end because it’s rather slow. It’s more fun to play with the ‘Seed’ and ‘Count’ slider inputs to PopGeo when the model is fast.
Thank you again. I reconstructed your definition to trace your logic and it works perfectly.
I have two other questions –
I would like to apply this to a curved surface. I tried replacing the ‘Circle’ elements with ‘CircleCNR’ to find the surface normal; it worked on the original surface (it oriented them vertically) but had some problems with the curved one (photo below).
If I wanted to control the attractor points, rather than create random ones, do you have any suggestions? I know you recommended ‘PopGeo’ to create multiple points, but in this case it will be important to control the points of greatest material density.
I reduced the “resolution” (grid point count) because this is SLOW and might not work at all with thousands of holes. Even so, this took nearly ten minutes, so I disabled the yellow group on the attached file:
The split is very slow because that method uses all the cutters as once - it is like surface.Face.Split(listOfCutters, splitTolerance); So it evaluates all the cutters and makes some split.
I have found in a lot of cases that just using anemone to split with one splitter at a time really improves the performance. So keep looping the next cutter with the previously cut surface.
Here with Anemone fast loop. 75 seconds to finish. Without Anemone, I am still here waiting going on 8 minutes now… @DavidRutten can split be improved for Gh2? It’s just one of those things most everybody needs.
It’s not a Grasshopper thing, Split (like almost all geometric operations short of Delaunay, Voronoi and Bi-Arcs) are a Rhino thing. I can put it on the list for Future Rhino, but it’ll carry more weight if users request this instead of me.
I tried to translate that to C#, but it doesnt work.I think I need to feed everytime the surface back in?
Not for comparing splitting time, I just see it as exercise
In order to keep the original patterns, everything suggested took entirely too long or didn’t complete at all. I ended up adding a ‘Surface’ component to either ‘Cull’ or ‘CircleCNR’, baking that and using it to Split the original surface in Rhino. It may sound heretical but it was the fastest way to see the result.
Pull still took too long, especially in keeping the original “resolution” of UV count and the attractor points. I took output of ‘CircleCNR’ and converted it to a surface, and baked that to split the surface in Rhino. A couple more steps but took only a few minutes -
OK, I want to get this straight because it’s really good to know. I’ve replicated your steps and have some comments.
You don’t need the Srf param at the end, you can bake the circles and use them as the “cutters” in the Rhino “Split” command.
Unless you use Pull, your method works only on flat surfaces so you don’t need Circle CNR, as long as you know the plane being used for the flat surface, which in this case is XZ. Instead of this:
You could do this:
After baking the circles (cutters), you split the flat surface in Rhino (3388 holes in ~45 seconds?) and then turn the flat holed surface into a wavy holed surface using the Rhino ‘Flow’ command (which requires that you draw a “Base curve” line along the bottom edge of the flat surface).
Thanks, this is very good to know. What is so deeply wrong with GH SrfSplit that it can’t handle that many “cutters” just as well as Rhino??? (a rhetorical question for you, a valid one for @DavidRutten)