]> OCCT Git - occt.git/commitdiff
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 22979af6202c9b1552100bc6b4c936f92cafc9f6..732f7b4f4d83504a4b0dc0b601c4bc5cfa8deb49 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 be2bc44f76c66ea93a895018ad579cb0b8e98656..492172e7313fb7c54c728de55528ee36432f66b8 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 be2bc44f76c66ea93a895018ad579cb0b8e98656..492172e7313fb7c54c728de55528ee36432f66b8 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 1761394b49951e2a90c94178593e1ab2a6f5b01a..6d821b3e3f99ebcb1a5da15d5b178ab483f33acc 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 f3143fd44599e917047e9b3fdb87b4820c106b00..d2f8a2800d469d019525e7771355706a8472a0c6 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 c5efa8042a099a8e777dc3e5349e0c377585d2fd..9cf10d006083ed28cee25a7b538d715f029536ff 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 b01ab65c69d7e2007fb09a8e36b7745e7250760d..3969ab681bf79f9ebccc4ab76e2ea88b45e91f1d 100755 (executable)
@@ -1 +1,3 @@
 set TheFileName shading_wrongshape_020.brep
+set bug_cross "OCC22687"
+set nbcross(ALL) 2
index cd227538406ea7f89432a75f9154462d98c954ef..55c15486affb3c577db2a14067694c588358ec67 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 3529a83cd362bd8e0f3d52c9aeeef45e214a2faf..2c66fdf8824304c4ce4b5dbb8768300b807a5df1 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 {