From 6fab0b34288ef3f29ecf4eabc0283540460dbc31 Mon Sep 17 00:00:00 2001 From: aavtamon Date: Wed, 13 Jan 2021 12:22:58 +0300 Subject: [PATCH] 0031172: Unexpected result of BRepTools::OuterWire() In BRepTools::OuterWire() compare of parameters was rewritten using Precision. The test case bug31172 has been created --- src/BRepTools/BRepTools.cxx | 8 ++++---- tests/bugs/modalg_7/bug31172 | 12 ++++++++++++ 2 files changed, 16 insertions(+), 4 deletions(-) create mode 100644 tests/bugs/modalg_7/bug31172 diff --git a/src/BRepTools/BRepTools.cxx b/src/BRepTools/BRepTools.cxx index f4ec0d2162..b6e2139d56 100644 --- a/src/BRepTools/BRepTools.cxx +++ b/src/BRepTools/BRepTools.cxx @@ -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 index 0000000000..86de4081d8 --- /dev/null +++ b/tests/bugs/modalg_7/bug31172 @@ -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