Boolean operations fail with this couple of closed objects

Hi there!..

Does anybody has an explanation on why any boolean operation fail to work in this couple of simple objects?

I solved the issue with long workaround (objectintersection + trim + join)

It is worth mentioning that this fail operation is something that happend to one student, And my long workaroung didn’t help to demonstrate that Rhino is very friendly :frowning:

Thank you very much for your attention

PIEZA.3dm (318.2 KB)

Tangency and edges problem…

for the upper rounded cylinder
_DivideAlongCreases
(split at Tangents = yes,
split at kinks = yes)
then _booleanDifference works here (mac, Version 8 (8.14.24317.14002, 2024-11-12))

thank you… for that workaround too… but the question actually is why is the reason of the failure of the boolean… I think there are no problems of tangency or edges… (being able to actually make without any problem a _Intersect or even that workaround… but not being able to make a boolean, is something I would like to understand the reason)

The short answer is that is a bug. The boolean operation is supposed to do exactly what you did manually.

A)That is not a very long workaround. Takes only a few seconds

B) You should be teaching your students to use trim and join before you teach them to do booleans. That way the student can understand what the boolean operation is doing (or in this case supposed to be doing). There are many situations where booleans will fail and there are many situations where users spend lots of wasted time setting things up for a boolean needlessly because they have no clue how booleans work.

Move one of the two objects up or down by a millimeter or whatever units you’re working with.

Does the boolean operation work now?

You’re right that this boolean should work. I opened an issue here. If you run Intersect on the two parts you get one open curve as a result. There’s a real small gap between the start/end about 5x document tolerance. Booleans are pretty sensitive to problems like that but I think in this case it’s something we can work around.

I just now opened your file and moved the lower cylinder 0.01 down. And the boolean union works.

I also think the union should work in the original position but the lower cylinder surface is coincident / tangent to the cylindrical part of the vertical cylinder. This often causes problems.

Thank you for the time looking at this… Hopefully the problem gets adressed by Mcneel. I’ll more careful with those “tangent coincidencies”

Thank you for the time looking at this, Hopefully the issue ill help to improve future revisions of booleans…

thank you for the confimation… it is a bug… and the advice… I agree too…

the complain is mostly adressed to mcneel, as this kind of simple fails affect the “affidability perception” on any new user.