]> OCCT Git - occt-copy.git/commitdiff
0030292: Modeling Algorithms - BRepBndLib should avoid using Poly_Polygon3D when... CR30292
authorkgv <kgv@opencascade.com>
Thu, 25 Oct 2018 07:13:44 +0000 (10:13 +0300)
committerkgv <kgv@opencascade.com>
Thu, 25 Oct 2018 07:17:53 +0000 (10:17 +0300)
src/BRepBndLib/BRepBndLib.cxx

index 6aa8c2dd49845827fd3030ee4f6178010b14e307..f0eac8a3ef31f5473a1164fd6798fdfb642f7971 100644 (file)
@@ -136,6 +136,13 @@ void BRepBndLib::Add(const TopoDS_Shape& S, Bnd_Box& B, Standard_Boolean useTria
   for (ex.Init(S,TopAbs_EDGE,TopAbs_FACE); ex.More(); ex.Next())
   {
     const TopoDS_Edge& E = TopoDS::Edge(ex.Current());
+    if (!useTriangulation && BRep_Tool::IsGeometric(E))
+    {
+      BC.Initialize(E);
+      BndLib_Add3dCurve::Add(BC, BRep_Tool::Tolerance(E), B);
+      continue;
+    }
+
     Handle(Poly_Polygon3D) P3d = BRep_Tool::Polygon3D(E, l);
     if (!P3d.IsNull())
     {
@@ -152,7 +159,7 @@ void BRepBndLib::Add(const TopoDS_Shape& S, Bnd_Box& B, Standard_Boolean useTria
     else
     {
       BRep_Tool::PolygonOnTriangulation(E, Poly, T, l);
-      if (useTriangulation && !Poly.IsNull())
+      if (!Poly.IsNull())
       {
         const TColStd_Array1OfInteger& Indices = Poly->Nodes();
         const TColgp_Array1OfPnt& Nodes = T->Nodes();