]> OCCT Git - occt.git/commitdiff
Modeling - Improve handling of polygon parameters in NURBS conversion (#410)
authorPasukhin Dmitry <dpasukhi@opencascade.com>
Wed, 5 Mar 2025 15:48:41 +0000 (16:48 +0100)
committerGitHub <noreply@github.com>
Wed, 5 Mar 2025 15:48:41 +0000 (15:48 +0000)
src/BRepTools/BRepTools_NurbsConvertModification.cxx

index 57e4d9806daf6c8f52273d9d6ebabae024f72195..d2f47f8496f3060751b5164e333d0c5fd603ba91 100644 (file)
@@ -508,24 +508,25 @@ Standard_Boolean BRepTools_NurbsConvertModification::NewPolygon(const TopoDS_Edg
     return Standard_False;
   }
 
+  if (!thePoly->HasParameters())
+  {
+    return Standard_False;
+  }
   // update parameters of polygon
-  if (thePoly->HasParameters())
+  Standard_Real      aTol = BRep_Tool::Tolerance(theEdge);
+  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
   {
-    Standard_Real      aTol = BRep_Tool::Tolerance(theEdge);
-    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
-    {
-      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_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;
 }