Перегрузка worldDraw () и viewportDraw ()
AutoCAD называет worldDraw () и viewportDraw () функциями, чтобы отобразить объект. Вы должны осуществить worldDraw () функция для любого класса, полученного из AcDbEntity. ViewportDraw () функция необязательный.
virtual Adesk::Boolean
AcDbEntity::worldDraw( AcGiWorldDraw *pWd);
virtual void
AcDbEntity::viewportDraw( AcGiViewportDraw *pVd);
Всякий раз, когда AutoCAD должен восстановить графику, чтобы отобразить объект, worldDraw () и viewportDraw () функции называются следующим способом:
if (!entity->worldDraw(pWd))
for (each relevant viewport)
entity->viewportDraw(pVd);
WorldDraw() функция формирует часть из графического представления объекта, которое может быть определено независимо от любой частности modelspace представление{*вид*} или бумажно - пространственные контексты области просмотра. ViewportDraw () функция тогда формирует часть иждивенца представления из графики объекта. Если любая из графики объекта - иждивенец представления, worldDraw() функция должна возвратить kFalse и viewportDraw () функция должна быть осуществлена. Наоборот, если объект не имеет никакой графики иждивенца представления, то worldDraw() должна возвратить kTrue, и заказной объект не осуществляет ViewportDraw().
AcDbEntity:: worldDraw () функция берет указатель на объект AcGiWorldDraw. AcGiWorldDraw - контейнерный класс для AcGi геометрии и объектов черт. Определенно, AcGiWorldDraw содержит два других объекта:
§ AcGiWorldGeometry
§ AcGiSubEntityTraits
К объекту AcGiWorldGeometry можно обращаться изнутри worldDraw(), используя AcGiWorldDraw::geometry(), и объект AcGiSubEntityTraits можно обращаться, используя
AcGiWorldDraw:: subEntityTraits() функция. Векторы записей объекта AcGiWorldGeometry к AutoCAD освежают память, используя ее набор рисунка примитивов. Примитив - команда с самым низким уровнем Используемым, чтобы тянуть{*рисовать*} графические объекты. Объект для геометрии имеет следующие функции для рисунка примитивов во внешних мировых координатах:
§ Circle
§ Circular arc
§ Polyline
§ Polygon
§ Mesh
§ Shell
§ Text
§ Xline
§ Ray
Объект AcGiSubEntityTraits устанавливает графические атрибуты со значением, использующие его набор функций черт:
§ Color
§ Layer
§ Linetype
§ Polygon fill type
§ Selection marker
AcDbEntity:: viewportDraw () функция берет указатель на объект AcGiViewportDraw и формирует представление-определенное представление объекта. Область просмотра тянет{*рисует*} объект - также контейнерный объект для других объектов, которые включают следующее:
§ AcGiViewportGeometry
§ AcGiSubEntityTraits
§ AcGiViewport
Объект геометрии области просмотра обеспечивает тот же самый список примитивов, поскольку мировая геометрия возражает, и прибавляет к этому следующие примитивы, которые используют глаз - и координаты пространства дисплея, чтобы рисовать ломаные линии и многоугольники:
§ polylineEye ()
§ polygonEye ()
§ polylineDc ()
§ polygonDc ()
Объект черт подобъекта области просмотра - тот же самый, поскольку используемое миром рисует объект (AcGiSubEntityTraits). Объект области просмотра обеспечивает функции для запроса матриц преобразования области просмотра и рассмотрения параметров.
ПРЕДУПРЕЖДЕНИЕ! Объект AcGi типа AcGiWorldDraw или AcGiViewportDraw не должен быть сохранен как глобальная или статическая переменная. Не сохраните копии объектов AcGi поперек запросов к worldDraw () и viewportDraw () функции. Однажды это возвращение функций, объекты AcGi больше не допустимы.
Для получения дополнительной информации относительно AcGi библиотеки, см. главу 26, “ Графическая Библиотека Интерфейсов. ”