Understanding boolean operations

I would like to know, what I have to consider in order that boolean operations do not fail. I would be interested in the experiences of others doing boolean operations or insights of those who looked at the code.

Specific questions:

As far as I know, when doing boolean operations (package BRepAlgoAPI), the faces are meshed with triangles and then the intersection edges are calculated. If faces are very near to each other, there can be problems finding the intersection curves.

Is there a minimum distance faces should have, e.g. 1e-5?

How does the meshing work? Is there a fix accuracy or does it depend on the size of a face / the model?

Helpful pieces of information on boolean operations:
http://www.opencascade.org/org/forum/thread_18175/
http://www.opencascade.org/org/forum/thread_15003/

Attachments: 
m-aronsson's picture

I do not know how it works out today but in the past the problem child has been degenerate curves like poles on a sphere for example.

The distance tolerance is different depending on the model and you can set this yourself, each shape has it's own tolerance.

But yes you can run into tolerance problems when edges are close to each other.