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

       

AcGi Краткий обзор


AcGi библиотека определяет набор интерфейсов, с которыми объекты могут выполнять себя к основной системе графики. Эта глава обсуждает, как AcGi работает в среде AutoCAD. Однако, это работает подобным способом для других систем, которые осуществляют интерфейсы AcGi.

AcGi библиотека позволяет примитивам сделать запрос для информации относительно процесса регенерации, и детализировать набор примитивов, использующих классы геометрии.

Обратитесь к AcGi, происходит в пределах следующего три функции члена базового класса AcGiDrawable:

Adesk::Boolean

worldDraw( AcGiWorldDraw*);

void

viewportDraw( AcGiViewportDraw*);

Adesk::UInt32

setAttributes( AcGiDrawableTraits*);

AcDbEntity наследует эти функции от AcGiDrawable. Как правило, при осуществлении заказного примитива, Вы перегрузите эти функции и обеспечите ваше собственное выполнение.

Когда AutoCAD должен восстановить графику, чтобы отобразить примитив, это вызывает эти функции следующим способом:

AcGiDrawable *pDrawable;

pDrawable->setAttributes(pDt);



if (!pDrawable->worldDraw(pWd))

{

for each viewport

pDrawable->viewportDraw(pVd);

}

Для заказных примитивов, AutoCAD вызывает ваш setAttributes (), worldDraw (), и viewportDraw () функциями, если Вы перегрузили их. AutoCAD проходит в соответствующих объектах AcGi к этим функциям. Это позволило бы AutoCAD отобразить ваш заказной примитив, также, как если это был встроенный примитив.

SetAttributes() функция инициализирует атрибуты для примитива, типа цвета, уровня, и linetype. WorldDraw () функция формирует часть из графического представления примитива, которое может быть определено независимым от любого специфического вида пространства модели или контекстов области просмотра пространства листа. ViewportDraw () функция тогда формирует часть иждивенца представления из графики примитива. Если любая из графики примитива - иждивенец представления, worldDraw () должен возвратить kFalse, и viewportDraw () должен быть осуществлен.

Наоборот, если примитив не имеет никакой графики иждивенца представления, то worldDraw () должен возвратить kTrue, и заказной примитив не осуществляет viewportDraw ().


Следующая иллюстрация показывает последовательность, в которой рисунок AutoCAD с двумя областями просмотра восстанавливается. В этом примере рисунок содержит два блока, Блок и Блок. Блок разрушен в его составляющие части, линию и круг. Блок состоит из заказного примитива. Заказной примитив разрушен, чтобы показать порядок, в котором функции вызваны, поскольку рисунок сгенерирован:



Объект AcGiContext обеспечивает общий контекст, к которому можно обращаться в течение всех частей процесса регенерации. Это обеспечивает информацию относительно текущего состояния перегенеральных. Например, Вы можете получить текущую базу данных от объекта AcGiContext в любое время в течение процесса регенерации.

Иерархия классов для AcGi следующая:



Базовый класс AcGiCommonDraw формирует общие функциональные возможности AcGiViewportDraw и AcGiWorldDraw. Базовый класс AcGiGeometry формирует общие функциональные возможности AcGiViewportGeometry и AcGiWorldGeometry. Эти базовые классы позволяют Вам записывать большее количество общего кода, который может обрабатывать оба случая, если желательно.


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