View Issue Details

IDProjectCategoryView StatusLast Update
0030145Open CASCADEOCCT:Modeling Algorithmspublic2018-10-07 12:43
Reporteremv Assigned Tobugmaster  
PrioritynormalSeverityfeature 
Status closedResolutionfixed 
Product Version7.3.0 
Target Version7.4.0Fixed in Version7.4.0 
Summary0030145: Modeling Algorithms - Boolean Operations on open solids
DescriptionIn 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 Reproducebox 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
TagsNo tags attached.
Test case numberboolean/opensolid/A1,A2,A3,A4,A5,A6,A7,A8

Relationships

related to 0030150 closedapn Modeling Algorithms - Removal of BRepAlgo_BooleanOperations and BRepAlgo_DSAccess classes 
child of 0028575 assignedemv Removal of the old Boolean Operations algorithm - BRepAlgo_BooleanOperation 

Activities

git

2018-09-21 09:35

administrator   ~0079303

Branch CR30145 has been created by emv.

SHA-1: d57d5e4eaee704d9926a28c2123ae7ce90e37f4a


Detailed log of new commits:

Author: emv
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.

git

2018-09-28 13:09

administrator   ~0079475

Branch CR30145 has been updated forcibly by emv.

SHA-1: 86fe59606fd9f51065b560eaeb1a65161c2743c7

git

2018-10-01 07:42

administrator   ~0079539

Branch CR30145 has been updated forcibly by emv.

SHA-1: 05efc658752128ba8e01fdf6b29fad69e357dfaf

emv

2018-10-01 11:41

developer   ~0079550

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/

msv

2018-10-02 18:15

developer   ~0079617

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.

git

2018-10-03 10:01

administrator   ~0079627

Branch CR30145 has been updated by emv.

SHA-1: da68380b252b88773f14b288c0b806901887b9b3


Detailed log of new commits:

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

    # Corrections according to remarks.

emv

2018-10-03 13:39

developer   ~0079643

Please review again.

msv

2018-10-03 18:29

developer   ~0079654

Reviewed.

bugmaster

2018-10-03 19:20

administrator   ~0079658

Combination -
OCCT branch : CR30145 SHA - da68380b252b88773f14b288c0b806901887b9b3
Products branch : master SHA - bdd0353fc53f9279cf9520705239af63f757c03a
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

git

2018-10-07 12:43

administrator   ~0079750

Branch CR30145 has been deleted by inv.

SHA-1: da68380b252b88773f14b288c0b806901887b9b3

Related Changesets

occt: master 13c0e402

2018-09-07 12:24:49

emv


Committer: bugmaster Details Diff
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.
Affected Issues
0030145
mod - dox/user_guides/boolean_operations/boolean_operations.md Diff File
mod - dox/user_guides/draw_test_harness/draw_test_harness.md Diff File
mod - src/BOPAlgo/BOPAlgo.msg Diff File
mod - src/BOPAlgo/BOPAlgo_Alerts.hxx Diff File
mod - src/BOPAlgo/BOPAlgo_BOP.cxx Diff File
mod - src/BOPAlgo/BOPAlgo_BOP.hxx Diff File
mod - src/BOPAlgo/BOPAlgo_BOPAlgo_msg.pxx Diff File
mod - src/BOPAlgo/BOPAlgo_Builder.cxx Diff File
mod - src/BOPAlgo/BOPAlgo_Builder.hxx Diff File
mod - src/BOPAlgo/BOPAlgo_Builder_3.cxx Diff File
mod - src/BOPAlgo/BOPAlgo_MakerVolume.cxx Diff File
mod - src/BOPAlgo/BOPAlgo_Tools.cxx Diff File
mod - src/BOPAlgo/BOPAlgo_Tools.hxx Diff File
mod - src/BOPTest/BOPTest.cxx Diff File
mod - src/BOPTest/BOPTest_PartitionCommands.cxx Diff File
mod - src/BOPTools/BOPTools_AlgoTools.cxx Diff File
mod - src/BRepFeat/BRepFeat_Builder.cxx Diff File
mod - src/BRepFeat/BRepFeat_Builder.hxx Diff File
mod - src/TopoDS/TopoDS_AlertWithShape.hxx Diff File
mod - tests/boolean/bcut_complex/O3 Diff File
mod - tests/boolean/bcut_complex/O4 Diff File
mod - tests/boolean/bcut_complex/O5 Diff File
mod - tests/boolean/bcut_complex/O6 Diff File
mod - tests/boolean/bfuse_complex/O5 Diff File
mod - tests/boolean/grids.list Diff File
add - tests/boolean/opensolid/A1 Diff File
add - tests/boolean/opensolid/A2 Diff File
add - tests/boolean/opensolid/A3 Diff File
add - tests/boolean/opensolid/A4 Diff File
add - tests/boolean/opensolid/A5 Diff File
add - tests/boolean/opensolid/A6 Diff File
add - tests/boolean/opensolid/A7 Diff File
add - tests/boolean/opensolid/A8 Diff File
add - tests/boolean/opensolid/A9 Diff File
mod - tests/bugs/modalg_2/bug420 Diff File

Issue History

Date Modified Username Field Change
2018-09-18 15:27 emv New Issue
2018-09-18 15:27 emv Assigned To => msv
2018-09-18 15:28 emv Relationship added child of 0028575
2018-09-21 09:35 git Note Added: 0079303
2018-09-21 09:38 emv Assigned To msv => emv
2018-09-21 09:38 emv Status new => assigned
2018-09-21 09:45 emv Relationship added related to 0030150
2018-09-28 13:09 git Note Added: 0079475
2018-10-01 07:42 git Note Added: 0079539
2018-10-01 11:41 emv Note Added: 0079550
2018-10-01 11:41 emv Assigned To emv => msv
2018-10-01 11:41 emv Status assigned => resolved
2018-10-02 18:15 msv Note Added: 0079617
2018-10-02 18:15 msv Assigned To msv => emv
2018-10-02 18:15 msv Status resolved => assigned
2018-10-03 10:01 git Note Added: 0079627
2018-10-03 13:39 emv Note Added: 0079643
2018-10-03 13:39 emv Assigned To emv => msv
2018-10-03 13:39 emv Status assigned => resolved
2018-10-03 18:29 msv Note Added: 0079654
2018-10-03 18:29 msv Assigned To msv => bugmaster
2018-10-03 18:29 msv Status resolved => reviewed
2018-10-03 19:18 bugmaster Test case number => boolean/opensolid/A1,A2,A3,A4,A5,A6,A7,A8
2018-10-03 19:20 bugmaster Note Added: 0079658
2018-10-03 19:20 bugmaster Status reviewed => tested
2018-10-06 19:15 bugmaster Changeset attached => occt master 13c0e402
2018-10-06 19:15 bugmaster Status tested => verified
2018-10-06 19:15 bugmaster Resolution open => fixed
2018-10-07 12:43 git Note Added: 0079750