MantisBT
Mantis Bug Tracker Workflow

View Issue Details Jump to Notes ] Related Changesets ] Issue History ] Print ]
IDProjectCategoryView StatusDate SubmittedLast Update
0026738Open CASCADE[OCCT] OCCT:Modeling Algorithmspublic2015-10-01 12:442016-12-09 16:39
Reportermsv 
Assigned Toapn 
PriorityhighSeveritytweak 
StatusclosedResolutionfixed 
PlatformOSOS Version
Product Version[OCCT] 6.9.1 
Target Version[OCCT] 7.1.0Fixed in Version[OCCT] 7.1.0 
Summary0026738: Make Boolean operations safely treating arguments when running with fuzzy option
DescriptionWhen fuzzy option is in force Boolean operation increases tolerance of all sub-shapes of the arguments for the moment of finding intersections.
It will become a trouble if the same shape is participating in Boolean operations in different threads simultaneously.
So, it is needed to re-implement the fuzzy option in a different way. Instead of modifying tolerance of input shapes, the algorithm must add fuzzy value each time a tolerance of a shape is used.
Steps To Reproducetests bugs modalg_6 bug26738
TagsNo tags attached.
Test case numberbugs modalg_6 bug26738
Attached Files

- Relationships
parent of 0027090closedbugmaster Open CASCADE Point is classified IN solid but actually it is OUT 
related to 0026796closedbugmaster Open CASCADE The result of General Fuse operation is self-intersecting shape 
related to 0027049newmsv Open CASCADE Make non-destructive mode be defined by default in Boolean operations 
child of 0027166assignedmsv Open CASCADE Non-destructive principle in algorithms 

-  Notes
(0049684)
git (administrator)
2015-12-30 14:44

Branch CR26738 has been created by msv.

SHA-1: 26477f3e80c19ce21aa9edad32222ffe6d2f4329


Detailed log of new commits:

Author: emv
Date: Thu Sep 3 10:31:31 2015 +0300

    0026738: Make Boolean operations non-destructive when running with fuzzy option
    
    Note: it is not complete yet.
(0049875)
git (administrator)
2016-01-14 21:34

Branch CR26738 has been updated forcibly by msv.

SHA-1: 29ad62b19ea8bf463a96c22a5da50d2a064c4266
(0050101)
git (administrator)
2016-01-25 15:49

Branch CR26738 has been updated by msv.

SHA-1: 28fc754ae50e1f3e66f7aa519aa9388b15643008


Detailed log of new commits:

Author: msv
Date: Mon Jan 25 15:48:56 2016 +0300

    Work against regressions.

(0053543)
git (administrator)
2016-04-25 12:04

Branch CR26738_2 has been created by msv.

SHA-1: 2995e74729848863b030322ead7e9a711b600cf5


Detailed log of new commits:

Author: emv
Date: Thu Sep 3 10:31:31 2015 +0300

    0026738: Make Boolean operations guarding 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.
    
    Test case for the bug has been added.
    
    Update the test boolean/bcut_complex/N9
(0053555)
git (administrator)
2016-04-25 15:30

Branch CR26738_3 has been created by emv.

SHA-1: 89505bf47531f0aea6613a08a46f14444c2f0561


Detailed log of new commits:

Author: emv
Date: Thu Sep 3 10:31:31 2015 +0300

    0026738: Make Boolean operations guarding 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.
    
    Test case for the bug has been added.
    
    Update the test boolean/bcut_complex/N9
(0056185)
git (administrator)
2016-07-22 16:08

Branch CR26738_3 has been updated by emv.

SHA-1: ed6a71641d58350328c3cb6e97000261ec995ecb


Detailed log of new commits:

Author: emv
Date: Fri Jul 22 16:08:40 2016 +0300

    Use fuzzy value for updating common blocks.

(0058020)
git (administrator)
2016-09-22 13:10

Branch CR26738_4 has been created by msv.

SHA-1: 85a7502e8b47dc638e2f81bdc9f2c9f2dc2921b8


Detailed log of new commits:

Author: msv
Date: Thu Sep 22 10:52:17 2016 +0300

    Use fuzzy value where it is needed while projecting a vertex on edge/face (to avoid regression "bugs modalg_6 bug25880").

Author: msv
Date: Mon Sep 19 18:00:28 2016 +0300

    Improve computation of the vertex tolerance, taking into account intersection segments between p-curves (to avoid regression on "bugs modalg_6 bug22794").

Author: msv
Date: Fri Sep 16 18:59:44 2016 +0300

    // - Correct the method FilterPavesOnCurves to allow filtering of only paves
    // that are projected with small angle to the curve tangent.
    // - Undo changes in BOPAlgo_BuilderSolid.cxx - not needed any more.

Author: msv
Date: Thu Sep 15 17:07:46 2016 +0300

    Correct test bugs/modalg_6/bug26954_3: now the result is more precise.

Author: msv
Date: Tue Sep 6 15:54:36 2016 +0300

    //Correct the function BOPAlgo_PaveFiller::FilterPavesOnCurves
    - Correct the method BOPAlgo_PaveFiller::PutPaveOnCurve. Use the original vertex tolerance instead of value increased during putting it on other curves.
    - Add the method BOPDS_PaveBlock::RemoveExtPave

Author: msv
Date: Tue Aug 23 12:25:26 2016 +0300

    Increase margin added to computed tolerance in the method IntTools_Tools::ComputeTolerance up to 0.001%.

Author: msv
Date: Tue Aug 23 16:12:53 2016 +0300

    Correct test case bugs/modalg_6/bug25880 to suppress wrong bfuse commands.

Author: msv
Date: Tue Aug 23 10:51:05 2016 +0300

    Update test case bugs/modalg_4/pro19653 to make it stable. See comment insode the script.

Author: msv
Date: Mon Aug 22 18:46:17 2016 +0300

    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.

Author: msv
Date: Fri Jul 22 18:18:39 2016 +0300

    Update test cases. The following are improvements:
    boolean bcut_complex N9
    boolean gdml_private ZH2 ZI7 ZJ7
    boolean volumemaker A7 B6 C2 C4

Author: msv
Date: Mon Aug 15 11:48:04 2016 +0300

    Correct initialization of pave blocks for degenerated edges.

Author: emv
Date: Fri Jul 22 16:08:40 2016 +0300

    Use fuzzy value for updating common blocks.

Author: emv
Date: Thu Sep 3 10:31:31 2015 +0300

    0026738: Make Boolean operations guarding 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.
    
    Test case for the bug has been added.
    
    Update the test boolean/bcut_complex/N9
(0058021)
msv (developer)
2016-09-22 13:11

Dear Eugeny, please review the fix.
(0058063)
emv (developer)
2016-09-23 12:22

Remarks:
1. BOPDS_DS::Init() - the bounding box of the vertex should be updated with half of aTolAdd instead of theFuzz;
2. BOPAlgo_PaveFiller_4 - there is no need to check the interferences between vertices and face if no V/F were even computed;
3. BOPAlgo_PaveFiller_5 - there is no need to compare myFuzzyValue with Precision::Confusion() if by default it is initialized with this value;
4. IntTools_EdgeEdge, IntTools_FaceFace - myFuzzyValue is initialized with 0 by default, but should be initialized with Precision::Confusion();
5. IntTools_EdgeFace, IntTools_BeanFaceIntersector - it is necessary to add the field myFuzzyValue to these classes to provide consistency
with other intersection algorithms;
6. BOPTools_AlgoTools - in the methods in which fuzzy value is used, it is initialized with 0 by default. It is necessary to make it consistent with IntTools_Context::Compute* methods;
7. BOPTools_AlgoTools::MakeEdge - when using BRep_Builder there is no need to compare the tolerances before updating the vertex;
8. BOPAlgo_PaveFiller::UpdateExistingPaveBlocks - myFuzzyValue is compared with Precision::Confusion();
9. BOPAlgo_PaveFiller_3 - the post treatment of the Edge/Edge intersection vertices is performed incorrectly. Currently, the vertices are considered as interfered if their bounding boxes are interfered. It is necessary to compare additionally the real distance between points with sum of tolerances of these vertices.
(0058190)
git (administrator)
2016-09-27 11:49

Branch CR26738_5 has been created by msv.

SHA-1: 3ac0cf1a6d9debce50e9169fc2898b92903400e9


Detailed log of new commits:

Author: msv
Date: Tue Sep 27 11:49:25 2016 +0300

    Considering remarks.
    
    - In the class IntTools_EdgeFace, the methods SetTolE, SetTolF, TolE, TolF have been removed, and the methods SetFuzzyValue, FuzzyValue have been added.

Author: emv
Date: Thu Sep 3 10:31:31 2015 +0300

    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.
    - 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.
    - 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").
    
    Test case for the bug has been added.
    
    The following test case 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.
(0058191)
msv (developer)
2016-09-27 11:50

Please review the new version.
(0058192)
git (administrator)
2016-09-27 12:22

Branch CR26738_5 has been updated forcibly by msv.

SHA-1: fe5b266efce62184d8f1d75af1509e571419d4f2
(0058193)
emv (developer)
2016-09-27 12:23

Reviewed, please test.
(0058240)
apv (tester)
2016-09-28 12:26

Dear BugMaster,

Branch CR26738_5 from occt git-repository (and master from products git-repository) was compiled on Linux, MacOS and Windows platforms and tested.
SHA-1: fe5b266efce62184d8f1d75af1509e571419d4f2

Number of compiler warnings:
occt component:
   Linux: 0 (0 on master)
   Windows: 0 (0 on master)
   MasOS: 0 (0 on master)
products component:
   Linux: 64
   Windows: 0
   MacOS: 1153

Regressions/Differences:
http://occt-tests/CR26738_5-master-OCCT/Debian70-64/summary.html [^]
boolean volumemaker A8
bugs modalg_4 bug697_2, bug697_4, bug697_7, bug697_8
boolean gdml_private ZI7, ZJ7

Testing cases:
bugs modalg_6 bug26738 - OK
http://occt-tests/CR26738_5-master-OCCT/Debian70-64/bugs/modalg_6/bug26738.html [^]
http://occt-tests/CR26738_5-master-OCCT/Windows-64-VC10/bugs/modalg_6/bug26738.html [^]

CPU-problematic test case has been detected:
blend simple Q6: 0.7020045 / 0.0936006 [+650.00%]

Testing on Linux:
Total MEMORY difference: 90702970 / 90175592 [+0.58%]
Total CPU difference: 19769.110000000073 / 19208.04999999986 [+2.92%]

Testing on Windows:
Total MEMORY difference: 57172294 / 57221541 [-0.09%]
Total CPU difference: 17843.955983598702 / 18310.78897609872 [-2.55%]

There are differences in images found by testdiff:
http://occt-tests/CR26738_5-master-OCCT/Debian70-64/diff-Debian70-64.html [^]
http://occt-tests/CR26738_5-master-OCCT/Windows-64-VC10/diff-Windows-64-VC10-image.html [^]
boolean gdml_private ZJ7
boolean gdml_private ZH2
boolean gdml_private ZI7
boolean volumemaker A8
bugs modalg_1 bug10232
(0058241)
apv (tester)
2016-09-28 12:29

Dear Mikhail,

Branch CR26738_5 has been rejected due to:
- regressions/differences/improvements
- CPU problems
- differences in images
(0058443)
git (administrator)
2016-10-05 17:34

Branch CR26738_6 has been created by msv.

SHA-1: 74619505292e23be7d7c4d79e93872b90bc47a15


Detailed log of new commits:

Author: msv
Date: Wed Oct 5 16:41:05 2016 +0300

    - Accept improvements in boolean/gdml_private/ZI7 and ZJ7.
    - Improve IsExistingPaveBlock to make more stable catching of coincidence of common block with section curve (against regression "bugs modalg_4 bug697_2" on Linux).

Author: emv
Date: Thu Sep 3 10:31:31 2015 +0300

    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.
    - 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").
    
    Test case for the bug has been added.
    
    The following test case 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.
(0059239)
git (administrator)
2016-10-27 12:01

Branch CR26738_6 has been updated forcibly by msv.

SHA-1: bdf993cbaa0c524e30c9645966db0076b034a14a
(0059240)
msv (developer)
2016-10-27 12:02

Dear Eugeny, please review the last changes.
(0059241)
msv (developer)
2016-10-27 12:08

Differences in images
 boolean gdml_private ZJ7
 boolean gdml_private ZH2
 boolean gdml_private ZI7
are improvements.

boolean volumemaker A8
bugs modalg_1 bug10232
These test cases are unstable and change their behavior from fix to fix. It should be fixed in scope of another bug.
(0059242)
git (administrator)
2016-10-27 12:28

Branch CR26738_6 has been updated forcibly by msv.

SHA-1: 55d22c01113013accf1f3d146368965a0d5c0854
(0059243)
git (administrator)
2016-10-27 12:33

Branch CR26738_7 has been created by msv.

SHA-1: 7b37fd0775772e89c66e5507280610a1251fbcad


Detailed log of new commits:

Author: emv
Date: Thu Sep 3 10:31:31 2015 +0300

    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.
(0059244)
emv (developer)
2016-10-27 12:37

Reviewed.
(0059370)
git (administrator)
2016-10-28 17:48

Branch CR26738_7 has been updated forcibly by apv.

SHA-1: 813b49bf938f8030ef7d86291d205d03059674af
(0059371)
apv (tester)
2016-10-28 17:49

Branch CR26738_7 has been rebased on the current master
(0059639)
apv (tester)
2016-10-31 16:24
edited on: 2016-10-31 16:25

Dear BugMaster,

Branch CR26738_7 from occt git-repository (and master from products git-repository) was compiled on Linux, MacOS and Windows platforms and tested.
SHA-1: 813b49bf938f8030ef7d86291d205d03059674af

Number of compiler warnings:
occt component:
   Linux: 0 (0 on master)
   Windows: 0 (0 on master)
   MasOS: 0 (0 on master)
products component:
   Linux: 63
   Windows: 0
   MacOS: 1137

Regressions/Differences:
http://occt-tests/CR26738_7-master-OCCT/Debian70-64/summary.html [^]
http://occt-tests/CR26738_7-master-OCCT/Windows-64-VC10/summary.html [^]
bugs modalg_5 bug25319_1, bug25319_2

Testing cases:
bugs modalg_6 bug26738 - OK
http://occt-tests/CR26738_7-master-OCCT/Debian70-64/bugs/modalg_6/bug26738.html [^]
http://occt-tests/CR26738_7-master-OCCT/Windows-64-VC10/bugs/modalg_6/bug26738.html [^]

Testing on Linux:
Total MEMORY difference: 90922433 / 90714368 [+0.23%]
Total CPU difference: 19412.469999999914 / 19289.569999999887 [+0.64%]

Testing on Windows:
Total MEMORY difference: 57268610 / 57321116 [-0.09%]
Total CPU difference: 18012.51506409871 / 18220.18359529866 [-1.14%]

There are differences in images found by testdiff:
http://occt-tests/CR26738_7-master-OCCT/Debian70-64/diff-Debian70-64.html [^]
http://occt-tests/CR26738_7-master-OCCT/Windows-64-VC10/diff-Windows-64-VC10-image.html [^]
boolean gdml_private ZJ7 (approved)
boolean gdml_private ZH2 (approved)
boolean gdml_private ZI7 (approved)
boolean volumemaker A8 (approved)
bugs modalg_1 bug10232 (approved)

(0059640)
apv (tester)
2016-10-31 16:27

Dear Mikhail,

Branch CR26738_7 has been rejected due to:
- regressions/differences/improvements
(0059722)
git (administrator)
2016-11-01 19:01

Branch CR26738_8 has been created by msv.

SHA-1: c4951260ec0e100062f8d61fd7ee8b0eac6d261a


Detailed log of new commits:

Author: emv
Date: Thu Sep 3 10:31:31 2015 +0300

    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.
(0059723)
git (administrator)
2016-11-01 19:07

Branch CR26738_8 has been updated forcibly by msv.

SHA-1: 0ffe5b5936c1d152088bf8c2db136198aa1fa091
(0059724)
msv (developer)
2016-11-01 19:10

The failed cases "bugs modalg_5 bug25319_1, bug25319_2" have the same nature of failure as in the tested branch CR27431_5. Therefore I have re-based the fix on top of that branch.
Please test the branch CR26738_8 together with CR27431_prod.
(0059796)
git (administrator)
2016-11-02 17:17

Branch CR26738_8 has been updated forcibly by apv.

SHA-1: 3e612566efffa73bba08008c693290c8f01bc385
(0059797)
apv (tester)
2016-11-02 17:17

Branch CR26738_8 has been rebased on the IR-2016-11-02
(0059858)
apv (tester)
2016-11-03 16:01

Dear BugMaster,

Branch CR26738_8 from occt git-repository (and IR-2016-11-02 from products git-repository) was compiled on Linux, MacOS and Windows platforms and tested.
SHA-1: 3e612566efffa73bba08008c693290c8f01bc385

Number of compiler warnings:
occt component:
   Linux: 0 (0 on master)
   Windows: 0 (0 on master)
   MasOS: 0 (0 on master)
products component:
   Linux: 63
   Windows: 0
   MacOS: 1129

Regressions/Differences:
Not detected

Testing cases:
bugs modalg_6 bug26738 - OK
http://occt-tests/CR26738_8-IR-2016-11-02-OCCT/Debian70-64/bugs/modalg_6/bug26738.html [^]
http://occt-tests/CR26738_8-IR-2016-11-02-OCCT/Windows-64-VC10/bugs/modalg_6/bug26738.html [^]

Testing on Linux:
Total MEMORY difference: 91267436 / 91199950 [+0.07%]
Total CPU difference: 19497.47000000005 / 19491.160000000036 [+0.03%]

Testing on Windows:
Total MEMORY difference: 57412590 / 57451773 [-0.07%]
Total CPU difference: 17894.95271049863 / 17672.82288659874 [+1.26%]
(0059990)
apn (administrator)
2016-11-08 12:33

Dear Mikhail,

During compilation IR which includes 26738_8 compile errors appeared on Debian60-64 and CentOS64-64:
...
/dn54/builds/IR-2016-11-07_IR-2016-11-07/CentOS64-64-opt/OCCT/src/BOPAlgo/BOPAlgo_PaveFiller_6.cxx: In member function 'void BOPAlgo_PaveFiller::FilterPavesOnCurves(const BOPDS_VectorOfCurve&, Standard_Real)':
/dn54/builds/IR-2016-11-07_IR-2016-11-07/CentOS64-64-opt/OCCT/src/BOPAlgo/BOPAlgo_PaveFiller_6.cxx:1539: error: template argument for 'template<class TheItemType> class NCollection_List' uses local type 'BOPAlgo_PaveFiller::FilterPavesOnCurves(const BOPDS_VectorOfCurve&, Standard_Real)::PaveBlockDist'
/dn54/builds/IR-2016-11-07_IR-2016-11-07/CentOS64-64-opt/OCCT/src/BOPAlgo/BOPAlgo_PaveFiller_6.cxx:1539: error: trying to instantiate 'template<class TheItemType> class NCollection_List'
/dn54/builds/IR-2016-11-07_IR-2016-11-07/CentOS64-64-opt/OCCT/src/BOPAlgo/BOPAlgo_PaveFiller_6.cxx:1539: error: template argument 2 is invalid
/dn54/builds/IR-2016-11-07_IR-2016-11-07/CentOS64-64-opt/OCCT/src/BOPAlgo/BOPAlgo_PaveFiller_6.cxx:1539: error: invalid type in declaration before ';' token
...
(0060018)
git (administrator)
2016-11-08 14:41

Branch CR26738_9 has been created by msv.

SHA-1: be17d7e52bf334e79037134bbd6c8a97bf225d8e


Detailed log of new commits:

Author: msv
Date: Tue Nov 8 14:41:37 2016 +0300

    //Eliminate compilation error on Linux.
(0060019)
msv (developer)
2016-11-08 14:42

Fixed. Please try again.
(0060020)
msv (developer)
2016-11-08 14:42

Use CR26738_9.
(0061179)
git (administrator)
2016-12-07 11:25

Branch CR26738 has been deleted by kgv.

SHA-1: 28fc754ae50e1f3e66f7aa519aa9388b15643008
(0061180)
git (administrator)
2016-12-07 11:25

Branch CR26738_2 has been deleted by kgv.

SHA-1: 2995e74729848863b030322ead7e9a711b600cf5
(0061181)
git (administrator)
2016-12-07 11:25

Branch CR26738_3 has been deleted by kgv.

SHA-1: ed6a71641d58350328c3cb6e97000261ec995ecb
(0061182)
git (administrator)
2016-12-07 11:25

Branch CR26738_4 has been deleted by kgv.

SHA-1: 85a7502e8b47dc638e2f81bdc9f2c9f2dc2921b8
(0061183)
git (administrator)
2016-12-07 11:25

Branch CR26738_5 has been deleted by kgv.

SHA-1: fe5b266efce62184d8f1d75af1509e571419d4f2
(0061184)
git (administrator)
2016-12-07 11:25

Branch CR26738_6 has been deleted by kgv.

SHA-1: 55d22c01113013accf1f3d146368965a0d5c0854
(0061185)
git (administrator)
2016-12-07 11:25

Branch CR26738_7 has been deleted by kgv.

SHA-1: 813b49bf938f8030ef7d86291d205d03059674af
(0061186)
git (administrator)
2016-12-07 11:25

Branch CR26738_8 has been deleted by kgv.

SHA-1: 3e612566efffa73bba08008c693290c8f01bc385
(0061236)
git (administrator)
2016-12-07 11:30

Branch CR26738_9 has been deleted by kgv.

SHA-1: be17d7e52bf334e79037134bbd6c8a97bf225d8e

- Related Changesets
occt: master 0d0481c7
Timestamp: 2016-11-08 12:20:42
Author: msv
Committer: apn
Details ] Diff ]
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.
mod - src/BOPAlgo/BOPAlgo_Algo.cxx Diff ] File ]
mod - src/BOPAlgo/BOPAlgo_Algo.hxx Diff ] File ]
mod - src/BOPAlgo/BOPAlgo_ArgumentAnalyzer.cxx Diff ] File ]
mod - src/BOPAlgo/BOPAlgo_ArgumentAnalyzer.hxx Diff ] File ]
mod - src/BOPAlgo/BOPAlgo_ArgumentAnalyzer.lxx Diff ] File ]
mod - src/BOPAlgo/BOPAlgo_BOP.cxx Diff ] File ]
mod - src/BOPAlgo/BOPAlgo_Builder.cxx Diff ] File ]
mod - src/BOPAlgo/BOPAlgo_Builder.hxx Diff ] File ]
mod - src/BOPAlgo/BOPAlgo_Builder_2.cxx Diff ] File ]
mod - src/BOPAlgo/BOPAlgo_CheckerSI.cxx Diff ] File ]
mod - src/BOPAlgo/BOPAlgo_PaveFiller.cxx Diff ] File ]
mod - src/BOPAlgo/BOPAlgo_PaveFiller.hxx Diff ] File ]
mod - src/BOPAlgo/BOPAlgo_PaveFiller_1.cxx Diff ] File ]
mod - src/BOPAlgo/BOPAlgo_PaveFiller_2.cxx Diff ] File ]
mod - src/BOPAlgo/BOPAlgo_PaveFiller_3.cxx Diff ] File ]
mod - src/BOPAlgo/BOPAlgo_PaveFiller_4.cxx Diff ] File ]
mod - src/BOPAlgo/BOPAlgo_PaveFiller_5.cxx Diff ] File ]
mod - src/BOPAlgo/BOPAlgo_PaveFiller_6.cxx Diff ] File ]
mod - src/BOPAlgo/BOPAlgo_PaveFiller_8.cxx Diff ] File ]
mod - src/BOPAlgo/BOPAlgo_PaveFiller_9.cxx Diff ] File ]
mod - src/BOPDS/BOPDS_DS.cxx Diff ] File ]
mod - src/BOPDS/BOPDS_DS.hxx Diff ] File ]
mod - src/BOPDS/BOPDS_DS.lxx Diff ] File ]
mod - src/BOPDS/BOPDS_PaveBlock.cxx Diff ] File ]
mod - src/BOPDS/BOPDS_PaveBlock.hxx Diff ] File ]
mod - src/BOPTools/BOPTools_AlgoTools.cxx Diff ] File ]
mod - src/BOPTools/BOPTools_AlgoTools.hxx Diff ] File ]
mod - src/BOPTools/BOPTools_AlgoTools_1.cxx Diff ] File ]
mod - src/IntTools/IntTools_BeanFaceIntersector.cxx Diff ] File ]
mod - src/IntTools/IntTools_Context.cxx Diff ] File ]
mod - src/IntTools/IntTools_Context.hxx Diff ] File ]
mod - src/IntTools/IntTools_EdgeEdge.cxx Diff ] File ]
mod - src/IntTools/IntTools_EdgeEdge.hxx Diff ] File ]
mod - src/IntTools/IntTools_EdgeEdge.lxx Diff ] File ]
mod - src/IntTools/IntTools_EdgeFace.cxx Diff ] File ]
mod - src/IntTools/IntTools_EdgeFace.hxx Diff ] File ]
mod - src/IntTools/IntTools_FaceFace.cxx Diff ] File ]
mod - src/IntTools/IntTools_FaceFace.hxx Diff ] File ]
mod - src/IntTools/IntTools_Tools.cxx Diff ] File ]
mod - src/IntTools/IntTools_WLineTool.cxx Diff ] File ]
mod - src/IntTools/IntTools_WLineTool.hxx Diff ] File ]
mod - tests/boolean/gdml_private/ZH2 Diff ] File ]
mod - tests/boolean/gdml_private/ZI7 Diff ] File ]
mod - tests/boolean/gdml_private/ZJ7 Diff ] File ]
mod - tests/boolean/volumemaker/A8 Diff ] File ]
mod - tests/boolean/volumemaker/C4 Diff ] File ]
mod - tests/bugs/modalg_4/pro19653 Diff ] File ]
mod - tests/bugs/modalg_6/bug25880 Diff ] File ]
add - tests/bugs/modalg_6/bug26738 Diff ] File ]
mod - tests/bugs/modalg_6/bug26954_3 Diff ] File ]

- Issue History
Date Modified Username Field Change
2015-10-01 12:44 msv New Issue
2015-10-01 12:44 msv Assigned To => msv
2015-10-01 12:56 msv Relationship added related to 0026619
2015-10-13 13:06 msv Relationship added related to 0024302
2015-10-23 09:26 emv Relationship added related to 0026796
2015-12-29 11:30 msv Status new => assigned
2015-12-30 14:44 git Note Added: 0049684
2015-12-31 13:04 msv Summary Make Boolean operations non-destructive when running with fuzzy option => Make Boolean operations guarding arguments when running with fuzzy option
2016-01-14 21:34 git Note Added: 0049875
2016-01-19 18:27 msv Relationship added parent of 0027090
2016-01-25 15:49 git Note Added: 0050101
2016-02-16 17:54 msv Relationship added child of 0027166
2016-04-25 12:04 git Note Added: 0053543
2016-04-25 15:30 git Note Added: 0053555
2016-06-28 09:55 msv Summary Make Boolean operations guarding arguments when running with fuzzy option => Make Boolean operations safely treating arguments when running with fuzzy option
2016-06-28 09:59 msv Relationship added related to 0027049
2016-07-22 16:08 git Note Added: 0056185
2016-09-22 13:10 git Note Added: 0058020
2016-09-22 13:11 msv Note Added: 0058021
2016-09-22 13:11 msv Assigned To msv => emv
2016-09-22 13:11 msv Status assigned => resolved
2016-09-22 13:11 msv Steps to Reproduce Updated View Revisions
2016-09-23 12:22 emv Note Added: 0058063
2016-09-23 12:22 emv Assigned To emv => msv
2016-09-23 12:22 emv Status resolved => assigned
2016-09-27 11:49 git Note Added: 0058190
2016-09-27 11:50 msv Note Added: 0058191
2016-09-27 11:50 msv Assigned To msv => emv
2016-09-27 11:50 msv Status assigned => resolved
2016-09-27 12:22 git Note Added: 0058192
2016-09-27 12:23 emv Note Added: 0058193
2016-09-27 12:23 emv Assigned To emv => bugmaster
2016-09-27 12:23 emv Status resolved => reviewed
2016-09-27 12:27 mkv Assigned To bugmaster => apv
2016-09-28 10:44 apv Test case number => bugs modalg_6 bug26738
2016-09-28 12:26 apv Note Added: 0058240
2016-09-28 12:26 apv Assigned To apv => msv
2016-09-28 12:26 apv Status reviewed => assigned
2016-09-28 12:29 apv Note Added: 0058241
2016-10-05 17:34 git Note Added: 0058443
2016-10-27 12:01 git Note Added: 0059239
2016-10-27 12:02 msv Note Added: 0059240
2016-10-27 12:02 msv Assigned To msv => emv
2016-10-27 12:02 msv Status assigned => resolved
2016-10-27 12:08 msv Note Added: 0059241
2016-10-27 12:28 git Note Added: 0059242
2016-10-27 12:33 git Note Added: 0059243
2016-10-27 12:37 emv Note Added: 0059244
2016-10-27 12:37 emv Assigned To emv => bugmaster
2016-10-27 12:37 emv Priority normal => high
2016-10-27 12:37 emv Status resolved => reviewed
2016-10-27 13:56 apv Assigned To bugmaster => apv
2016-10-28 17:48 git Note Added: 0059370
2016-10-28 17:49 apv Note Added: 0059371
2016-10-31 16:24 apv Note Added: 0059639
2016-10-31 16:24 apv Assigned To apv => msv
2016-10-31 16:24 apv Status reviewed => assigned
2016-10-31 16:25 apv Note Edited: 0059639 View Revisions
2016-10-31 16:27 apv Note Added: 0059640
2016-11-01 19:01 git Note Added: 0059722
2016-11-01 19:07 git Note Added: 0059723
2016-11-01 19:10 msv Note Added: 0059724
2016-11-01 19:10 msv Status assigned => resolved
2016-11-01 19:10 msv Assigned To msv => bugmaster
2016-11-01 19:10 msv Status resolved => reviewed
2016-11-02 14:54 apv Assigned To bugmaster => apv
2016-11-02 17:17 git Note Added: 0059796
2016-11-02 17:17 apv Note Added: 0059797
2016-11-03 16:01 apv Note Added: 0059858
2016-11-03 16:01 apv Assigned To apv => bugmaster
2016-11-03 16:01 apv Status reviewed => tested
2016-11-08 12:33 apn Note Added: 0059990
2016-11-08 12:33 apn Assigned To bugmaster => msv
2016-11-08 12:33 apn Status tested => assigned
2016-11-08 14:41 git Note Added: 0060018
2016-11-08 14:42 msv Note Added: 0060019
2016-11-08 14:42 msv Assigned To msv => apn
2016-11-08 14:42 msv Status assigned => resolved
2016-11-08 14:42 msv Note Added: 0060020
2016-11-08 14:43 msv Status resolved => reviewed
2016-11-08 16:15 apn Assigned To apn => bugmaster
2016-11-08 16:15 apn Status reviewed => tested
2016-11-09 17:43 apn Changeset attached => occt master 0d0481c7
2016-11-09 17:43 apn Assigned To bugmaster => apn
2016-11-09 17:43 apn Status tested => verified
2016-11-09 17:43 apn Resolution open => fixed
2016-12-07 11:25 git Note Added: 0061179
2016-12-07 11:25 git Note Added: 0061180
2016-12-07 11:25 git Note Added: 0061181
2016-12-07 11:25 git Note Added: 0061182
2016-12-07 11:25 git Note Added: 0061183
2016-12-07 11:25 git Note Added: 0061184
2016-12-07 11:25 git Note Added: 0061185
2016-12-07 11:25 git Note Added: 0061186
2016-12-07 11:30 git Note Added: 0061236
2016-12-09 16:30 user533 Status verified => closed
2016-12-09 16:39 user533 Fixed in Version => 7.1.0


Copyright © 2000 - 2018 MantisBT Team
Powered by Mantis Bugtracker