]> OCCT Git - occt-copy.git/commitdiff
0026481: Incorrect result of BRepOffsetAPI_MakeOffset: excess hanging arcs in the...
authorjgv <jgv@opencascade.com>
Tue, 28 Jul 2015 12:03:22 +0000 (15:03 +0300)
committerjgv <jgv@opencascade.com>
Tue, 28 Jul 2015 12:03:22 +0000 (15:03 +0300)
src/BRepFill/BRepFill_OffsetWire.cxx

index 03dda88f6c436af2a930f622d455bf21ff79a00c..54e0845c9aaad1f8930edb8d952c7407689ba296 100755 (executable)
@@ -827,6 +827,24 @@ void BRepFill_OffsetWire::PerformWithBiLo
     }
   }
 
+  //Remove possible hanging arcs on vertices
+  if (myIsOpenResult && myJoinType == GeomAbs_Arc)
+  {
+    if (!myMap.IsEmpty() &&
+        myMap.FindKey(1).ShapeType() == TopAbs_VERTEX)
+    {
+      //myMap.RemoveFirst();
+      TopoDS_Shape LastShape = myMap.FindKey(myMap.Extent());
+      TopTools_ListOfShape LastList;
+      LastList.Append(myMap(myMap.Extent()));
+      myMap.RemoveLast();
+      if (!myMap.IsEmpty())
+        myMap.Substitute(1, LastShape, LastList);
+    }
+    if (!myMap.IsEmpty() &&
+        myMap.FindKey(myMap.Extent()).ShapeType() == TopAbs_VERTEX)
+      myMap.RemoveLast();
+  }
 
 #ifdef DRAW
   if (AffichEdge) {