BRepAlgoAPI_Common::SectionEdges() changed behavior


I observed a changed behavior of the BRepAlgoAPI_Common operation after upgrading from 6.5.2 to 6.7.1:

Suppose two unit boxes touching each other with a single face:

TopoDS_Solid box1 = BRepPrimAPI_MakeBox(1.0,1.0,1.0);
gp_Pnt pnt(0.0, -1.0, 0.0);
TopoDS_Solid box2 = BRepPrimAPI_MakeBox(pnt, 1.0,1.0,1.0);

Then build their intersection with the BRepAlgoAPI_Common:

BRepAlgoAPI_Common common(box1, box2);
TopoDS_Shape commonShape = common.Shape();

Resulting commonShape is empty. My 1st question is: Why is it empty? I would expect that the result will consist of single face that the boxes touch each other. Anyway this was the same even in 6.5.2 so no changed behavior so far.

But in my code I need to check even such kind of intersections so I used for this case the call:


that in such cases returned the edges of the touching face (in 6.5.2). But this behavior is gone in 6.7.1 and SectionEdges() returns empty list too. Even the BRepAlgoAPI_Section(box1, box2) builds empty shape. So my second question is: Is there any suggested way of checking whether two shapes has a common face in 6.7.1? Or in more general: Way of checking intersection "type" of two shapes - i.e. none, touch, partial (one shape contains part of the other), full (one shape contains the whole other shape)?

Please help me, any hints/suggestions?


Forum supervisor's picture

Dear Petr,
First of all the BO algorithm previously implemented in packages BOP, BooleanOperations and BOPTools (ver.6.5.2) has been completely refactored to provide a more stable performance and set the basis for future improvements (see OCCT 6.6.0 Release Notes). The public API has not been affected.
If the problem is critical for you I can offer you our professional support services (you may contact us via the Contact Form
We will try to find a solution/workaround acceptable for you.
Training and e-learning courses are also at your disposal -

Best regards