DiscussionsIssue archiveOCCT:Modeling Algorithms

Archived issue #0027221

Regression vs. 6.7.0: bcut fails without notice

CommunityOCCT:Modeling Algorithmsclosed8 public notes

Search issues

Description

The problem is reported on http://dev.opencascade.org/index.php?q=node/1150

OCCT 6.7.1 and later (including current master) fails to make a cut of two solids without giving any error message (produced result is geometrically equivalent to original solid).

Steps to reproduce

Test case for this issue has been created in frame of the fix for issue #0027252.

pload MODELING

restore [locate_data_file Attachment 1 (BREP)] a
explode a
mkplane f a_2
prism p f -25 0 0
bcut result a_1 p
donly result a_2

checkprops result -v 56860.2 -s 72076

Public activity

8 archived notes

Participants are labeled by their role within this record.

01Commenter 1
The newer versions of OCCT do not find intersection curve between a pair of faces (see script below). Without this intersection Boolean operation cannot work right.

restore Attachment 1 (BREP) a
explode a
mkplane f a_2
prism p f -25 0 0

explode a_1 f
explode p f
don a_1_7 p_3
bopcurves a_1_7 p_3
02Commenter 2
Intersection curve is found. It is an ellipse (cylinder-plane intersection) and seems to be valid.

However, it is rejected by post-processing of Boolean algorithm in GeomInt_LineConstructor::TreatCircle(...) method.

Most likely, the reason is in putting incorrect vertexes (IntPatch_Points) to the intersection curve.

In OCCT 6.7.0 version the result seems to be valid. In OCCT 6.7.1 and higher (including current MASTER) result of "bopcurves" command is empty.
03Commenter 3
IntPatch_Points are found in IntPatch_ImpImpIntersection::Perform(...) (solrst.Perform(...)) as intersection point between surface (in this case, cylinder) domain and quadric (plane).

In fact, domain is 2d-representation of surface boundaries.

In other words, there are some points in surface boundary, which are in quadric with given tolerance (3.0e-7). However, the distance between it and intersection line (ellipse) is greater than tolerance. Therefore, this point is rejected.

Possible reason is that the distance between the point and the curve computes wrong (with big error - see issue #0027252). If it is not other reasons of described behavior are possible.
04Commenter 4
Dear Mikhail,

Fix in branch CR27252 solves this problem completely. Please review.
05Commenter 5
Dear Commenter 1, please check and close this bug after resolving #0027252.
06Commenter 6
Dear Andrey,

This bug is fixed in frame of the issue #0027252 (branch CR27252_4). Please see the message #0027252.

07Commenter 7
08Commenter 8
TESTED.

Related records