I'm using OCCT 7.2.0.
I'm trying to make "complement" face from original face on the base surface in my project.
In here, the "complement" means to cut out the original face area from the base surface, like a cookie-cutter.
To do that, I'm using BOP Cut operation, but it makes sometimes unexpected result.
I investigate the face data in failure case, then I found that relaxing one edge tolerance in the base surface makes Cut result fine.
# Draw commands that makes unexpected result restore 194_Fo011.brep Fo restore 194_Hs009.brep Hs bop Hs Fo; bopcut r vdisplay r; vfit vsetdispmode 1 # Draw commands that makes well result restore 194_Fo011.brep Fo restore 194_Hs009+RelaxEdge2Tol.brep Hs bop Hs Fo; bopcut r vdisplay r; vfit vsetdispmode 1
But, I'm still not sure why the tolerance enlargement makes Cut result change.
So I have two questions:
- Why the Cut operation with original data makes unexpected result? (Fo and Hs are on same surface, then the cut should success.)
- If the edge tolerance enlargement is the only way, how to calculate the tolerance value? (I already tried to it with GeomLib_CheckCurveOnSurface and BRepExtrema_DistShapeShape, but couldn't...)
Thanks in advance.