1
0
mirror of https://git.dev.opencascade.org/repos/occt.git synced 2025-04-10 18:51:21 +03:00
occt/tests/bugs/modalg_6/bug27856_2
nbv 261b7d9e8a 0028222: Intersection of two cylinders fails
1. The reason of exception has been eliminated.

2. Algorithm in IntPatch_WLineTool::JoinWLines(...) method has been modified in order to forbid join curves in the point where more than two intersection lines meet. More over, joining is forbidden if local curvature in the connection point is too big (see function CheckArgumentsToJoin(...) in the file IntPatch_WLineTool.cxx).

3. Interface of IntPatch_WLineTool::JoinWLines(...) method has been modified in order to reduce number of arguments.

4. Small corrections in IsSeamOrBound(...) static function has been made. Namely, check has been added if two boundaries are in the same period region but are too far each to other (see IntPatch_WLineTool.cxx, IsSeamOrBound(...) function, line # 532).

5. "Reversed" flag has been made local. Now, it is pure local characteristic: the algorithm decides itself, shall we reverse the argument order. This correction makes the algorithm more commutative (see issue #25404). However, IntPatch_WLineTool::JoinWLines(...) method can return non-commutative result.

6. Algorithm of searching small intersection curves has been improved.

7. New methods have been added in Bnd_Range class.

Some test cases have been adjusted according to their new behavior.

1. tests\bugs\modalg_6\bug26310_3
   tests\bugs\modalg_6\bug26310_4
   tests\bugs\moddata_2\bug235
   tests\perf\modalg\bug26310_1
   tests\bugs\modalg_5\bug24915

Logic of these cases has been changed. Mover over, additional check has been added in "bug26310_1" test case. Therefore, its performance will be slower than on the current MASTER.

2. tests\bugs\modalg_5\bug25292*

Scripts have been rewritten in order to make it more readable. Logic of these cases has not been changed.
2017-05-26 14:48:59 +03:00

119 lines
2.7 KiB
Plaintext

puts "========"
puts "OCC27856"
puts "========"
puts ""
#################################################
# Regression vs 6.7.1: General Fuse operation fails to fuse the solids
#################################################
# Before the fix, EMPTY result (no points, no curves)
# was returned in every considered case.
restore [locate_data_file bug27856_int_solids.brep] b
explode b so
# first pair of solids
explode b_1 f
explode b_2 f
# ----
regexp {Tolerance Reached=+([-0-9.+eE]+)\n+([-0-9.+eE]+)} [bopcurves b_1_2 b_2_2 -2d] full Toler NbCurv
if {${NbCurv} != 1} {
puts "Error: Number of curves is bad!"
}
checkreal TolReached $Toler 0.00026207823091004516 0.0 1.0e-3
# ----
set Toler 0.0
set NbCurv 0
regexp {Tolerance Reached=+([-0-9.+eE]+)\n+([-0-9.+eE]+)} [bopcurves b_1_4 b_2_4 -2d] full Toler NbCurv
if {${NbCurv} != 1} {
puts "Error: Number of curves is bad!"
}
checkreal TolReached $Toler 6.5053102894636701e-005 0.0 1.0e-2
# ----
# second pair of solids
explode b_3 f
explode b_4 f
# ----
set Toler 0.0
set NbCurv 0
regexp {Tolerance Reached=+([-0-9.+eE]+)\n+([-0-9.+eE]+)} [bopcurves b_3_2 b_4_2 -2d] full Toler NbCurv
if {${NbCurv} != 1} {
puts "Error: Number of curves is bad!"
}
checkreal TolReached $Toler 0.00029706239430643614 0.0 1.0e-3
# ----
set Toler 0.0
set NbCurv 0
regexp {Tolerance Reached=+([-0-9.+eE]+)\n+([-0-9.+eE]+)} [bopcurves b_3_4 b_4_4 -2d] full Toler NbCurv
if {${NbCurv} != 1} {
puts "Error: Number of curves is bad!"
}
checkreal TolReached $Toler 0.00029242389138280588 0.0 1.0e-3
# ----
# third pair of solids
explode b_5 f
explode b_6 f
# ----
set Toler 0.0
set NbCurv 0
regexp {Tolerance Reached=+([-0-9.+eE]+)\n+([-0-9.+eE]+)} [bopcurves b_5_2 b_6_2 -2d] full Toler NbCurv
if {${NbCurv} != 1} {
puts "Error: Number of curves is bad!"
}
checkreal TolReached $Toler 1.4980089259007279e-005 0.0 1.0e-2
# ----
set Toler 0.0
set NbCurv 0
regexp {Tolerance Reached=+([-0-9.+eE]+)\n+([-0-9.+eE]+)} [bopcurves b_5_4 b_6_4 -2d] full Toler NbCurv
if {${NbCurv} != 1} {
puts "Error: Number of curves is bad!"
}
checkreal TolReached $Toler 0.00023417493528435788 0.0 1.0e-3
# ----
# fourth pair of solids
explode b_7 f
explode b_8 f
# ----
set Toler 0.0
set NbCurv 0
regexp {Tolerance Reached=+([-0-9.+eE]+)\n+([-0-9.+eE]+)} [bopcurves b_7_2 b_8_2 -2d] full Toler NbCurv
if {${NbCurv} != 1} {
puts "Error: Number of curves is bad!"
}
checkreal TolReached $Toler 0.00027445924390073518 0.0 1.0e-3
# ----
set Toler 0.0
set NbCurv 0
regexp {Tolerance Reached=+([-0-9.+eE]+)\n+([-0-9.+eE]+)} [bopcurves b_7_4 b_8_4 -2d] full Toler NbCurv
if {${NbCurv} != 1} {
puts "Error: Number of curves is bad!"
}
checkreal TolReached $Toler 1.867918118939262e-005 0.0 1.0e-2