0029149: BRepMesh produces invalid mesh on the bound of adjacent faces IR-2018-11-30
authornbv <nbv@opencascade.com>
Thu, 15 Nov 2018 09:00:58 +0000 (12:00 +0300)
committerapn <apn@opencascade.com>
Fri, 30 Nov 2018 15:49:27 +0000 (18:49 +0300)
1. Test case for the issue has been created. The issue is fixed by the patch #26106.

2. Since now, "tricheck" command uses edge tolerance instead of edge deflection to check cross-face-errors (set of nodes of the edge on 1st face must be equal to set of nodes of the same edge on 2nd face).

src/MeshTest/MeshTest_CheckTopology.cxx
tests/bugs/mesh/bug29149 [new file with mode: 0644]
tests/mesh/data/advanced/B2
tests/mesh/data/advanced/B3
tests/mesh/data/advanced/B7
tests/mesh/data/standard/C9
tests/mesh/data/standard/H5
tests/mesh/data/standard/V9
tests/mesh/data/standard/W2
tests/mesh/data/standard/X1

index 22979af..732f7b4 100644 (file)
@@ -110,7 +110,7 @@ void MeshTest_CheckTopology::Perform (Draw_Interpretor& di)
       }
 
       // check distances between corresponding points
-      Standard_Real aSqDefle = Max(aT1->Deflection(), aT2->Deflection());
+      Standard_Real aSqDefle = BRep_Tool::Tolerance(aEdge);
       aSqDefle *= aSqDefle;
       const TColgp_Array1OfPnt& aPoints1 = aT1->Nodes();
       const TColgp_Array1OfPnt& aPoints2 = aT2->Nodes();
diff --git a/tests/bugs/mesh/bug29149 b/tests/bugs/mesh/bug29149
new file mode 100644 (file)
index 0000000..9ceba0b
--- /dev/null
@@ -0,0 +1,36 @@
+puts "======="
+puts "0029149: BRepMesh produces invalid mesh on the bound of adjacent faces"
+puts "======="
+puts ""
+
+restore [locate_data_file bug29149.brep] result
+tclean result
+incmesh result 0.1
+
+checktrinfo result -tri 7998 -nod 4931 -defl 1.2277233425620309
+
+# Reduce shape tolerance in order to hard check of mesh quality
+settolerance result 1.0e-7
+
+if { [llength [tricheck result] ] != 0 } {
+  puts "Error : Invalid mesh"
+} else {
+  puts "Mesh is OK"
+}
+
+smallview
+isos result 0
+triangles result
+
+point p1 288.65908971200806 148.1268376105981 -99.370459908186973
+point p2 288.66203942568802 148.1262245331892 -99.373827710063281
+point p3 288.66358529587593 148.129348718649 -99.365721723137995
+don p1 p2 p3
+fit
+
+don result
+checkview -screenshot -2d -path ${imagedir}/${test_image}_zoom.png
+
+fit
+checkview -screenshot -2d -path ${imagedir}/${test_image}_nozoom.png
+
index be2bc44..492172e 100755 (executable)
@@ -1,5 +1,7 @@
 set TheFileName OCC22145.stp
 set bug_freenodes "OCC22687"
+set bug_cross "OCC22687"
+set nbcross(ALL) 8
 if { [string compare $command "shading"] == 0 } {
   set nbfreenodes(ALL) 4
 } else {
index be2bc44..492172e 100755 (executable)
@@ -1,5 +1,7 @@
 set TheFileName OCC22145.stp
 set bug_freenodes "OCC22687"
+set bug_cross "OCC22687"
+set nbcross(ALL) 8
 if { [string compare $command "shading"] == 0 } {
   set nbfreenodes(ALL) 4
 } else {
index 1761394..6d821b3 100755 (executable)
@@ -1,6 +1,8 @@
 set TheFileName OCC22302.brep
 set bug_freenodes "OCC22687"
 set bug_area "OCC22687"
+set bug_cross "OCC22687"
+set nbcross(ALL) 8
 if { [string compare $command "shading"] == 0 } {
   set nbfreenodes(ALL) 4
 } else {
index f3143fd..d2f8a28 100755 (executable)
@@ -6,4 +6,6 @@ set TheFileName shading_027.brep
 ###set bug_withouttri "OCC23106"
 ###set nbwithouttri(All) 1
 set bug_freenodes "OCC23105"
+set bug_cross "OCC23105"
 set nbfreenodes(All) 2
+set nbcross(ALL) 1
\ No newline at end of file
index c5efa80..9cf10d0 100755 (executable)
@@ -1,3 +1,3 @@
 set TheFileName shading_068.brep
-###set bug_cross "OCC22687"
-###set nbcross(ALL) 1
+set bug_cross "OCC22687"
+set nbcross(ALL) 2
index b01ab65..3969ab6 100755 (executable)
@@ -1 +1,3 @@
 set TheFileName shading_wrongshape_020.brep
+set bug_cross "OCC22687"
+set nbcross(ALL) 2
index cd22753..55c1548 100755 (executable)
@@ -1,6 +1,6 @@
 set TheFileName shading_wrongshape_022.brep
 
+set bug_cross "OCC22687"
+set nbcross(All) 2
 if { [string compare $command "shading"] != 0 } {
-#set bug_cross "OCC22687"
-#set nbcross(All) 2
 }
\ No newline at end of file
index 3529a83..2c66fdf 100755 (executable)
@@ -3,6 +3,8 @@ set TheFileName shading_wrongshape_030.brep
 ###set rel_tol 6
 ###set bug_withouttri "OCC22687"
 ###set nbwithouttri(All) 4
+set bug_cross "OCC22687"
+set nbcross(All) 4
 if { [string compare $command "shading"] == 0 } {
   set rel_tol 0.5456843734442471
 } else {