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




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


Типовой код в этой секции - приближение  к заданному по умолчанию поведению deepClone(). Глубокая клонируемая операция имеет две основных стадии:

§         Клонирование (Вы можете перегружать эту стадию)

§         Трансляция (Вы не будете должны повторно осуществить эту стадию; это может управляться тем, что помещено в карту ID)

В течение клонируемой стадии в этом примере, информация относительно старого объекта скопирована к новому объекту, используя определенный тип регистратора, чтобы выписать объект и читать это назад. Регистратор следит за объектами, принадлежащими первичному объекту так, чтобы они могли быть скопированы также.

Закончить клонируемую стадию

1 Создают новый объект того же самого типа как старый.

2 Добавляют новый объект его владельцу.

§          если объект - примитив, его владелец - запись таблицы блоков, и Вы можете использовать appendAcDbEntity().

§          если объект - AcDbObject, его владелец - AcDbDictionary, и Вы можете использовать setAt (), чтобы добавить это к словарю.

Если бы это - не первичный объект, Вы обычно добавили бы это к базе данных, используя addAcDbObject () и затем идентифицировать ее владельца, использующего setOwnerId ().

Чтобы устанавливать монопольное использование, владелец должен регистрировать из ID находящегося в собственности объекта, используя соответствующий тип монопольного использования.

3 Запрос dwgOut () на первоначальном объекте, используя глубокого клонируемого регистратора (AcDbDeepCloneFiler), чтобы выписать объект. (Или, если Вы перегружаете wblockClone () функция, использует AcDbWblockCloneFiler.)

4 Перематывают регистратора и затем вызывают dwgIn () на новом объекте.

5 Запроса setObjectIdsInFlux () на каждом новом объекте прежде, чем Вы добавляете его значение к карте объекта ID. Этот важный шаг используется, чтобы указать, что недавно созданный объект - часть глубокой клонируемой операции, и ее объект ID подчинен, чтобы измениться как часть стадии трансляции. Этот флажок автоматически выключен, когда трансляция полна.




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