From b90477afe33ec585fec43fe5286bd2e2b93e21de Mon Sep 17 00:00:00 2001 From: jgv Date: Mon, 30 Mar 2020 21:18:47 +0300 Subject: [PATCH] 0031470: Modeling Algorithms - Regression: BOP common produces empty result (box and holed sphere) Approx_ComputeCLine.gxx : number of possible cuttings is increased, tolerance in U parameter is reduced. --- src/Approx/Approx_ComputeCLine.gxx | 4 ++-- tests/bugs/modalg_7/bug31470 | 36 ++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+), 2 deletions(-) create mode 100644 tests/bugs/modalg_7/bug31470 diff --git a/src/Approx/Approx_ComputeCLine.gxx b/src/Approx/Approx_ComputeCLine.gxx index 51eab1d9f5..4d86c3fb93 100644 --- a/src/Approx/Approx_ComputeCLine.gxx +++ b/src/Approx/Approx_ComputeCLine.gxx @@ -97,12 +97,12 @@ void Approx_ComputeCLine::Perform(const MultiLine& Line) Standard_Real thetol3d = Precision::Confusion(), thetol2d = Precision::Confusion(); UFirst = Line.FirstParameter(); ULast = Line.LastParameter(); - Standard_Real TolU = Max((ULast - UFirst)*1.e-03, Precision::Confusion()); + Standard_Real TolU = Max((ULast-UFirst)*1.e-05, Precision::PApproximation()); Standard_Real myfirstU = UFirst; Standard_Real mylastU = ULast; Standard_Integer aMaxSegments = 0; Standard_Integer aMaxSegments1 = myMaxSegments - 1; - Standard_Integer aNbCut = 0, aNbImp = 0, aNbComp = 10; + Standard_Integer aNbCut = 0, aNbImp = 0, aNbComp = 20; if (!mycut) { diff --git a/tests/bugs/modalg_7/bug31470 b/tests/bugs/modalg_7/bug31470 new file mode 100644 index 0000000000..f109c73f02 --- /dev/null +++ b/tests/bugs/modalg_7/bug31470 @@ -0,0 +1,36 @@ +puts "=================================================================" +puts "OCC31470: BOP common produces empty result (box and holed sphere)" +puts "=================================================================" +puts "" + +plane pln1 51.899912462 99.996691888 62.33204004 +psphere s1 pln1 15 +psphere s2 pln1 10 +bcut ss s1 s2 +box bb 100 100 100 + +bcommon result bb ss +savehistory hh + +explode ss f +modified ff hh ss_1 +generated ee hh ss_1 + +checkshape result + +checknbshapes result -solid 1 -shell 1 -face 3 -wire 6 -edge 8 -vertex 6 + +set tolres [checkmaxtol result] + +if { ${tolres} > 2.e-7} { + puts "Error: bad tolerance of result" +} + +checkprops result -v 4975.49 + +v2d +pcurve pc ee ff +trim pc pc +2dfit + +checkview -screenshot -2d -path ${imagedir}/${test_image}.png -- 2.39.5