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

       

Перегрузка 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, “ Графическая Библиотека Интерфейсов. ”


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