0026540: Errors in BRepOffsetAPI_MakeOffset: infinite loop in method FixHoles for...
authorjgv <jgv@opencascade.com>
Thu, 13 Aug 2015 08:15:22 +0000 (11:15 +0300)
committerski <ski@opencascade.com>
Thu, 13 Aug 2015 08:16:09 +0000 (11:16 +0300)
Test case for issue CR26540

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

index 9a3890d..e644d9d 100644 (file)
@@ -1590,7 +1590,7 @@ void BRepFill_OffsetWire::FixHoles()
     Pf = BRep_Tool::Pnt(Vf);
     Pl = BRep_Tool::Pnt(Vl);
     Standard_Real DistF = RealLast(), DistL = RealLast();
-    Standard_Integer IndexF = 1, IndexL = 1;
+    Standard_Integer IndexF = 0, IndexL = 0;
     Standard_Boolean IsFirstF = Standard_False, IsFirstL = Standard_False;
     for (Standard_Integer i = 2; i <= UnclosedWires.Length(); i++)
     {
@@ -1641,6 +1641,10 @@ void BRepFill_OffsetWire::FixHoles()
         IsFirstL = Standard_False;
       }
     }
+    if (DistF > MaxTol)
+      IndexF = 0;
+    if (DistL > MaxTol)
+      IndexL = 0;
     TopoDS_Wire theWire;
     TopoDS_Edge theEdge;
     TopoDS_Vertex theVertex;
index 36b76c5..e9a321d 100644 (file)
@@ -8,7 +8,7 @@ puts ""
 
 smallview
 
-restore [locate_data_file OCC26481-linesarc.brep] a
+restore [locate_data_file bug26296_linesarc.brep] a
 fit
 openoffset r a 4 10.
 fit
diff --git a/tests/bugs/modalg_6/bug26540 b/tests/bugs/modalg_6/bug26540
new file mode 100644 (file)
index 0000000..8f1925d
--- /dev/null
@@ -0,0 +1,16 @@
+puts "============"
+puts "OCC26540"
+puts "============"
+puts ""
+##################################
+# Errors in BRepOffsetAPI_MakeOffset: infinite loop in method FixHoles for closed results.
+##################################
+
+smallview
+
+restore [locate_data_file bug26296_linesarc.brep] a
+fit
+mkoffset result a 10 30
+fit
+
+set only_screen_axo 1