1
0
mirror of https://git.dev.opencascade.org/repos/occt.git synced 2025-04-10 18:51:21 +03:00

0029510: IntWalk_PWalking:: PutToBoundary(...) method results in appearing several coincident points in Walking-line

Places have been detected where coincident points are created. The problem has been fixed.

(cherry picked from commit 7c7cda9f73f8762d4999657a925f65cd02bc6864)
This commit is contained in:
nbv 2018-02-15 14:38:59 +03:00
parent 5eba99e74b
commit 1a196a871d

View File

@ -2361,7 +2361,16 @@ SeekPointOnBoundary(const Handle(Adaptor3d_HSurface)& theASurf1,
{
aP1.SetXYZ(line->Value(aPInd).Value().XYZ());
if (aP1.SquareDistance(aPInt) > Precision::SquareConfusion())
{
break;
}
else if (aPInd == 1)
{
// After insertion, we will obtain
// two coincident points in the line.
// Therefore, insertion is forbidden.
return isOK;
}
}
for (++aPInd; aPInd <= aNbPnts; aPInd++)
@ -2402,7 +2411,16 @@ SeekPointOnBoundary(const Handle(Adaptor3d_HSurface)& theASurf1,
{
aPCurr.SetXYZ(line->Value(aPInd).Value().XYZ());
if (aPCurr.SquareDistance(aPInt) > Precision::SquareConfusion())
{
break;
}
else if (aPInd == aNbPnts)
{
// After insertion, we will obtain
// two coincident points in the line.
// Therefore, insertion is forbidden.
return isOK;
}
}
for (--aPInd; aPInd > 0; aPInd--)