BooleanUnion Fails with Two Intersecting Closed Solid Polysurfaces

BooleanUnion is failing when given two intersecting closed solid polysurfaces.

BooleanUnionFail.3dm (86.0 KB)

Hi @mike15

So I believe your problem is down to a simple error.
The centre of the circle does not line up with the top of your cube, once I move it up, the Boolean Union works (it’s only out by under half a mm, might have to zoom in to see it).

Why does that matter? There is considerable overlap between the two solids; half the disk (well, nearly half has you have identified a slight misalignment) and probably 85% the rectangular solid .

Hello - the cylinders are coincident, moving one of them makes them not coincident and the Boolean then works - having coincident faces, other than planar ones, in the input objects, will generally fail. In this case the better way to go is to deal with curves to make the shape you want and extrude those:


1 Like

So the reason is happens isn’t a limitation of Rhino, but instead Rhino trying to protect your model from tolerances outside your range.

The gap is actually tiny, so small in fact that it falls out of the tolerances you can set for each project.

If you go into units, you can see the absolute tolerance which can be set for each project.
If you set it to the values I have then it Booleans without an problem (though I would never recommend going this low), like I said it’s user defined tolerances that Rhino is trying to protect against.

I hope this explanation helps.
@pascal I agree this is definitely a better way of making it :+1:

I can’t honestly say I understand the problem, but now I have actionable information and will move forward. Thanks.

@mike15 - For Booleans to work, there needs to be a clean curve(s) of intersection - what you’s use to trim the pieces if you did it ‘by hand’. When there are coincident faces (other than planar ones, which can be worked around) there is no clean curve of intersection - there will be too many, or too few, or they will be incomplete… and the Boolean brain can’t figure out how to cut up the faces. Running the Intersect command is a good first step in diagnosing Boolean failures.


@pascal With the objective (hope) of producing no curves, right? In my example, Intersect produced 4 curves, which tells me there is a problem (because the number of curves is > 0). Is this correct?

Hi Mike - no - you need to see curves from Intersect but they have to be ‘complete’ in that you could use them with the Trim or Split commands to do the Boolean ‘by hand’.

Here’s what I get from Intersect - pulled apart a little:

and these are the curves you’d need:


@pascal You’re saying that it should look like your bottom picture, yes? BTW, creating a closed curve and then extruding worked perfectly and the printer is printing the part now.

Yes, but that is unlikely when there are coincident surfaces and edges (other than planes) as in this case - I was trying to clarify why that is , but maybe muddied the waters instead…