From e28d7e62f9ebc2933f8574d35366f6da6bba0ef4 Mon Sep 17 00:00:00 2001 From: azn Date: Thu, 17 Apr 2014 16:12:49 +0400 Subject: [PATCH] 0024775: False detecting of intersection in BRepMesh_Classifier class. Increased checking accuracy of endpoints touching of segments. Code formatting improvement. Test case for issue CR24775 Correction test case for issue CR24775 --- src/BRepMesh/BRepMesh_Classifier.cxx | 7 +++--- tests/bugs/mesh/bug24775 | 35 ++++++++++++++++++++++++++++ tests/mesh/data/standard/V4 | 3 +-- 3 files changed, 39 insertions(+), 6 deletions(-) create mode 100755 tests/bugs/mesh/bug24775 diff --git a/src/BRepMesh/BRepMesh_Classifier.cxx b/src/BRepMesh/BRepMesh_Classifier.cxx index a9c1d4571f..2c64b046b1 100644 --- a/src/BRepMesh/BRepMesh_Classifier.cxx +++ b/src/BRepMesh/BRepMesh_Classifier.cxx @@ -266,10 +266,9 @@ static Standard_Boolean checkWiresIntersection(const Standard_Integer Standard_Real dd[2][4] = { {(xc-x11), (xc-x12), (xc-x21), (xc-x22)}, //dX {(yc-y11), (yc-y12), (yc-y21), (yc-y22)} }; //dY - Standard_Integer i = 0; - for(; i < 2; i++ ) + for( Standard_Integer i = 0; i < 2; i++ ) { - if ( dd[i][0]*dd[i][1] > dTol || dd[i][2]*dd[i][3] > dTol) + if ( dd[i][0] * dd[i][1] > RESOLUTION || dd[i][2] * dd[i][3] > RESOLUTION ) { isOnLines = Standard_False; break; @@ -279,7 +278,7 @@ static Standard_Boolean checkWiresIntersection(const Standard_Integer // check the intersection point is on the ends of segments if ( isOnLines ) { - for( i = 0; i < 2; i++ ) + for( Standard_Integer i = 0; i < 2; i++ ) { // if it's the last segment and intersection point lies at the end if ( ( jk == jkEnd || diff --git a/tests/bugs/mesh/bug24775 b/tests/bugs/mesh/bug24775 new file mode 100755 index 0000000000..d6f888d399 --- /dev/null +++ b/tests/bugs/mesh/bug24775 @@ -0,0 +1,35 @@ +puts "================" +puts "CR24775" +puts "================" +puts "" +############################################### +## False detecting of intersection in BRepMesh_Classifier class. +############################################### + +restore [locate_data_file bug24775_face.brep] face +vinit +vdisplay face +vfit + +set trinfo_s [trinfo face] +regexp {([0-9]+) triangles} ${trinfo_s} str nbtri_s +regexp {([0-9]+) nodes} ${trinfo_s} str nbnod_s +regexp {deflection ([0-9.+e-]+)} ${trinfo_s} str defl_s + +if { ${nbtri_s} == 0 } { + puts "Error: shape contains 0 triangles" +} else { + puts "OK: shape contains triangles" +} + +if { ${nbnod_s} == 0 } { + puts "Error: shape contains 0 nodes" +} else { + puts "OK: shape contains nodes" +} + +if { ${defl_s} == 0 } { + puts "Error: deflection is 0" +} else { + puts "OK: deflection is good" +} diff --git a/tests/mesh/data/standard/V4 b/tests/mesh/data/standard/V4 index b496eb84cc..93a64fd577 100755 --- a/tests/mesh/data/standard/V4 +++ b/tests/mesh/data/standard/V4 @@ -2,5 +2,4 @@ set TheFileName shading_wrongshape_015.brep set bug_withouttri "OCC22687" set bug_freenodes "OCC23105" set nbfreenodes(ALL) 4 -set nbwithouttri(All) 6 - +set nbwithouttri(All) 5