0025333: Result wires obtained after TestHarness command "connectedges" contains...
authorgka <gka@opencascade.com>
Thu, 9 Oct 2014 12:03:27 +0000 (16:03 +0400)
committerbugmaster <bugmaster@opencascade.com>
Thu, 9 Oct 2014 12:04:15 +0000 (16:04 +0400)
Fix contains protection in order to avoid addition in result wires INTERNAL or EXTERNAL edges during connecting edges in wires.

Test case for issue #25333

src/ShapeAnalysis/ShapeAnalysis_FreeBounds.cxx
tests/bugs/heal/bug25333 [new file with mode: 0644]

index 6ed060a..5ebf9f1 100644 (file)
@@ -286,6 +286,8 @@ ShapeAnalysis_FreeBounds::ShapeAnalysis_FreeBounds(const TopoDS_Shape& shape,
       TopoDS_Wire aCurW = TopoDS::Wire (arrwires->Value (lwire));
       Handle(ShapeExtend_WireData) acurwd = new 
         ShapeExtend_WireData ( TopoDS::Wire (arrwires->Value (lwire)), Standard_True, isUsedManifoldMode);
+      if( !acurwd->NbEdges())
+        continue;
       sewd->Add (acurwd, (tail ? 0 : 1));
     }
     else
@@ -369,21 +371,22 @@ ShapeAnalysis_FreeBounds::ShapeAnalysis_FreeBounds(const TopoDS_Shape& shape,
       // Recherche de la premier edge non traitee pour un autre wire.
       //Searching for first edge for next wire
       lwire = -1;
-      for (/*Standard_Integer*/ i = 1 ; i <= arrwires->Length() && lwire == -1; i++)
+      for (/*Standard_Integer*/ i = 1 ; i <= arrwires->Length(); i++)
       {
         if (!aSel.ContWire(i))
         {
           lwire = i; //szv#4:S4163:12Mar99 optimized
+          sewd->Add (TopoDS::Wire (arrwires->Value (lwire)));
+          aSel.LoadList(lwire);
+
+          if (sewd->NbEdges() > 0)
+            break;
+          sewd->Clear();
         }
       }
 
       if (lwire == -1)
         done = 1;
-      else
-      {
-        sewd->Add (TopoDS::Wire (arrwires->Value (lwire)));
-        aSel.LoadList(lwire);
-      }
     }
   }
 
diff --git a/tests/bugs/heal/bug25333 b/tests/bugs/heal/bug25333
new file mode 100644 (file)
index 0000000..58f28fe
--- /dev/null
@@ -0,0 +1,31 @@
+puts "========"
+puts "OCC25333"
+puts "========"
+puts ""
+##########################################################################################
+# Result wires obtained after TestHarness command "connectedges" contains internal edges
+##########################################################################################
+
+restore [locate_data_file bug25318_TheShapeTotal.brep] a
+connectedges r a
+
+set WireSet [explode r]
+set ii 0
+set IsFixed "TRUE"
+while {$ii != [llength $WireSet]} {
+  set EdgeSet [explode [lindex $WireSet $ii]]
+  set iii 0
+  while {$iii != [llength $EdgeSet]} {
+    set EdgeInfo [whatis [lindex $EdgeSet $iii]]
+    if {[lindex $EdgeInfo 5] == "INTERNAL"} {
+      set IsFixed "FALSE"
+    }
+    set iii [expr $iii + 1]
+  }
+  set ii [expr $ii + 1]
+}
+
+if {$IsFixed == "FALSE"} {
+  puts "ERROR: OCC25333 is reproduced"
+  puts "       Internal edge is detected"
+}