Archived issue #0026814
Strange result of Boolean operation in "boolean bsection N2" test case
Description
This bug has been detected while fixing bug #0026675.
In short, algorithm of Boolean operation (BOP) rejects an edge, which is the intersection line of two faces (see Steps to reproduce for more detail information).
This situation cannot be reproduced before integration of the fix for bug #0026675. The reason is that the intersection edge has greater tolerance (3.[revision removed]-005) on MASTER than on the FIX. Therefore, on the MASTER this edge is shared with a_135_1. Nevertheless, on the FIX intersection curve is obtained with greater precision.
-----------------------------------------
Try the following script to reproduce.
The main question is Why bsection result does not contain any edges?
Draw[]> restore [locate_data_file lh3d_px1.brep] a
Draw[]> plane p 0 0 0 1 0 0
Draw[]> mkface f p
Draw[]> explode a f
Draw[]> donly a_135
Draw[]> bopcurves a_135 f -2d
#c_1 (c2d1_1, c2d2_1): Tolerance Reached=3.[revision removed]-006
Draw[]> explode a_135 e
Draw[]> donly a_135 a_135_1 c_1
Draw[]> toler a_135_1
# Max tolerance for the EDGE is 1.0e-7
# 1.0e-7 + 3.[revision removed]-006 = 3.[revision removed]-006
## SCRIPT 1 (begin)
for {set tpar 0.0} {$tpar <= 1.0} {set tpar [expr $tpar+0.1]} {
cvalue c_1 $tpar xx yy zz
vertex vv xx yy zz
distmini dd vv a_135_1
puts "$tpar : [dval dd_val]"
}
## SCRIPT 1 (end)
## OUTPUT (begin)
0.0 : 5.[revision removed]-006
0.1 : 5.[revision removed]-006
...
0.9999999999999999 : 7.[revision removed]-010
## OUTPUT (end)
I.e. there are some points in the intersection edge, which are so far (distance is greater than 3.[revision removed]-006) from a_135_1. Consequently, the intersection edge must have failed to share with a_135_1.
However,
Draw[]> bsection rr135 a_135 f
Draw[]> donly a_135 rr135
Draw[]> nbshapes rr135
#VERTEX : 2, EDGE : 0
In short, algorithm of Boolean operation (BOP) rejects an edge, which is the intersection line of two faces (see Steps to reproduce for more detail information).
This situation cannot be reproduced before integration of the fix for bug #0026675. The reason is that the intersection edge has greater tolerance (3.[revision removed]-005) on MASTER than on the FIX. Therefore, on the MASTER this edge is shared with a_135_1. Nevertheless, on the FIX intersection curve is obtained with greater precision.
-----------------------------------------
Try the following script to reproduce.
The main question is Why bsection result does not contain any edges?
Draw[]> restore [locate_data_file lh3d_px1.brep] a
Draw[]> plane p 0 0 0 1 0 0
Draw[]> mkface f p
Draw[]> explode a f
Draw[]> donly a_135
Draw[]> bopcurves a_135 f -2d
#c_1 (c2d1_1, c2d2_1): Tolerance Reached=3.[revision removed]-006
Draw[]> explode a_135 e
Draw[]> donly a_135 a_135_1 c_1
Draw[]> toler a_135_1
# Max tolerance for the EDGE is 1.0e-7
# 1.0e-7 + 3.[revision removed]-006 = 3.[revision removed]-006
## SCRIPT 1 (begin)
for {set tpar 0.0} {$tpar <= 1.0} {set tpar [expr $tpar+0.1]} {
cvalue c_1 $tpar xx yy zz
vertex vv xx yy zz
distmini dd vv a_135_1
puts "$tpar : [dval dd_val]"
}
## SCRIPT 1 (end)
## OUTPUT (begin)
0.0 : 5.[revision removed]-006
0.1 : 5.[revision removed]-006
...
0.9999999999999999 : 7.[revision removed]-010
## OUTPUT (end)
I.e. there are some points in the intersection edge, which are so far (distance is greater than 3.[revision removed]-006) from a_135_1. Consequently, the intersection edge must have failed to share with a_135_1.
However,
Draw[]> bsection rr135 a_135 f
Draw[]> donly a_135 rr135
Draw[]> nbshapes rr135
#VERTEX : 2, EDGE : 0
Steps to reproduce
test boolean bsection N2
Public activity
4 archived notes
Participants are labeled by their role within this record.
In bug #0026842 analogical problem is described. However, it reproduces on the current MASTER (different from this issue).
DC,
The problem described in this issue is not reproduced on the current MASTER.
However, for getting correct result,two conditions must be satisfied:
1. The edge a_135_1 must be shared with section edge (with c_1 curve);
2. The edge a_135_1 must form common block with face f.
If at least one condition is not satisfied the section result will not contain any edge (only vertices as it is described).
The problem described in this issue is not reproduced on the current MASTER.
However, for getting correct result,two conditions must be satisfied:
1. The edge a_135_1 must be shared with section edge (with c_1 curve);
2. The edge a_135_1 must form common block with face f.
If at least one condition is not satisfied the section result will not contain any edge (only vertices as it is described).
Problem described in issue is not reproduced on current state of OCCT. Fixed in OCCT7.1.0.
Related records