Тема: Запись handle в XData

Если записать в XData одного объекта handle другого, то после копирования объектов, в XData первого, из скопированных объектов, будет handle второго скопированного объекта. Но если копировать объекты и удерживать при этом нажатую клавишу Ctrl, то handle не обновляется и в XData объекта будет тот же handle, что и в его родительском объекте.
Как правильно записывать handle в XData, что бы при копировании объекта он автоматически обновлялся?

Re: Запись handle в XData

> роман
Увы, но ничего хорошего у тебя с этим не выйдет. По своему опыту могу рекомендовать даже не пытаться хранить в xdata handle'ы объектов. А если уж это делать, то тебе придется в реакторе отслеживать всевозможные операции по копированию для того, чтобы самому восстанавливать правильность ссылок. Тогда уже проще записывать в xdata строки, чтоб AutoCAD даже и не пытался модифицировать их.

Re: Запись handle в XData

А если handle объектов записывать не в XData, а в XRecord, будет ли AutoCAD как-то реагировать на такую запись, отслеживать, изменять?
Хотя наверное, вопрос должен звучать по-другому:
Если в специальном неграфическом объекте  XRecord отсутствует DXF-код предназначенный для хранения меток объектов (как 1005 в XData), то ... запись метки в форме строки совершенно нейтральна.
Ответил на собственный вопрос?
Или, если запись действительно нейтральна, причина в том, что XRecord не связан с конкретным примитивом?
Эх, надо учить матчасть!

Re: Запись handle в XData

> LeonidSN
Я не проводил специального исследования, но у класса AcDbXrecord есть метод setXlateReferences(bool translate), который устанавливает признак того нужно или нет преобразовывать objectID (внимание: не handle!!!) при клонировании (deepClone или wblockClone).
Кроме того многое зависит от того в какие группы внесены objectID:

Группы:    Тип:
330-339    soft pointer ID
340-349    hard pointer ID
350-359    soft owner ID
360-369    hard owner ID

Для handle тоже есть свои группы:

320-329    handle

Но в документации ничего не сказано о том будут ли они преобразовываться при копировании или нет. Так что тут без исследования не обойтись...