Реализация Функции точки растяжения
Набор точек растяжения для объекта - часто подмножество его пунктов{*точек*} власти{*захвата*}. Когда пользователь вызывает команду STRETCH, getStretchPoints () функция используется, чтобы возвратить пункты{*точки*} протяжения, определенные для выбранного объекта. Для многих объектов, режим власти{*захвата*} и режим протяжения идентичен. Выполнение для AcDbEntity:: getStretchPoints () функция и AcDbEntity:: moveStretchPointsAt () функция должно вызвать ваш getGripPoints () и moveGripPointsAt () функции.
Сигнатуры для функций протяжения
virtual Acad::ErrorStatus
AcDbEntity::getStretchPoints( AcGePoint3dArray& stretchPoints) const;
virtual Acad::ErrorStatus
AcDbEntity::moveStretchPointsAt(
const AcDbIntArray& indices,
const AcGeVector3d& offset);
Вы не требуетесь, чтобы перегрузить getStretchPoints () и moveStretchPointsAt () функции AcDbEntity, потому что они значение по умолчанию к getGripPoints () и transformBy () функции.
Заказной AsdkPoly класс перегружает эти функции как показано в примере в этом разделе. GetStretchPoints () функция возвращает вершину многоугольника, но не центр. MoveStretchPointsAt () функциональные проверки, были ли все пункты{*точки*} протяжения выбраны. Если они имеют, это вызывает transformBy () функция. Иначе, это вызывает moveGripPointsAt () функция.
Acad::ErrorStatus
AsdkPoly::getStretchPoints(
AcGePoint3dArray& stretchPoints) const
{
assertReadEnabled();
Acad::ErrorStatus es;
if ((es = getVertices3d(stretchPoints)) != Acad::eOk)
{
return es;
}
// Remove the duplicate point at the start and end.
//
stretchPoints.removeAt(stretchPoints.length() - 1);
return es;
}
Acad::ErrorStatus
AsdkPoly::moveStretchPointsAt(
const AcDbIntArray& indices,
const AcGeVector3d& offset)
{
return moveGripPointsAt(indices, offset);
}