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

Использование Drawables в Вашем Объекте


В дополнение к предопределенным примитивам, Вы можете усиливать абстрактные объекты в вашем worldDraw () и viewportDraw () выполнение. Любой объект, который поддерживает AcGiDrawable протокол, может использоваться как под-объект. С тех пор AcDbObject происходит от AcGiDrawable, любой объект базы данных может использоваться таким образом, если это имеет смысл.

Drawable не должны быть графическим. Например, drawable мог бы только устанавливать черты подпримитива в специфическую комбинацию и не осуществлять worldDraw () или viewportDraw () вообще.

Эта архитектура позволяет разработчику распределять исполнение, закодируют более эффективно.

Например, worldDraw () выполнение AcDbBlockReference просто помещает трансформанту вставки на стек, вызывает draw() пропускающий в указателе на его AcDbBlockTableRecord, и выталкивает матричный стек. WorldDraw () AcDbBlockTableRecord выполняет итерации по примитивам на определении. Выгода этой методики - то, что графика для данного примитива должна только быть сгенерированной однажды, и может кэшироваться на объекте и эффективно многократно использоваться для последующих ссылок.

ПРЕДУПРЕЖДЕНИЕ! Любой drawables прошел в, рисуют () должен иметь срок службы{*продолжительность жизни*}, равняются или превышение таковой внешнего объекта. Это требовано, потому что графика drawable могла бы кэшироваться в AcGsNode, приложенном к drawable. В течение дисплея графическая система могла бы возвращаться, чтобы получить этот кэш, и если объект был разрушен, ошибка во время выполнения программы произойдет.



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