View Issue Details
|ID||Project||Category||View Status||Date Submitted||Last Update|
|0027049||Open CASCADE||OCCT:Modeling Algorithms||public||2015-12-29 10:46||2021-08-29 19:24|
|Summary||0027049: Make non-destructive mode be defined by default in Boolean operations|
|Description||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).
|Steps To Reproduce||1) Change the test case tests\bugs\modalg_6\bug26619 so that to remove the line:|
2) Run the test bugs modalg_6 bug26619
The result must remain OK.
|Tags||No tags attached.|
|Test case number||bugs modalg_7 bug27049|
Problem described in issue is reproduced on current state of OCCT.
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.
Branch CR27049 has been created by emv.
Detailed log of new commits:
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.
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:
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.
Branch CR27049 has been updated forcibly by emv.
I agree to leave destructive mode by default.
However, it is worth to make new tests upon those causing regressions in non-destructive mode.
||I propose not only making those tests, but also fix them.|
||Yes, of course.|
|2015-12-29 10:46||msv||New Issue|
|2015-12-29 10:46||msv||Assigned To||=> msv|
|2016-06-28 09:59||msv||Relationship added||related to 0026738|
|2016-10-28 17:03||msv||Target Version||7.1.0 => 7.2.0|
|2017-07-24 09:32||msv||Target Version||7.2.0 => 7.3.0|
||Test case number||=> bugs modalg_7 bug27049|
||Note Added: 0069550|
|2017-12-05 16:59||msv||Target Version||7.3.0 => 7.4.0|
|2018-06-26 15:12||emv||Note Added: 0077060|
|2019-01-10 10:17||msv||Relationship added||related to 0027166|
|2019-08-12 17:45||msv||Target Version||7.4.0 => 7.5.0|
|2020-09-14 22:54||msv||Target Version||7.5.0 => 7.6.0|
|2021-04-15 14:20||emv||Assigned To||msv => emv|
|2021-04-15 14:20||emv||Status||new => assigned|
|2021-04-15 16:37||git||Note Added: 0100322|
|2021-04-26 11:04||emv||Note Added: 0100586|
|2021-04-26 11:50||git||Note Added: 0100587|
|2021-04-26 12:38||msv||Note Added: 0100589|
|2021-04-26 13:27||emv||Note Added: 0100591|
|2021-04-26 13:37||msv||Note Added: 0100592|
|2021-08-29 19:24||msv||Target Version||7.6.0 => 7.7.0|