I want to select and delete the large circle curves that intersect or contain the small circle curves. I have tried some methods but still can’t solve the problem.
圆环雕塑二.gh (437.7 KB)
I want to select and delete the large circle curves that intersect or contain the small circle curves. I have tried some methods but still can’t solve the problem.
Hi,
You can find the small circle closest to each big circle and then remove the big circle if there is an intersection between them.
圆环雕塑二_1.gh (438.7 KB)
You will have to Region Intersection the smaller circles against the big circles to eliminate the circles inside the larger circles. Or it doesn’t matter, depending on what the circles do. Like, if you’re trying to cut holes in the surface.
Circles are not in the same plane so the Region Intersection component does not work.
Also if they were in the same plane this would work slower than the other option.
Doesn’t mean you couldn’t project the circles onto a plane defined by the line between their centers and a normal to the centerline of the tube. Even slower, I know, but there is no guarantee that only the closest smaller circle is the only circle that intersects a larger circle and smaller circles inside bigger circles will still not be found… It’s as you well point out a balance between efficiency and a good result.
Maybe easier would be if the circles were defined on a planar surface that gets mapped to tubing of the twisted torus.
Since the diameters of the small circles are standard (5), we just need to find the nearest small circle. If they were different diameters, you are right, even if they did not intersect the nearest small circle, it would be necessary to consider the possibility of intersecting the next closest circles.But that is not the case at the moment.
Possible
I just generally don’t understand the problem. Like why Cull Duplicates isn’t used again on the set of 5 and 2.5 radius circles to eliminate overlapping circles.
In the previous script I overlooked the circles that do not intersect but are inside the big circle. I fixed this in the script below.
圆环雕塑二_2.gh (439.6 KB)
you can also use Distance and do things very fast, just by knowing Circle center points and Circle Radii, you can calculate almost anything
the three possible scenarios are the following:
scenario A is the only one in which you are happy, B and C are tangent and intersecting/contained
if you cull-out all the Centers of small Circles for which the Distance to the closest BIG Circle Center is smaller or equal to the sum of their radii, you should be fine
Calculating the Distance of small Circles just to the closest BIG Circle is enough and Pull Point (Closest Only) does the trick for us:
圆环雕塑二_Re.gh (439.4 KB)
I think it’s the fastest and most logical way.
The merged “BIG CIRCLES” have intersecting circles still. But you can run that through Cull Duplicates with the tolerance set to double the radius before continuing on to the assumed smaller circles… If we assume that the “BIG CIRCLES” are supposed to have the same radius size? I don’t know. This all is working on the assumption we know which set has which order of circle size.
oh, is that part of the problem? I thought it was just between big and small circles, not within bigs and bigs
I don’t know. I would have tried to solve it to the degree that you did. It’s just a caveat.
Thanks to hesro for solving my confusion
Thanks to inno for solving my problem. My previous idea was to solve it in the same way as you did, but there were some problems when executing it. It turned out that I did not turn on the “closest Only” button in the “Pull Point” function.