Тема: Бага при роботе с полилинией дугой
Если в стартовой точке полилинии спросить getDistAtPoint, то получаем в результате eInvalidInput.
Функция:
bool getPointDistanseByPoly(const AcDbPolyline& poly, AcGePoint3d point, double& dist, double delta )
{
// ход конём.
AcGePoint3d startPoint;
poly.getStartPoint(startPoint);
if(startPoint == point) {
dist = 0;
return true;
}
AcGePoint3d pointOnLine;
ISOK_BOOL( poly.getClosestPointTo( point, pointOnLine ) );
double distance;
ISOK_BOOL( poly.getDistAtPoint( pointOnLine, distance ) );
if( pointOnLine.distanceTo( point ) > delta )
return false;
dist = distance;
return true;
}