1
0
mirror of https://git.dev.opencascade.org/repos/occt.git synced 2025-08-09 13:22:24 +03:00

0026560: BRepBndLib build too large bounding box in Z direction for planar spline edge.

Poles bounding box for curve added for bezier and bspline curves.
Method Poles() for Bezier curve added.

Test case for issue CR26560

Function to compute subshape max tolerance has been added.
Fixed bounding box expanding at Face/Face step of boolean operation.
Test cases are updated to the new behavior.
This commit is contained in:
aml
2015-10-08 09:39:35 +03:00
committed by bugmaster
parent a521d90d5a
commit bcd1975693
18 changed files with 194 additions and 22 deletions

View File

@@ -296,13 +296,25 @@ void BOPAlgo_PaveFiller::PerformFF()
aFF.Init(aNbCurves, aNbPoints);
//
// Curves
// Fix bounding box expanding coefficient.
Standard_Real aBoxExpandValue = aTolR3D;
if (aNbCurves > 0)
{
// Modify geometric expanding coefficient by topology value,
// since this bounging box used in sharing (vertex or edge).
Standard_Real aMaxVertexTol = Max (BRep_Tool::MaxTolerance(aFaceFace.Face1(), TopAbs_VERTEX),
BRep_Tool::MaxTolerance(aFaceFace.Face2(), TopAbs_VERTEX));
aBoxExpandValue += aMaxVertexTol;
}
BOPDS_VectorOfCurve& aVNC=aFF.ChangeCurves();
for (i=1; i<=aNbCurves; ++i) {
Bnd_Box aBox;
//
const IntTools_Curve& aIC=aCvsX(i);
const Handle(Geom_Curve)& aC3D= aIC.Curve();
bValid=IntTools_Tools::CheckCurve(aC3D, aTolR3D, aBox);
bValid=IntTools_Tools::CheckCurve(aC3D, aBoxExpandValue, aBox);
if (bValid) {
BOPDS_Curve& aNC=aVNC.Append1();
aNC.SetCurve(aIC);