ObjectARX, AutoCAD. Среда программирования библиотеки C++

       

Реализация Функции точки растяжения


Набор точек растяжения для объекта - часто подмножество его пунктов{*точек*} власти{*захвата*}. Когда пользователь вызывает команду 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);

}



Содержание раздела