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



         

Перегрузка wblockClone () Функция


Когда операция клона wblock выполнена, AutoCAD создает имеющую силу базу данных для нового рисунка, который содержит словарь имен объектов, все таблицы идентификаторов, и полный набор переменных заголовка. Следующий код приближает заданное по умолчанию выполнение wblockClone (). Перечисленные шаги соответствуют, те перечисляли в секции “ Перегрузка deepClone () Функцию ” на странице 484.

WblockClone () функция использует регистратора класса AcDbWblockCloneFiler, который возвращает список жесткого указателя и жестких связей владельца первичного объекта. Прежде, чем Вы вызываете wblockClone () на этих подобъектах, Вы должны проверить владельца подобъекта. В этой точке, вы будете делать одну из двух вещей:

N, если Вы - владелец объекта, заставляет владельца подобъекта быть клоном вас непосредственно.

N, если Вы - не владелец объекта, проход в базе данных клона как pOwner параметр в wBlockClone () функциональный запрос. В это время, объект добавлен в конец к новой базе данных, получает объект ID, и помещен в карту ID. Вход карты ID для этого объекта определит FALSE для isOwnerTranslated поля.

Если pOwner установлен в базу данных, wblockClone () должен установить владельца клонированного объекта тому же самому владельцу как таковой первоначального объекта. Тогда, когда ссылки оттранслированы в соответствии с AutoCAD, это модифицирует ссылку владельца к клонированному объекту в новой базе данных.

Важно гарантировать, что все объекты обладания клонировались. AutoCAD всегда клонирует таблицы идентификаторов, словарь имен объектов, пространство модели, и пространство листа (для клонируемых контекстов других чем AcDb:: kDcXrefBind) в течение клона wblock. Приложения с обладанием объектов ответствены за обеспечение, чтобы эти объекты клонировались{*имитировались*} в случае необходимости. Если объект обладания не клонировался и не найден в карте ID, wblock клонируемыми аварийными прекращениями работы с AcDb:: eOwnerNotSet.

Вы должны пройти в базе данных как владелец объекта, когда Вы копируете примитив, которых ссылок таблица идентификаторов делает запись. Например, предположите, что Вы вызываете wblockClone () на объекте сферы. Запись таблицы блоков - жесткий владелец этого объекта сферы. Объект сферы содержит жесткую ссылку к таблице уровня.




Содержание  Назад  Вперед