DiscussionsIssue archiveOCCT:Modeling Algorithms

Archived issue #0030145

Modeling Algorithms - Boolean Operations on open solids

Open CASCADEOCCT:Modeling Algorithmsclosed10 public notes

Search issues

Description

In order to remove the old Boolean operations algorithm, the current algorithm should be extended to perform Boolean operations on open solids correctly.
The current BOP algorithm splits the solids first to combine the final result, but the solid splitting algorithm is unable to produce the correct splits for open solid. Thus, for the open solids the new approach for building the result shape should be developed.

Steps to reproduce

box b1 10 10 10
box b2 5 0 0 10 10 10

shape s1 So
shape s2 So
shape sh1 Sh
shape sh2 Sh

foreach f [lrange [explode b1 f] 0 4] { add $f sh1 }
foreach f [lrange [explode b2 f] 0 4] { add $f sh2 }

add sh1 s1
add sh2 s2

bop s1 s2

bopcom rcom
bopfuse rfuse
bopcut rcut

Public activity

10 archived notes

Participants are labeled by their role within this record.

01Commenter 3
Branch [archived branch] has been created by Author.

[revision removed]


Detailed log of new commits:

Author: Author
Date: Fri Sep 7 15:24:49 2018 +0300

    0030145: Modeling Algorithms - Boolean Operations on open solids
    
    Provide possibility to perform Boolean operations on open solids.
    
    Implementation of the new method *BOPAlgo_Builder::BuildBOP* performing the construction of the result shape for the given type of Boolean operation.
    This approach does not rely on the splits of solid to be correct and looks for the faces with necessary state relatively opposite solids to build the result solid.
    The call to this method is performed from BOP algorithm in case there were open solids in the arguments.
    
    Implementation of the draw command *buildbop* performing a call to the method above.
    
    Test cases for the issue.
02Commenter 3
Branch [archived branch] has been updated forcibly by Author.

[revision removed]
03Commenter 3
Branch [archived branch] has been updated forcibly by Author.

[revision removed]
04Commenter 4
Dear Mikhail, could you please review the git branch CR30145?
Test results - http://jenkins-test-12.nnov.opencascade.com/view/CR30145-master-emv/view/COMPARE/
05Commenter 5
dox/user_guides/boolean_operations/boolean_operations.md
- 2422: I think this should a subsection inside Boolean Operations Algorithm.
- 2424: misprint "approach ob Boolean operations"
- 2426: "the new approach has been implemented" => "another approach is used,"
- 2435: "The problem is in classification of the faces relatively such solids which strongly depends on the point on the face chosen for classification." =>
"This is explained by non-manifold nature of open solids: in some cases classification of a face depends on the point of the face chosen for classification."

src/BOPAlgo/BOPAlgo_Builder.cxx
- 442: why here aSx is not checked to be belonging to arguments?
- 445: here the message must be different, like BOPAlgo_AlertImproperShapeType.
- 451: use aS instead of itLS.Value().
- check work of algorithm with internal faces. May be take into account only boundary faces in initial filling of maps, and then insert internal faces using BOPAlgo_Tools::FillInternals method? Test case is to be created.
06Commenter 3
Branch [archived branch] has been updated by Author.

[revision removed]


Detailed log of new commits:

Author: Author
Date: Wed Oct 3 10:00:29 2018 +0300

    # Corrections according to remarks.

07Commenter 7
Please review again.
08Commenter 8
Reviewed.
09Commenter 1
Combination -
OCCT branch : [archived branch] SHA - [revision removed]
Products branch : [archived branch] SHA - [revision removed]
was compiled on Linux, MacOS and Windows platforms and tested in optimize mode.

Number of compiler warnings:
No new/fixed warnings

Regressions/Differences/Improvements:
No regressions/differences

CPU differences:
Debian80-64:
OCCT
Total CPU difference: 17351.219999999856 / 17401.889999999843 [-0.29%]
Products
Total CPU difference: 7446.910000000056 / 7431.600000000062 [+0.21%]
Windows-64-VC14:
OCCT
Total CPU difference: 17486.089689598415 / 17485.309684598556 [+0.00%]
Products
Total CPU difference: 8386.5201594 / 8352.574341799986 [+0.41%]


Image differences :
No differences that require special attention

Memory differences :
No differences that require special attention
10Commenter 3
Branch [archived branch] has been deleted by Participant.

[revision removed]

Related records