Тема: Проблема при transformBy
Написал функцию:
static int ads_rect(void)
{
struct resbuf *pArgs =acedGetArgs () ;
AcGeMatrix3d matTr;
AcGePoint3d ptDisp;
AcGePoint2d pt0(0.0, 0.0);
AcGePoint2d pt1(0.0, 500.0);
AcGePoint2d pt2(100.0, 500.0);
AcGePoint2d pt3(100.0, 0);
AcDbPolyline *pLine = new AcDbPolyline(4);
Acad::ErrorStatus es=pLine->addVertexAt(0,pt0);
es=pLine->addVertexAt(1,pt1);
es=pLine->addVertexAt(2,pt2);
es=pLine->addVertexAt(3,pt3);
pLine->setClosed(Adesk::kTrue);
pLine->setColorIndex(2);
// pArgs- точка переноса
ptDisp.set(pArgs->resval.rpoint[0],pArgs->resval.rpoint[1],pArgs->resval.rpoint[2]);
matTr.setToIdentity();
matTr.setToTranslation(ptDisp.asVector());
pLine->transformBy(matTr);
// функция присоединяет примитив к текущей базе
postToDwg(pLine);
pLine->close();
acedRetVoid () ;
return (RSRSLT) ;
}
Создает полилинию в плоскости XY и переносит её на указанный вектор
вызываю:
(rect '(20 0 0)) - Нормально, начальная точка полилинии проходит через '(20 0 0)
(rect '(5 0 0)) - Ненормально, начальная точка полилинии проходит через '(0 0 0)
(rect '(5.0 0 0)) - Нормально, начальная точка полилинии проходит через '(5.0 0 0)
Вопрос почему неправильно преобразуется с точкой '(5 0 0)?