View Issue Details
0029883Open CASCADE[OCCT] OCCT:Modeling Algorithmspublic2018-06-19 10:152019-08-12 18:01
nbv
emv
normalminor
assignedopen

[OCCT] 7.5.0*
0029883: Boolean operation with prism and cone produces invalid result when tolerance of vertex in cone apex is too big
Too big tolerance of cone apex leads to create non-manifold contours (areas), which are very hard to process by Boolean algorithms.

At present, this is a limitation of Boolean operation.

Steps To Reproduce shows:

1. Result of Boolean operation with big tolerance is wrong (see scripts 1a and 2a).
2. After reducing the tolerance of apex (scripts 1b and 2b) we will obtain correct result.
********* Script # 1a (begin) **************
# Test bugs modalg_7 bug29807_b4a

restore [locate_data_file bug29807-obj.brep] b1
restore [locate_data_file bug29807-tool.brep] b2

trotate b2 +23.85857157145715500000 +12.00000000000000000000 +5.50000000000000000000 7 -7.14142842854285 0 -5
trotate b2 +23.85857157145715500000 +12.00000000000000000000 +5.50000000000000000000 7.1414284285428495 7.0000000000000009 -0 20
ttranslate b2 0 0 0.3

tolerance b2
# VERTEX : MAX=0.234223911268158 ==> WRONG. Tolerance is too big

bcut result b1 b2
# Result is wrong. Cone is not cut from prism.

********* Script # 1a (end) **************

********* Script # 1b (begin) **************
# Test bugs modalg_7 bug29807_b4b

restore [locate_data_file bug29807-obj.brep] b1
restore [locate_data_file bug29807-tool.brep] b2

trotate b2 +23.85857157145715500000 +12.00000000000000000000 +5.50000000000000000000 7 -7.14142842854285 0 -5
trotate b2 +23.85857157145715500000 +12.00000000000000000000 +5.50000000000000000000 7.1414284285428495 7.0000000000000009 -0 20
ttranslate b2 0 0 0.3

tolerance b2
# VERTEX : MAX=0.234223911268158 ==> WRONG. Tolerance is too big

explode b2 v
settolerance b2_2 1.0e-7

checkshape b2
# Seems to be valid

bcut result b1 b2
# Good result
********* Script # 1b (end) **************

********* Script # 2a (begin) **************
# Test bugs modalg_7 bug29807_b5a

restore [locate_data_file bug29807-obj.brep] b1
restore [locate_data_file bug29807-tool.brep] b2

trotate b2 +23.85857157145715500000 +12.00000000000000000000 +5.50000000000000000000 7 -7.14142842854285 0 5
trotate b2 +23.85857157145715500000 +12.00000000000000000000 +5.50000000000000000000 7.1414284285428495 7.0000000000000009 -0 -38
ttranslate b2 0 0 2

tolerance b2
# VERTEX : MAX=0.234223911268158 ==> WRONG. Tolerance is too big

bcut result b1 b2
# Result is wrong. Cone is not cut from prism.

********* Script # 2a (end) **************

********* Script # 2b (begin) **************
# Test bugs modalg_7 bug29807_b5b

restore [locate_data_file bug29807-obj.brep] b1
restore [locate_data_file bug29807-tool.brep] b2

trotate b2 +23.85857157145715500000 +12.00000000000000000000 +5.50000000000000000000 7 -7.14142842854285 0 5
trotate b2 +23.85857157145715500000 +12.00000000000000000000 +5.50000000000000000000 7.1414284285428495 7.0000000000000009 -0 -38
ttranslate b2 0 0 2

explode b2 v
settolerance b2_2 1.0e-7

checkshape b2
# Seems to be valid

bcut result b1 b2
# Good result
********* Script # 2b (end) **************
Described behavior is obtained on CR29807* branch
No tags attached.
 related to 0029922 new msv Boolean operation with conical argument loses degenerated edge child of 0029860 assigned emv Modeling Algorithms - BOPAlgo_BuilderFace cannot build new faces correctly
Issue History
2018-06-19 10:15nbvNew Issue
2018-06-19 10:15nbvAssigned To => msv