Should BooleanSplit ever union output with the cutting device?

This isn’t a Boolean operation misunderstood or a previously-discussed issue involving coplanar surfaces, it’s a really unexpected result in which BooleanSplit adds a bonus Union operation that takes the intended output needed for future modeling use and gratuitously conducts BooleanUnion with the cutting object, which seems to have no explanation at all in the documentation for BooleanSplit.

Setting up the BooleanSplit like this,


it’s evident the cutting object is offset below the bottom plane of the target object and is wider than the target object.
After the BooleanSplit, selecting the cutting object also picks up the target object because now they’re the same object:

Nothing I’ve seen in the documentation suggests that BooleanSplit should ever be conducting a BooleanUnion or that users should ever expect to see a cutting object union-ed to the objects a user might try to make with BooleanSplit.

I’ll add that I’m using BooleanSplit because operations that make decisions about what objects to keep and throw away have not been behaving as I’d expect, so I thought I’d use a simple operation and make the decisions myself. The sample file with the objects and the output is here.
BooleanSplit Causing Union.3dm (300.4 KB)

Thanks in advance.
As a workaround, is there a quick way to separate the cutting object from the remaining parts of the target object so I can at least make use of the result when this happens, which seems distressingly common?

(Yes, there are threads about other Boolean operations acting strangely but they seem to end up discussing the finer points of surface orientation and remaking objects to get intended output; my concern is why I’m getting Union behavior from BooleanSplit, which I daresay nobody expects to union a cutting object to a target.)

Hello. The larger object is an open polysurface with normals pointing in the opposite direction to, I think, what you expect. BooleanSplit basically does an intersection and a difference. Given the normal directions, the result is correct. If you flip the large box before splitting, you’ll get what you expect.

Looking at the other objects in that layer in my original file, it seems there’s a lot of uncappable open polysurfaces I did not expect. I think there’s something I’m doing in extruding lines into planar surfaces and surfaces into solid objects that is leaving me with open polysurfaces. I don’t even know which 43 objects are the problems. To get through this project I’m going to rebuild every object on the layer, but I still have no idea how BooleanSplit can be generating a Union between any two objects, ever.

Is there any answer to that? If I have a weird object I might expect a failure, but not a behavior that seems contrary to the BooleanSplit command. And I’m not sure why the face orientation of an object should matter in a split: the location of the faces and not their direction should be driving where the splits occur, no?

Booleans on polysrfs are spatial operations. BooleanIntersection of two objects results in the boundary representation of the space the in inside both objects. Difference A-B is everything inside A but not inside B. Inside and outside are determined by the face normals. The normals point to the outside. With that in mind, Big box - Small box is what you are claiming is Big union Small.

Another way to think of it - When doing a boolean operation and one of the objects is open, the split up faces are kept or tossed as if the open thing was part of a larger closed thing with the same orientation. The attached file has your open long box as part of a solid. Subtract the white from the red to see which parts would have to be kept.
BooleanSplit InSolid.3dm (112.7 KB)

My problem seems to be mysteriously ending up with things I am sure should be solid objects and not open shapes based on the extrusions used to create them, but which turn out for some reason to be open. I’ll have to look up how to manipulate the orientation of faces to get more predictable results from Boolean operations, but I’m really puzzled how some of the objects I created with extrusion have ended up not being closed solids.

Lot to learn.

Thanks.

There are only two reasons why extrusions end up not being solid - either the curves used to make them are not planar or they are not closed… or both. (assuming that Solid=Yes in the command) So always check your inputs.

SelOpenPolySrf will find open polysurfaces. Use ShowEdges to see which edges are open.

Also, handy is to set up a display mode that shows backfaces in a distinctive color. When you have objects inside-out you will see them immediately.

And last:
https://wiki.mcneel.com/rhino/booleanfaq