Unexpected Boolean Union result in V8

I am getting unexpected Boolean results in V8. In the attached, V7 and V8 behave very differently, with (in my opinion) V7 giving the correct result. In V7 BooleanUnion will trim and join these pieces together, respecting the surface direction of the open polysurfs to give the correct closed result. In V8, BooleanUnion results in some odd over aggressive BooleanDifference, deleting the open polysurf and trimming out the closed polysurf at the intersection. V7 seems much more predictable and correct and I would like to see V8 behave the same.

Thanks,
Sam
OddBU.3dm (214.4 KB)

Hi Sam - it all seems correct here in V8 (later build than yours though) Can you post the bad result? Just want to make sure I know what I am looking for)

-Pascal

Thanks for taking a look. This is what I am seeing over here on 8.4.24023.15001

Sam

OddBU_Result.3dm (298.6 KB)

OK- thanks - as far as I can see that is definitely fixed in 8.5.

-Pascal

1 Like

I’ve been observing unexpected boolean difference behavior for some time and just did a test comparing v7 to v8 to confirm. Create two objects that intersect each other. Boolean difference one from the other without Delete Input The result in V8 is the difference happens and the resulting object total is 3 objects as it maintains the original object, creates the boolean difference object, plus the object used as the ‘cutter’. Observe that the same procedure in v7, the result is two objects: the boolean difference result object plus the object used as the ‘cutter’. Is this a bug in V8 or expected behavior?

Hi John- V7 seems incorrect to me… the inputs are both objects, so these should be there when the command ends.

-Pascal

Okay, I was thinking just the opposite. What is important is the result, not preserving the original object being differenced. The delete option applies to the cutter. Sometimes it’s desirable keep the cutter, sometimes it’s not. I think it’s interesting that the behavior has changed.

Hi John - V8 adds an option for the cutters if DeleteInput = Yes.
-Pascal

Okay, I understand now. Thanks!