0028599: Replacement of old Boolean operations with new ones in BRepProj_Projection...
[occt.git] / src / BRepProj / BRepProj_Projection.cxx
index c401e6d..b08f085 100644 (file)
@@ -16,7 +16,7 @@
 #include <Bnd_Box.hxx>
 #include <BRep_Builder.hxx>
 #include <BRep_Tool.hxx>
-#include <BRepAlgo_Section.hxx>
+#include <BRepAlgoAPI_Section.hxx>
 #include <BRepBndLib.hxx>
 #include <BRepFill_Generator.hxx>
 #include <BRepLib_MakeEdge.hxx>
@@ -125,15 +125,17 @@ void BRepProj_Projection::BuildSection (const TopoDS_Shape& theShape,
   if ( aShape.IsNull() )
     throw Standard_ConstructionError(__FILE__": target shape has no faces");
 
-  // build section computing pcurves on the shape
-//  BRepAlgoAPI_Section aSectionTool (aShape, theTool, Standard_False);
-  BRepAlgo_Section aSectionTool (aShape, theTool, Standard_False);
-  aSectionTool.Approximation (Standard_True);
-  aSectionTool.ComputePCurveOn1 (Standard_True);
+  // build section computing p-curves on both shapes to get higher precision
+  BRepAlgoAPI_Section aSectionTool(aShape, theTool, Standard_False);
+  aSectionTool.Approximation(Standard_True);
+  aSectionTool.ComputePCurveOn1(Standard_True);
+  aSectionTool.ComputePCurveOn2(Standard_True);
+  // Use Oriented Bounding Boxes inside Booleans to speed up calculation of the section
+  aSectionTool.SetUseOBB(Standard_True);
   aSectionTool.Build();
 
   // check for successful work of the section tool
-  if (! aSectionTool.IsDone()) 
+  if (!aSectionTool.IsDone())
     return;
 
   // get edges of the result