Bug: Boolean Difference creates weird Boolean Union instead

i have a planar surface and want to punch a hole into it with the rod. instead it creates some weird union. i believe i have noticed that quite a long time ago but i never made it aware enough to actually post it.

i can not believe that is an expected behaviour, so i assume its a bug. for testing purposes i created a random planar surface and an extruded circle, so that seems to happen on any random geometry. for display purpose i removed the rod in the green and red solution since the boolean difference was not set to delete.

If your cylinder is open, then it might be inside-out. If that’s the case, this is expected behavior and not a bug.

See: Boolean Frequently Asked Questions [McNeel Wiki]
(The last section on open objects)

nope, that would make sense but it is a closed polysurface.

i dislike cluttering the space but whatever here the file, but that really is just some random example. i had this issue on a different file so i recreated a simple model to be sure that its not just me.

Boolean Difference.3dm (3.3 MB)

Hello - Boolean operations are not trims - Booleans work by looking at the direction of the normals of the inputs - parts that are facing inward are considered ‘inside’. Imagine the disc is a cylinder with the top at the face you have there - the result would be a hole drilled into the cylinder, that is the lower part of the rod as in your result.


that does not make sense i am afraid… i understand now that the current command does not want me to do any boolean difference on a surface, but then this line is leading everybody into a weird rabbit hole and is just not correct.

Bildschirmfoto 2022-12-16 um 18.52.45

subtract from any surface(s) is not possible then so either the command should just work or be communicated differently.

or what am i expecting wrong here?

Hello- Flip the disc and repeat the Boolean operation with the same input - see what happens? Or, even better - extrude your disc to make a thin but solid object - then repeat the Boolean.


I think Boolean operations - or constructive solid geometry in general - is only unambiguously defined for closed surfaces and closed polysurfaces. Like others pointed out, the surface normal orientation is important. That rhino allows you to use open surfaces as input is a bit odd and can lead to unexpected outcomes.

the same thing happens just the other way according to the normal direction?

i dont need a closed polysurface, the command asks for surfaces or polysurfaces as input geometry to abstract from

would it not make sense to have the command work as expected? meaning that i can simply use a single surface to boolean from just the same?

after pondering on that my brain activated, ok a single surface can actually be a closed object… i just dont understand why something which could be simple and intuitive must be so complicated and elaborate and too ambiguously communicated in that case.

then it shall work as trim under the hood in such cases… to put that in one succinct short line → currently its more involving to cut out hole into a surface with some solid as it is cutting a solid from a solid. does not have to be imho.

Hello- the comand works exactly as expected, it cannot work as you suggest. Use Trim to accomplish what you need here.


how shall i trim it off? without knotting myself into pieces? if you show me a method which works exactly as simple as using booleans i would be happy.

its a simple logic that somebody who can program can maybe accomplish, i am not expecting anything else other than using commands intuitively.

Split the disc with the cylinder.
Window select the entire cylinder and Delete. It will take the small disc part inside with it.

If you want to keep the cylinder, use instead SelLast, and ctrl/cmd pick the disc to deselect it and Delete.


Hello- it is not a matter of programming, it is a matter of what the command is designed to do - it is just not designed to do what Trim or Split does - it accomplishes something else. It would be possible to block Booleans from allowing any open input - that would certainly remove your confusion but would be a serious crippling of the commands.


1 Like

that is clear, but now imagine you have a couple more say 100 cylinders on a more complex surface? have fun windowselecting that… even when you use alt to avoid intercepting surfaces that might not be a fun thing to accomplish.

open single surfaces? no that would be ok, if the command is not intended to trim them then why confusing the people with letting them select it when all it does is some weird boolean union instead.

other software does not limit itself to closed objects but also includes open geometry

it is mesh based to be fair, but then again its just what one wishes to design it for. having a boolean working on surfaces either makes sense to me by all means.

One more try - what result would you expect to get from BooleanDifference in this case - 1, or 2, or?



Group the cylinders
Split the surface with them all
Ctrl-deselect the part of the surface to remain
Delete group if desired

I’d say there is a case to be made for some ‘TrimInside’ sort of tool but that is not a Boolean operation.
RH-72022 TrimInside


I’d agree.

Chuck wants to call it Chomp. I kind of agree,



because Rhino thinks that it is creating solids and i am trained to believe it i would expect nr2. and in this case i would also prefer this choice.

on a single open surface i would definitely not want to have nr2 when all i want is a hole and not an additional build up of geometry around it.

sounds good, i´d take that either, not to chomp out of the window.

Yes but, these are open -


what should happen? What if the open box were an open hemisphere? Or a very nearly closed sphere? How does a Boolean tool decide what you want from the operation?