Strange Boolean Difference failure behavior. What's wrong?

Using V7.

I have a simple element that I’m trying to cut into using a pipe. The pipe was formed from curves projected onto the element’s surface. It fails completely, though I found a weird way around it, which I’d prefer to avoid since it’s more work.

A. If I join all the curves, pipe them, and run BooleanDifference, it simply fails.
B. If I keep the 15 curves separate, pipe them individually, and run BooleanDifference with all the pipes selected, it fails.
C. If I keep the 15 curves separate, pipe them individually, run BooleanDifference with only 14 pipes, and then BooleanDifference with 1 remaining pipe, it works.

Any possible explanation for why this might be happening? Clearly options A or B would be the preferable route.

Boolean failure.3dm (10.0 MB)

if you run the Intersect command between the Pipe and the object it will find 3 curves which I think is the problem :

I made a couple of tests with no results about changing the surface seam of the pipes etc
what I did is to change the dimmensions to mm and then it worked fine. it could be a problem of tolerance. in your file was in Inches with 0.001 of absolute tolerance… too big maybe?

1 Like

Thanks Diego. I’m not totally following the role of tolerance here in the boolean operation. You’re saying increasing the value to a higher number (greater than the default) is the key? Do most people selectively change tolerances to sort of hack actions into working, or is there a better default I should be using in general?

when I changed the units to mm it scale the whole model by 25,4 that means the tolerance in Inches should be 0.00001 or even smaller value to be nearly the same as in mm but it could lead a heavier file size and slower workflow

Hello - in this case a tolerance of .0001 will help - the problem appears to be that there are surfaces in the polysurfaces that have edges of tolerance or less away from each other

which is messing up the intersector. it should work, I will add this to the pile.