Boolean Subtract Not Behaving Well

In attempting to work some design effort, I wanted to create a 3D object within another and subtract to leave a cavity. For the attached example, these are two solid spheroids. As shown in the example on the left, if the spheroid in layer 2 is completely within the spheroid of layer 3, boolean subtract refuses to remove spheroid 2 saying that the two objects do not intersect despite the fact the spheroid in layer 2 is completely encapsulated by the spheroid in layer 3. If I move the spheroid in layer 2 in the X axis as shown on the right, the boolean subtract function happily removes the part of the spheroid from layer 3 that intersects from layer 2. What am I missing here?
Subtract - What is Going On.3dm (1016.3 KB)

Hi Mark,

This is an old chestnut and there have been many such queries on discourse. Rhino is basically a surface modeller rather than a solid modeller, so when it talks about intersections they are surface intersections. For boolean operations to work you need surfaces to intersect.

There are two solutions. The older one involves creating a microscopically thin tube between the inner and outer surfaces. This then introduces intersections that allow the boolean to work but, provided the tube is small enough the openings should not appear in renders.

The newer solution involves the use of the NonmanifoldMerge command which allows you to boolean non-intersecting objects. Note that this may cause downstream problems so is best used late in the design process.

HTH
Jeremy

EDIT: Here are examples of each method - I’ve subsequently taken a chunk out of each to reveal the hollow void.


Subtract - What is Going On 001.3dm (125.3 KB)

1 Like

Thanks! That was very helpful