Тема: Координаты точек сплайна.
Всем привет. Задача заключается в следующем: необходимо получить точки сплайна от начала до конца с определённым шагом. Я делаю так:
if (AcDbSpline::cast(pEnt.object()))
{
// Обрабатываем Spline
acutPrintf(_T("\nSpline:"));
cDbSpline * pSpline = AcDbSpline::cast(pEnt);
double parmStart=0, parmEnd=0;
AcGePoint3d pStepSpline;
if (pSpline->getStartParam(parmStart) == Acad::eOk && pSpline->getEndParam(parmEnd) == Acad::eOk) {
pSpline->getPointAtDist(parmStart,pStepSpline);
acutPrintf(_T("\nSpline start point: (%i %g %g %g)"), countSpline, pStepSpline.x, pStepSpline.y, pStepSpline.z);
for(double i=parmStart; i<=parmEnd; i=i+1){
pSpline->getPointAtDist(i,pStepSpline);
acutPrintf(_T("\npStepSpline: (%i %g %g %g)"), countSpline, pStepSpline.x, pStepSpline.y, pStepSpline.z);
}
pSpline->getPointAtDist(parmEnd,pStepSpline);
acutPrintf(_T("\nSpline end point getPointAtDist: (%i %g %g %g)"), countSpline, pStepSpline.x, pStepSpline.y, pStepSpline.z);
pSpline->getEndPoint(pStepSpline);
acutPrintf(_T("\nSpline end point getEndPoint: (%i %g %g %g)"), countSpline, pStepSpline.x, pStepSpline.y, pStepSpline.z);
}
countSpline++;
}
Вывод в консоль, следующий:
........
........
pStepSpline: (0 2414.204416 684.763574 0.000000)
pStepSpline: (0 2414.733322 685.612208 0.000000)
pStepSpline: (0 2415.251101 686.467675 0.000000)
pStepSpline: (0 2415.757252 687.330071 0.000000)
pStepSpline: (0 2416.251245 688.199487 0.000000)
Spline end point getPointAtDist: (0 2416.531134 688.705476 0.000000)
Spline end point getEndPoint: (0 2411.042854 729.424134 0.000000)
Проблема в том, что у меня нет прохода до конца сплайна, до его конечной точки.
И ещё не очень понятно что за double возвращает getStartParam и getEndParam?