Здравствуйте!
Есть потребность сохранять некоторую дополнительную информацию об объекте чертежа. Эту информацию я использую для отрисовки дополнительной геометрии объекта. Раньше использовал для этого XData и все было хорошо. Но недавно понадобилось добавить информации и есть риск, что размеров XData может не хватить. Переделал механизм сохранения-извлечения информации на использование Xrecord и ExtensionDictionary.
О том, что есть такая проблема с копированием объекта знал и был готов к ней - рассчитывал, при необходимости, побороть ее с помощью реакторов копирования объектов (благо, с ними недавно очень плотно имел дело). Но, как выяснилось, копии объекта создаются не только для копирования его в пределах базы данных чертежа или между ними. В частности, копия объекта создается для Jig. Эта копия перенимает XData объекта, но не перенимает Extension Dictionary оригинала, что неудивительно. Но при этом, она не добавляется ни к какой базе чертежа, то есть, его свойства: Database = null, Id = ObjectId.Null. Это сильно усложняет задачу сохранения переопределенной отрисовки объекта!
Пока мне это не сильно критично, но на всякий случай хочу поинтересоваться - нет ли какой-то заложенной в API возможности смены режима создания копии объекта с Extension Dictionary? (эдакий волшебный тумблер
) Есть же, например, метод DBObject.SwapIdWith, в котором значениями аргументов можно управлять перенесутся или нет XData и Extension Dictionary.
P.S. Опыты в AutoCAD2014 и 2015 показали, что при использовании команды _COPY, Extension Dictionary переносится в копию. Если же выполнять копирование через буфер - не переносится. XData же переносится в обоих случаях.