Rhino8 BooleanDifference surfaces not joined

rhino5

rhino8

n Rhino 8, BooleanDifference creates unmerged (split) faces instead of a single merged face. How can I make it create merged faces like Rhino 5?

BooleanDifference depends on normal direction.
You can check normals with the _dir command.

…is not recommended for open surfaces / polysurfaces.

instead - you can use
_split or _trim
or
_booleanSplit

BooleanOperation got some updates between Version 5 and 8 and 9…

use _booleanSplit and delete the unneeded part ?

hope this helps - cheers - tom

No, I’m very familiar with surface directions (Dir), so that isn’t the issue. As you can see, Rhino 5 performs the BooleanDifference while keeping the surface merged. However, In Rhino 8, the surfaces are not merged after BooleanDifference.

I uploaded a new video. In Rhino 8, the BooleanDifference creates a hole in the surface.

… do not use Booleandifference with open surfaces / polysurfaces.

there where several updates regarding solids and boolean operations between V5 and V8 - do not expect that a workflow that is not recommended stays the same.

Please post a file to go with the video.

Emulating your cube and surface here in R8, Boolean difference gives a closed polysurface, just like R5. I’m on 8.34.26195.14001, 2026-07-14 - are you on an older release? If you see an open polysurface in the current release, please post the originating geometry which causes it.

Regards
Jeremy

We already have the _Trim command to achieve a similar result. The whole point of BooleanDifference was that it performed the trim and automatically joined the resulting surfaces.

So why has this functionality suddenly been reduced to something that’s effectively no different from _Trim?

Is it because the cutting object is an open surface? I don’t think that explanation makes sense.

Please compare these two objects.

One result has a hole, while the other produces a properly joined surface.

The only difference is the size of the cutting object. When the cutting surface fits the target object exactly, BooleanDifference leaves a hole. However, when the cutting surface extends beyond the boundaries of the target object, the resulting surfaces are joined correctly.

This inconsistent behavior doesn’t seem intentional and suggests that the result depends solely on whether the cutting surface extends past the target object’s boundaries.

Please post a file.

Please post a file.

Please post a file.

Please post a file.