0026481: Incorrect result of BRepOffsetAPI_MakeOffset: excess hanging arcs in the...
authorjgv <jgv@opencascade.com>
Wed, 29 Jul 2015 13:10:53 +0000 (16:10 +0300)
committerbugmaster <bugmaster@opencascade.com>
Wed, 29 Jul 2015 13:11:56 +0000 (16:11 +0300)
Test-case for issue #26481

src/BRepFill/BRepFill_OffsetWire.cxx
tests/bugs/modalg_6/bug26481 [new file with mode: 0644]

index 18acc6f..9a3890d 100644 (file)
@@ -811,6 +811,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 OCCT_DEBUG
 #ifdef DRAW
diff --git a/tests/bugs/modalg_6/bug26481 b/tests/bugs/modalg_6/bug26481
new file mode 100644 (file)
index 0000000..36b76c5
--- /dev/null
@@ -0,0 +1,16 @@
+puts "========"
+puts "OCC26481"
+puts "========"
+puts ""
+###################################################################################################################
+# Incorrect result of BRepOffsetAPI_MakeOffset: excess hanging arcs in the open result with join type GeomAbs_Arc
+###################################################################################################################
+
+smallview
+
+restore [locate_data_file OCC26481-linesarc.brep] a
+fit
+openoffset r a 4 10.
+fit
+
+set only_screen_axo 1