0027391: BRepLib::EnsureNormalConsistency() raises exception in case of asynchronious...
authorisn <isn@opencascade.com>
Thu, 9 Jun 2016 14:30:26 +0000 (17:30 +0300)
committerbugmaster <bugmaster@opencascade.com>
Thu, 16 Jun 2016 09:21:02 +0000 (12:21 +0300)
additional check have been added to BRepLib::EnsureNormalConsistency() func.
Any edges with two adjacent faces will be skipped (while updating of their normals) if the number of discretization points (nodes) will be different for each of this faces on this edge.

test case

src/BRepLib/BRepLib.cxx
tests/bugs/modalg_6/bug27391 [new file with mode: 0644]

index 1bc4318..f891ab9 100644 (file)
@@ -1899,6 +1899,10 @@ Standard_Boolean BRepLib::
     TShort_Array1OfShortReal& aNormArr1 = aPT1->ChangeNormals();
     TShort_Array1OfShortReal& aNormArr2 = aPT2->ChangeNormals();
 
+    if (aPTEF1->Nodes().Lower() != aPTEF2->Nodes().Lower() || 
+        aPTEF1->Nodes().Upper() != aPTEF2->Nodes().Upper()) 
+      continue; 
+
     for(Standard_Integer anEdgNode = aPTEF1->Nodes().Lower();
                          anEdgNode <= aPTEF1->Nodes().Upper(); anEdgNode++)
     {
diff --git a/tests/bugs/modalg_6/bug27391 b/tests/bugs/modalg_6/bug27391
new file mode 100644 (file)
index 0000000..7b8905f
--- /dev/null
@@ -0,0 +1,10 @@
+puts "============"
+puts "OCC27391"
+puts "============"
+puts ""
+######################################################
+# BRepLib::EnsureNormalConsistency() raises exception in case of asynchronious PolygonOnTriangulation problem
+######################################################
+
+restore [locate_data_file bug27391_Ficomirrors_ExportBinMoldflow.brep] a
+correctnormals a