Boolean intersection and union not working properly

Hey
This gh file is supposed to create a seamless panel of interlocking s-shaped variable radius pipes, with an option of filleting the final intersections.
The boolean intersection that cuts the pipes to the panel size fails at times and works at others- I can’t figure why, but the bigger the scale the more it happens.
I searched the forum and found that maybe its a threshold issue common with boolean operations, so I added a move xy value, which helps at sometimes, can’t figure why at others it doesn’t.
the boolean union doesn’t work all the times either. I don’t know why this happens as well…

why is it happening? Am I missing something?
If it is an issue with booleans, is there a better workflow for this? (it has to be seamless, thats the big hassle in this file).

notes: I marked the problematic nodes red, and added 3 sets of numbers for example- one that works and one that doesn’t for each function. Also, the tasky nodes are disabed for convinience, and I put the whole file if you think there could be a better workflow alltogether.

seamless pipe panel.gh (51.5 KB)

thx so much! :upside_down_face:

As you must have noticed, slight movements of solids relative to each other can make the difference between success or failure of SUnion. Changing the ‘digits’ on these sliders and using values of 0.001 yields success.

move_xy

In my experience, it’s not a good idea to rename standard components, like one solid instead of SUnion.

1 Like

Thanx for the answer!

Its a bit cumbersome to say the least, and some results (especially the ones that I want) don’t seem to work in any changes.
I tried using galapagos to run through the slight movement sliders but that doesn’t solve the problem as well…

Your objects have self intersections and that doesn’t work well with boolean union without some extra care. If you don’t join the mirrored pipes but keep the S shapes separate, there are no self intersections.

By using the loop components from Anemone, you can create a boolean union of all parts, one by one.

I changed your clusters and added the loop in your file.

seamless pipe panel_mrtn.gh (300.2 KB)

Now with fillets… rather complicated and I’d probably do that in Rhino, unless there are a lot of variations

seamless pipe panel_mrtn_filleted.gh (311.2 KB)

Just because I was curious, I reduced the shape to one panel and Quad remeshed it to a SubD

Unfortunately the edge count is not yet optimized and the shape cannot be multiplied just like that.

Some additional geometry is required to get the same amount of edges top and bottom… I rebuilt the two borders which should have the same amount of edges on the SubD, extruded the rebuilt curves and createde a sold with the original panel. After Quad Remesh I deleted what’s not needed.

1 Like

thank you so much martin!

I probably wouldv’e never thought of looping that. That’s a smart workflow for other boolean troubleshoots as well, I’ll keep it in mind!

still going through your whole fillet addition… I don’t see the whole difference yet between my very simple naive fillet edge and your complex addition.

I found myself enjoying this code as well, the “seamless” part makes it a fun code to play with.

Oh, that subd action has made me swoon… that’s absolutely awsome

thx again!

Thanks. Is your part still a closed brep after filleting? I had some trouble with the two points going towards the inside… Hence I had to select the edges differently to be able to set different radii.

oh I see, yes, it was open brep

I’ll also check the subd option myself, alot cleaner and looks fun.

This is my first time posting and I’ve definetly enjoyed this so far, usually the questions were out there for me to find, this is actually the first time I’ve got stuck with no answers, and you answered the day after

1 Like