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:
@@ -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);
|
||||
|
Reference in New Issue
Block a user