MantisBT
Mantis Bug Tracker Workflow

View Issue Details Jump to Notes ] Related Changesets ] Issue History ] Print ]
IDProjectCategoryView StatusDate SubmittedLast Update
0030145Open CASCADE[OCCT] OCCT:Modeling Algorithmspublic2018-09-18 15:272018-10-07 12:43
Reporteremv 
Assigned Tobugmaster 
PrioritynormalSeverityfeature 
StatusverifiedResolutionfixed 
PlatformOSOS Version
Product Version[OCCT] 7.3.0 
Target Version[OCCT] 7.4.0*Fixed in Version 
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
Attached Files

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

-  Notes
(0079303)
git (administrator)
2018-09-21 09:35

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.
(0079475)
git (administrator)
2018-09-28 13:09

Branch CR30145 has been updated forcibly by emv.

SHA-1: 86fe59606fd9f51065b560eaeb1a65161c2743c7
(0079539)
git (administrator)
2018-10-01 07:42

Branch CR30145 has been updated forcibly by emv.

SHA-1: 05efc658752128ba8e01fdf6b29fad69e357dfaf
(0079550)
emv (developer)
2018-10-01 11:41

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/ [^]
(0079617)
msv (developer)
2018-10-02 18:15

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.
(0079627)
git (administrator)
2018-10-03 10:01

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.

(0079643)
emv (developer)
2018-10-03 13:39

Please review again.
(0079654)
msv (developer)
2018-10-03 18:29

Reviewed.
(0079658)
bugmaster (administrator)
2018-10-03 19:20

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
(0079750)
git (administrator)
2018-10-07 12:43

Branch CR30145 has been deleted by inv.

SHA-1: da68380b252b88773f14b288c0b806901887b9b3

- Related Changesets
occt: master 13c0e402
Timestamp: 2018-09-07 12:24:49
Author: 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.
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


Copyright © 2000 - 2018 MantisBT Team
Powered by Mantis Bugtracker