0031172: Unexpected result of BRepTools::OuterWire() IR-2021-01-15
authoraavtamon <aavtamon@opencascade.com>
Wed, 13 Jan 2021 09:22:58 +0000 (12:22 +0300)
committerbugmaster <bugmaster@opencascade.com>
Fri, 15 Jan 2021 15:52:11 +0000 (18:52 +0300)
In BRepTools::OuterWire() compare of parameters was rewritten using Precision.
The test case bug31172 has been created

src/BRepTools/BRepTools.cxx
tests/bugs/modalg_7/bug31172 [new file with mode: 0644]

index f4ec0d2..b6e2139 100644 (file)
@@ -616,10 +616,10 @@ TopoDS_Wire  BRepTools::OuterWire(const TopoDS_Face& F)
         while (expw.More()) {
           const TopoDS_Wire& W = TopoDS::Wire(expw.Current());
           BRepTools::UVBounds(F,W,umin, umax, vmin, vmax);
-          if ((umin <= UMin) &&
-              (umax >= UMax) &&
-              (vmin <= VMin) &&
-              (vmax >= VMax)) {
+          if (((umin - UMin) <= Precision::PConfusion()) &&
+              ((umax - UMax) >= -Precision::PConfusion()) &&
+              ((vmin - VMin) <= Precision::PConfusion()) &&
+              ((vmax - VMax) >= -Precision::PConfusion())) {
             Wres = W;
             UMin = umin;
             UMax = umax;
diff --git a/tests/bugs/modalg_7/bug31172 b/tests/bugs/modalg_7/bug31172
new file mode 100644 (file)
index 0000000..86de408
--- /dev/null
@@ -0,0 +1,12 @@
+puts "===================================================="
+puts "0031172: Unexpected result of BRepTools::OuterWire()"
+puts "===================================================="
+puts ""
+
+pload QAcommands
+
+restore [locate_data_file bug31172.brep] face
+BUC60652 face
+
+explode face W
+checkprops w -equal face_3
\ No newline at end of file