Archived issue #0030145
Modeling Algorithms - Boolean Operations on open solids
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.
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
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.
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.
[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.
Branch [archived branch] has been updated forcibly by Author.
[revision removed]
[revision removed]
Branch [archived branch] has been updated forcibly by Author.
[revision removed]
[revision removed]
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/
Test results - http://jenkins-test-12.nnov.opencascade.com/view/CR30145-master-emv/view/COMPARE/
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.
- 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.
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.
[revision removed]
Detailed log of new commits:
Author: Author
Date: Wed Oct 3 10:00:29 2018 +0300
# Corrections according to remarks.
Please review again.
Reviewed.
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
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
Branch [archived branch] has been deleted by Participant.
[revision removed]
[revision removed]
Related records