]> OCCT Git - occt.git/commitdiff
Do not rebuild wire if there are no necessary changes
authorjfa <jfa@opencascade.com>
Mon, 24 Apr 2023 15:45:03 +0000 (16:45 +0100)
committerjfa <jfa@opencascade.com>
Thu, 4 Jan 2024 18:24:33 +0000 (18:24 +0000)
src/BRepLib/BRepLib_MakeFace.cxx

index 632372c33bb1509de82fa1cfa13cbe652be1e9ed..2e3563b5a36191ab3ba7417fcec13712e713009c 100644 (file)
@@ -273,18 +273,26 @@ BRepLib_MakeFace::BRepLib_MakeFace(const TopoDS_Wire& W,
     aB.MakeWire (aW);
 
     TopoDS_Wire aWForw = W;
+    Standard_Boolean hasDegenerated = Standard_False;
     aWForw.Orientation (TopAbs_FORWARD);
     TopoDS_Iterator anIter (aWForw);
     for (; anIter.More(); anIter.Next())
     {
       const TopoDS_Edge& aE = TopoDS::Edge (anIter.Value());
 
-      if (!BRep_Tool::Degenerated (aE))
+      if (BRep_Tool::Degenerated (aE))
+        hasDegenerated = Standard_True;
+      else
         aB.Add (aW, aE);
     }
 
-    aW.Orientation (W.Orientation()); // return to original orient
-    aW.Closed (W.Closed());
+    if (hasDegenerated) {
+      aW.Orientation (W.Orientation()); // return to original orient
+      aW.Closed (W.Closed());
+    }
+    else {
+      aW = W;
+    }
   }
   else
   {