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

Использование appendAcDbEntity () В течение Клонирования


AcDbBlockTableRecord:: appendAcDbEntity () требует имеющий силу AcDbObjectIds, чтобы делать добавляющийся должным образом. В течение клонирования, примитив может быть добавлен в конец к AcDbBlockTableRecord только если

AcDbBlockTableRecord:: isObjectIdsInFlux () возвращает Adesk:: kFalse. Это указывает, что сам AcDbBlockTableRecord в настоящее время не клонируется.

Одно исключение к этому правилу происходит, когда клонированный AcDbBlockTableRecord пуст. Поскольку пустой AcDbBlockTableRecord не содержит никакой неоттранслированный AcDbObjectIds, добавляющийся будет работать должным образом.

Эта ситуация возникает в течение некоторых форм wblock (), и описана более подробно коротко{*вскоре*}.

Если глубоко клонируются,  - обратился к индивидуальным примитивам, то их имитирует, должен быть добавлен в конец адресату АкДбБлокТаблеРекорду. Однако, когда сам AcDbBlockTableRecord глубоко клонируется, тогда все его примитивы клонированы с этим, и запрос к AcDbBlockTableRecord:: appendAcDbEntity () не будет только ненужен, но разрушил бы клонированный AcDbBlockTableRecord.

Заданные по умолчанию выполнение deepClone () и wblockClone () знают, когда вызвать AcDbBlockTableRecord:: appendAcDbEntity () проверяя значение isPrimary. Когда примитив глубоко клонируется отдельно, isPrimary истинен, и добавлять,  вызван. Если примитив клонируется как результат глубокого клонирования AcDbBlockTableRecord, то isPrimary ложный, и добавлять, не вызван.

Обычно, приложения не должны быть обеспокоены этой подробностью и могут полагаться на заданное по умолчанию выполнение deepClone () и wblockClone () чтобы обработать примитивы. Однако, ситуации могут возникать, когда приложения могут хотеть добавить примитивы в течение клонирования, или использовать жесткие ссылки к примитивам. Жесткий упомянутый примитив будет иметь значение isPrimary Adesk:: kFalse и не будет вызывать, добавляют, даже, когда можете требоваться делать так. Эта ситуация охвачена в следующей секции.

Следующие примеры и правила иллюстрируют важные аспекты клонирования.



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