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


Реализация Функции точки захвата (grip)


Объекты AutoCAD имеют точки захвата, которые появляются, когда пользователь выбирает объект устройством управления позицией. GetGripPoints () функция возвращает точки захвата, которые были определены для объекта.

Сигнатуры для getGripPoints () и moveGripPointsAt () функции для AcDbEntity

 

virtual Acad::ErrorStatus

AcDbEntity::getGripPoints(

AcGePoint3dArray& gripPoints,

AcDbIntArray& osnapModes,

AcDbIntArray& geomIds) const;

 

virtual Acad::ErrorStatus

AcDbEntity::moveGripPointsAt(

const AcDbIntArray& indices,

const AcGeVector3d& offset);

 

OsnapModes и geomIds параметры getGripPoints () функция в настоящее время не используются.

Режим Протяжения в редактировании власти{*захвата*} позволяет Вам протягивать объект,  перемещая выбранные власти{*захваты*} к новым местоположениям. AutoCAD называет moveGripPointsAt () функцией, когда пользователь находится в режиме протяжения. Для некоторых объектов, однако, некоторые власти{*захваты*} двигаются объектный скорее чем протяжение этого. Эти власти{*захваты*} включают власти{*захваты*} в текстовые объекты, блоки, midpoints строк, центры кругов, центры эллипсов, и объектов пункта{*точки*}. В этих случаях{*делах*}, moveGripPointsAt () функция вызывает{*называет*} transformBy ().

 

ОБРАТИТЕ ВНИМАНИЕ На заданное по умолчанию выполнение AcDbEntity:: moveGripPointsAt () функция должна вызвать transformBy () функция.

 

Когда пользователь находится в перемещении власти{*захвата*}, вращать, масштабировать, или отражать режимы, AutoCAD называет transformBy () функцией, описанной в главе 6, “ примитивами. ”

 

Если Вы хотите, чтобы  пользователь был способным редактировать ваш объект, используя власти{*захваты*}, вы будете должны перегрузить getGripPoints () и moveGripPointsAt () функции. Объект определяет его пункты{*точки*} власти{*захвата*} и как интерпретировать обеспеченное пользователем смещение.

Следующая выборка показывает, как заказной AsdkPoly класс осуществляет эти функции. Объект, определенный этим классом имеет пункт{*точку*} власти{*захвата*} в каждой вершине и пункте{*точке*} власти{*захвата*} в его центре. Эти пункты{*точки*} власти{*захвата*} возвращены getGripPoints () функция. Если пользователь выбирает пункт{*точку*} власти{*захвата*}, когда в режиме протяжения власти{*захвата*}, AutoCAD вызывает moveGripPointsAt () функция, проходящая в массиве индексов для выбранных пунктов{*точек*} власти{*захвата*} и трехмерного вектора, определяющего, сколько пользователя переместил устройство управления позицией. Если пользователь выбрал пункт{*точку*} власти{*захвата*} вершины, многоугольник протянут однородно указанным смещением.




Начало  Назад  Вперед



Книжный магазин