1
0
mirror of https://git.dev.opencascade.org/repos/occt.git synced 2025-04-04 18:06:22 +03:00
msv 0d0481c787 0026738: Make Boolean operations safely treating arguments when running with fuzzy option
When fuzzy option is in force prevent increasing tolerance of input shapes. Instead pass increased by fuzzy value the tolerances of sub-shapes everywhere where it is needed by intersection algorithms.

The following changes in API have been made:

- The methods SetFuzzyValue and FuzzyValue have been moved from the classes BOPAlgo_ArgumentAnalyzer, BOPAlgo_Builder, and BOPAlgo_PaveFiller to the base class BOPAlgo_Algo.
- The public method BOPDS_DS::VerticesOnIn has been renamed to SubShapesOnIn, and the new output parameter theCommonPB has been added.
- In BOPTools_AlgoTools, a new argument "theFuzzyValue" has been added in the methods ComputeVV and AreFacesSameDomain.
- In IntTools_Context, a new argument "theFuzzyValue" has been added in the methods ComputeVE and ComputeVF.
- The methods SetFuzzyValue and FuzzyValue have been added in the classes IntTools_EdgeEdge, IntTools_FaceFace.
- In the class IntTools_EdgeFace, the methods SetTolE, SetTolF, TolE, TolF have been removed, and the methods SetFuzzyValue, FuzzyValue have been added.
- The new argument "theTol" has been added in the method IntTools_WLineTool::DecompositionOfWLine.

Some improvements in algorithms have been made during fighting with regressions:

- Correct initialization of pave blocks for degenerated edges.
- In BOPAlgo_PaveFiller::MakeBlocks(), filter out paves on intersection curve that were put on the curve accidentally due to wide range of E-F intersection vertex.
- In the method IntTools_Tools::ComputeTolerance the margin added to the computed tolerance has been increased up to 0.001%.
- The method BOPAlgo_PaveFiller::PutPaveOnCurve has been corrected in order to use the original vertex tolerance instead of the value increased during putting it on other curves.
- The new method BOPDS_PaveBlock::RemoveExtPave has been added.
- The vertex tolerance computation in BOPTools_AlgoTools::CorrectCurveOnSurface has been improved, taking into account intersection segments between p-curves (to avoid regression on "bugs modalg_6 bug22794").
- Improve IsExistingPaveBlock to make more stable catching of coincidence of common block with section curve (against regression "bugs modalg_4 bug697_2" on Linux).

Test case for the bug has been added.

The following test cases have been updated as improvements:
boolean gdml_private ZH2 ZI7 ZJ7
boolean volumemaker C4

The test case bugs/modalg_4/pro19653 has been corrected to make it stable. See comment inside the script for details.

The test case bugs/modalg_6/bug25880 has been corrected to suppress wrong bfuse commands.

The test bugs/modalg_6/bug26954_3 has been corrected to compare the result with more precise reference value.

The "faulty" TODO in boolean/volumemaker/A8 has been made actual for Linux as well.

//Eliminate compilation error on Linux.
2016-11-08 16:42:44 +03:00

48 lines
1.5 KiB
Plaintext

# test script on make volume operation
# plane sphere
puts "TODO ?OCC26020 ALL: Faulty shapes in variables faulty_1 to faulty_"
puts "TODO OCC26020 ALL: Error: bopcheck failed"
puts "TODO OCC26020 ALL: Error : The area of result shape is"
# planar face
plane pln_f1 -4.2580937183769834 -506.18339008981781 147.62942729477928 0.98768834059988952 -6.6728564553435301e-012 -0.15643446501022945
erase pln_f1
mkface f1 pln_f1 -1000000 1000000 -1000000 1000000
# spherical face
sphere sph_f2 0 0 0 0 0 1 535
erase sph_f2
mkface f2 sph_f2
# planar face
plane pln_f3 -27.47908454454036 -513.55172659614686 -173.4961116930572 -0.15037445914067274 0.27563735581879711 -0.94942696934275683
erase pln_f3
mkface f3 pln_f3 -1000000 1000000 -1000000 1000000
# planar face
plane pln_f4 194.60851142999999 27.299999999999997 469.82650763999999 -1.2670433353083948e-016 -1 -6.6853539210366213e-016
erase pln_f4
mkface f4 pln_f4 -1000000 1000000 -1000000 1000000
# planar face
plane pln_f5 -19.268639075459625 -528.60152622385317 -121.65739916694265 -0.15037445914067274 0.27563735581879711 -0.94942696934275683
erase pln_f5
mkface f5 pln_f5 -1000000 1000000 -1000000 1000000
# planar face
plane pln_f6 -50.337753508376991 -521.07662641018214 -143.30609453522072 0.98768834059988952 6.6728564553435301e-012 -0.15643446501022945
erase pln_f6
mkface f6 pln_f6 -1000000 1000000 -1000000 1000000
# spherical face
sphere sph_f7 0 0 0 0 0 1 520
erase sph_f7
mkface f7 sph_f7
# make volume operation
mkvolume result f1 f2 f3 f4 f5 f6 f7
checkprops result -s 2.19944e+013