Region Union Fail: It's always the donut!

Hi,
This is a problem I hit upon again and again…
When you want to create a Region union, you always have a problem with the ‘donuts’. whenever a region has a hole in it, it confuses the whole operation.

I simplified the example bellow with just a rectangle and a donut. The only solution I have found is to create a union with all the ‘external’ boundaries and then subtract the ‘internal’ ones.
The problem is that when you have a bunch of them, It becomes exponentially complicated.

For example: how would you go about unifying the selected curves in the image? Any plugins/ methods?

boolean.gh (10.9 KB)

1 Like

Desperate times call for desperate measures…
The only way I found was to create a solid and take a slice…
but there must be a smarter way!
Anyone?!?!

union.gh (13.2 KB)

Here’s a feature request that’s been around for a while for getting CurveBoolean over to GH… I added your post to the comments. I think it may help in this scenario but I am not sure how the result would be sorted.
https://mcneel.myjetbrains.com/youtrack/issue/RH-38746

If you don’t have too many complex collections of curves, I’d suggest baking them out and doing it with CurveBoolean directly in Rhino. I used combine regions = yes , delete input = yes and started with all regions to deselect the openings… took about 30 secs, but that may not be an option for you.

1 Like

Thanks for the reply!
Although I see that the top bar is missing a piece within the top circle… and 30 secs? the solid method took 2 secs.
For my actual model though which has about 60 shapes it takes minutes…
… so there is no plugin (?)…

yeah, I guess I missed a piece in my picking, just thought I’d offer it as a manual method. No, I don’t know of a plugin to suggest but hopefully we can get the command into GH to help in definitions. I like your idea of a slice in the meantime.

To me, that is the thing that definitely the clipper plugin can do…



union_re.gh (5.5 KB)

3 Likes

and to think that I had it installed…
Thanks Kim!