View Issue Details

IDProjectCategoryView StatusLast Update
0027049Open CASCADEOCCT:Modeling Algorithmspublic2023-08-01 15:08
ReportermsvAssigned Toemv 
Status assignedResolutionopen 
Product Version7.0.0 
Target VersionUnscheduled 
Summary0027049: Make non-destructive mode be defined by default in Boolean operations
DescriptionRecently 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 Reproduce1) 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.
TagsNo tags attached.
Test case numberbugs modalg_7 bug27049


related to 0026738 closedapn Open CASCADE Make Boolean operations safely treating arguments when running with fuzzy option 
related to 0027166 assignedmsv Open CASCADE Non-destructive principle in algorithms 



2017-08-17 17:00

tester   ~0069550

Problem described in issue is reproduced on current state of OCCT.


2018-06-26 15:12

developer   ~0077060

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

administrator   ~0100322

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

developer   ~0100586

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.


2021-04-26 11:50

administrator   ~0100587

Branch CR27049 has been updated forcibly by emv.

SHA-1: f858df7b56cb29f8fbf5f3261bcd94c788162eb3


2021-04-26 12:38

developer   ~0100589

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

developer   ~0100591

I propose not only making those tests, but also fix them.


2021-04-26 13:37

developer   ~0100592

Yes, of course.

Issue History

Date Modified Username Field Change
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
2017-08-17 17:00 mkv Test case number => bugs modalg_7 bug27049
2017-08-17 17:00 mkv 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
2022-10-24 10:41 szy Target Version 7.7.0 => 7.8.0
2023-08-01 15:08 dpasukhi Target Version 7.8.0 => Unscheduled