Booleandifference fails to create internal void

I tried using the booleandifference command to make an internal void inside a solid and Rhino7 (7.10.21256.17001, 2021-09-13) fails the void creation, reporting “Objects do not intersect. Nothing done.”

Seems like a bug to me. Does anyone have any suggestions that I’m missing on how to make voids in solids?

That’s what Rhino calls a “non-manifold” object, it’s considered ‘illegal’ geometry, it’s a requirement for a solid to be an actual “solid” that encloses a volume that you could actually build. There are ways around it, but…what are you doing? A “hollow” NURBS object is just an object inside another object, there is no actual “stuff” inside the outer box that needs to be “removed.” In any real-world manufacturing scenario at some point the model will have a connection between the inside and outside. 3D printing doesn’t need an inner face, the slicer makes the wall thickness. The scenarios where this is actually needed are vanishingly rare.

1 Like

Hi this is a bit of a work around but you could make a tiny tube on your inside solid that passes through the outside solid. this pipe could be say 0.5 or 0.1mm diameter. that should make the Boolean Difference work.


if it’s for printing and you make it less than your layer height say 0.1 then you should get a sealed void on the inside.

only problem with that tiny of a tube is:
for sla, or a sintered metal or powder part- you will need to drain out uncured resin or powder trapped inside the box , I’d recommend making a bigger tube and filling it with super glue or bondo in post finishing. or even better print it in two halves and glue them together. You’ll be much happier with no sticky gunk trapped inside your part.

for a pla printer, the above will work fine-

1 Like

If it’s just for rendering you would mesh the internals and flip the normals on them to get it to render right. Otherwise…again it depends on what this is actually for.

HI - thanks for the feedback. I was trying to put a hole through a few other solids (magenta here) and then build a 1/8" thick walled surround (grey here) that connects the two holes. I built the void as a solid because the void has to be a precise size, then used the SOLID->OFFSET command to create a 1/8" larger solid, figuring I’d then BOOLEANDIFFERENCE the two to get the walls, but…no.

There are other ways and/or sequences to do this, sure, but it is easily accomplishable in Autocad (gasp) and since Rhino is SO MUCH BETTER in just about every way, I guess I expected it to work here, too, and was surprised that it doesn’t.

As seen in Autocad2018 - a solid with a void as a valid object.

1 Like

i think its an excuse to say hollow objects are not supported. they should be.

I agree.

If you’re going to be snarky like that…unlike autoCAD, Rhino is actually intended to be used for cutting steel. So such nonmanifold objects are “bad geometry.” If you’re doing specific kinds of FEA analysis where nonmanifold geometry is common, the NonmanifoldMerge command will let you make them.

1 Like

rhino can be used for whatever, this is about problem that boolean difference does not create hollow solid object. it should say that this operation will create nonmanifold solid which is troublesome do you want to continue. not just leave you without a shape you expect to be created using that operation.

to be clear rhino is a surface modeler, not a solid modeler.

It has no way to understand an internal hollow volume unless it’s connected to something else. if you take a paper cube and were able to suspend another paper cube inside without touching anything, this is what rhino sees in this scenario.

if you take a block of foam and hog out the center, this is what a solids program sees.

There is a fundamental difference between the two volumetric representations and one will never work like the other.

It is possible to represent a solid with an internal void using two closed BReps with one BRep designated internally as the exterior surface and the other as the interior surface. To add this to Rhino would presumably take a significant amount of coding. It would be good if this was added to the pile as a low priority item.

Hi -

Now on the list as RH-65961.
-wim