MantisBT - Open CASCADE
View Issue Details
0027049Open CASCADE[OCCT] OCCT:Modeling Algorithmspublic2015-12-29 10:462021-04-26 13:37
[OCCT] 7.0.0 
[OCCT] 7.6.0* 
bugs modalg_7 bug27049
0027049: Make non-destructive mode be defined by default in Boolean operations
Recently Boolean operation has got the option of non-destructive mode of work. In this mode the algorithm does not change input shapes (in particular tolerances of vertices). The aim of this improvement is to make this mode of work the default one.
This is to be done both in algorithms (BOPAlgo, BRepAlgoAPI) and in Draw framework (BOPTest).
1) Change the test case tests\bugs\modalg_6\bug26619 so that to remove the line:
bnondestructive 1

2) Run the test bugs modalg_6 bug26619

The result must remain OK.
No tags attached.
related to 0026738closed apn Open CASCADE Make Boolean operations safely treating arguments when running with fuzzy option 
related to 0027166assigned msv Open CASCADE Non-destructive principle in algorithms 
Issue History
2015-12-29 10:46msvNew Issue
2015-12-29 10:46msvAssigned To => msv
2015-12-29 10:47msvRelationship addedrelated to 0026619
2016-06-28 09:59msvRelationship addedrelated to 0026738
2016-10-28 17:03msvTarget Version7.1.0 => 7.2.0
2017-07-24 09:32msvTarget Version7.2.0 => 7.3.0
2017-08-17 17:00mkvTest case number => bugs modalg_7 bug27049
2017-08-17 17:00mkvNote Added: 0069550
2017-12-05 16:59msvTarget Version7.3.0 => 7.4.0
2018-06-26 15:12emvNote Added: 0077060
2018-06-26 15:12emvRelationship addedrelated to 0029711
2019-01-10 10:17msvRelationship addedrelated to 0027166
2019-08-12 17:45msvTarget Version7.4.0 => 7.5.0
2020-09-14 22:54msvTarget Version7.5.0 => 7.6.0*
2021-04-15 14:20emvAssigned Tomsv => emv
2021-04-15 14:20emvStatusnew => assigned
2021-04-15 16:37gitNote Added: 0100322
2021-04-26 11:04emvNote Added: 0100586
2021-04-26 11:50gitNote Added: 0100587
2021-04-26 12:38msvNote Added: 0100589
2021-04-26 13:27emvNote Added: 0100591
2021-04-26 13:37msvNote Added: 0100592

2017-08-17 17:00   
Problem described in issue is reproduced on current state of OCCT.
2018-06-26 15:12   
The test case bugs modalg_7 bug27049 is going to be fixed by the fix for the issue #29711, so the boolean operation in test case bugs modalg_6 bug26619 is going to be working the same in both not-safe and safe modes.
The issue is still should not be closed even after integration of the fix for #29711, as it does not set the non-destructive mode as default in Boolean operations.
2021-04-15 16:37   
Branch CR27049 has been created by emv.

SHA-1: 324753e336e94b9ace4fb5047d078df7d2300061

Detailed log of new commits:

Author: emv
Date: Thu Apr 15 16:30:03 2021 +0300

    0027049: Make non-destructive mode be defined by default in Boolean operations
    Set non-destructive mode enabled by default in Boolean operation algorithms. It means that shapes will not be modified during any Boolean, Split, GeneralFuse, MakerVolume, CellsBuilder operations.
    Since now, in this default mode, the user should not expect any shape from the input arguments being present in the result shape of the operations mentioned above. Some of the input shapes may be passed to the result, in case they are not affected by the operation, but in general, it is better to work through the History mechanism. The shapes replaced by the copies should be obtained through Modified method.
    Incomplete: documentation of the algorithms has to be updated accordingly.
2021-04-26 11:04   
Working on the issue I was thinking if we should really enable the non-destructive mode in Booleans by default. I am currently against it for several reasons:
1. Not all users may really need it (and those who do need it can switch it on using the corresponding setter);
2. Enabling it by default we will stop testing the destructive mode.
3. Performance of non-destructive Booleans is significantly worse in some case.

Moreover, making the non-desctructive mode default in Boolean operations leads to numerous regressions:
http://occt-tests/CR27049-master-emv-OCCT/Debian80-64/summary.html [^]
http://occt-tests/CR27049-master-emv-OCCT/Windows-64-VC14/summary.html [^]
http://occt-tests/CR27049-master-emv-Products/Debian80-64/summary.html [^]
http://occt-tests/CR27049-master-emv-Products/Windows-64-VC14/summary.html [^]

Some of these regressions are caused by invalid inputs which are not allowed to be healed in Booleans in this mode and passed into result as is. Some regressions are caused by the inconsistencies in the algorithm. In any case, all these regressions have to be analyzed and resolved.

When all regressions are resolved, I propose to close the issue keeping the destructive mode default in Booleans.
2021-04-26 11:50   
Branch CR27049 has been updated forcibly by emv.

SHA-1: f858df7b56cb29f8fbf5f3261bcd94c788162eb3
2021-04-26 12:38   
I agree to leave destructive mode by default.
However, it is worth to make new tests upon those causing regressions in non-destructive mode.
2021-04-26 13:27   
I propose not only making those tests, but also fix them.
2021-04-26 13:37   
Yes, of course.