Добрый день.
Помогите, пожалуйста, разобраться.
Есть чертеж, на нем блоки, связи между которыми заданы через их хэндлы. При копировании/вставке эти связи, понятное дело, надо установить для новых объектов (где возможно). Хотел сделать через AcEditorReactor.
Столкнулся со следующей проблемой:
при просмотре idMapping в функции реактора endDeepClone некоторые блоки удается проследить от оригинала до копии по цепочке идентификаторов в базах чертежа и временной, некоторые - нет. (знаю, что по handle следить не имеет смысла, потому опираюсь на AcDbObjectId)
Пример: выделяю три блока (handle 341, 242, 2b4), копирую, вставляю, получаю новые три блока (4c0, 4b5, 4ac)
При этом в отладчике веду протокол - пишу содержимое idMapping в endDeepClone.
В протоколе указываются AcDbObjectId [handle] ключа --> AcDbObjectId [handle] значения (дальше я привожу только для трех копируемых блоков):
на Wblock
ff604ba0 [242] --> ff613db0 [5b]
ff604ec0 [2b4] --> ff613f60 [76]
ff607890 [341] --> ff60b1d0 [95]
на Insert
ff613db0 [47a] --> ff60dca0 [47a]
ff613f60 [483] --> ff60dd30 [483]
(здесь ключ ff60b1d0 не встречается)
на Explode
ff60dca0 [47a] --> ff622040 [4ac]
ff60dd30 [483] --> ff6220d0 [4b5]
ff60dde0 [48e] --> ff622180 [4c0]
Интересно, что если копирую только один блок (тот же с handle 341), то цепочка идентификаторов прослеживается без проблем.
В архиве - исходники, файл чертежа для примера и полный протокол (logs.txt), который получился у меня.