]> OCCT Git - occt.git/commitdiff
Modeling - NURB Convert fix for degenerated #295
authordpasukhi <dpasukhi@opencascade.com>
Tue, 28 Jan 2025 10:41:23 +0000 (10:41 +0000)
committerdpasukhi <dpasukhi@opencascade.com>
Tue, 28 Jan 2025 10:41:23 +0000 (10:41 +0000)
Fix logic for processing degenerated edges in NewPolygon function

src/BRepTools/BRepTools_NurbsConvertModification.cxx

index 433727a0d5e7133b195d54d7cf7a61306cf91300..57e4d9806daf6c8f52273d9d6ebabae024f72195 100644 (file)
@@ -515,15 +515,16 @@ Standard_Boolean BRepTools_NurbsConvertModification::NewPolygon(const TopoDS_Edg
     Standard_Real      aFirst, aLast;
     Handle(Geom_Curve) aCurve    = BRep_Tool::Curve(theEdge, aFirst, aLast);
     Handle(Geom_Curve) aNewCurve = newCurve(myMap, theEdge, aFirst, aLast);
-    if (!aCurve.IsNull() && !aNewCurve.IsNull()) // skip processing degenerated edges
+    if (aCurve.IsNull() || aNewCurve.IsNull()) // skip processing degenerated edges
     {
-      TColStd_Array1OfReal& aParams = thePoly->ChangeParameters();
-      for (Standard_Integer anInd = aParams.Lower(); anInd <= aParams.Upper(); ++anInd)
-      {
-        Standard_Real& aParam = aParams(anInd);
-        gp_Pnt         aPoint = aCurve->Value(aParam);
-        newParameter(aPoint, aNewCurve, aFirst, aLast, aTol, aParam);
-      }
+      return Standard_False;
+    }
+    TColStd_Array1OfReal& aParams = thePoly->ChangeParameters();
+    for (Standard_Integer anInd = aParams.Lower(); anInd <= aParams.Upper(); ++anInd)
+    {
+      Standard_Real& aParam = aParams(anInd);
+      gp_Pnt         aPoint = aCurve->Value(aParam);
+      newParameter(aPoint, aNewCurve, aFirst, aLast, aTol, aParam);
     }
   }
   return Standard_True;