I'm using BRepAlgoAPI_Common to compute the common part of two TopoDS_Solids, which consists of some B-Spline-, planar and cylindrical surfaces created at runtime.
In a specific case, the Boolean operation fails although the geometries are well prepared (as in other cases which work well).
I tried to analyze it in DRAW with bop and bopcommon commands, but the Boolean operation doesn't fail there. So I tried the code of bop and bopcommon (they use BOPAlgo_PaveFiller and BOPAlgo_BOP) in my application, ending again in a failing Boolean operation (resulting shape is an empty TopoDS_Compound).
Now the strange part comes. When I save and load one of the TopoDS_Solids (using BRepTools::Write and BRepTools::Read) before the Boolean operation, the computation works as expected.
Why does it work after I/O the shape into/from a BREP-file?
My suggestion is, that some shape parameters are slightly different after I/O causing the Boolean operation not to fail anymore.
Does anybody has some thoughts on that?