Спасибо! Сейчас, с новыми силами и вооружившись вашими советами, попробую одолеть эту задачу
Александр Наумович, низкий Вам поклон! Запустил утилиту регистрации событий, получил такой листинг:
[Doc Event] : Command will Start : COPYBASE
Базовая точка:
[Editor Event] : Prompting For Point
[Editor Event] : Point Filter
[Editor Event] : Point Monitor
[Editor Event] : Prompting For Selection
[Editor Event] : Selection Added
[Editor Event] : Prompt For Selection Ending
[Editor Event] : Prompted For Selection
[Editor Event] : Point Filter
[Editor Event] : Point Monitor
[Editor Event] : Point Filter
[Editor Event] : Point Monitor
[Editor Event] : Point Filter
[Editor Event] : Point Monitor
[Editor Event] : Prompted For Point
[Editor Event] : Prompting For Selection
[Editor Event] : Selection Added найдено: 5
[Editor Event] : Prompting For Selection
[Editor Event] : Prompt For Selection Ending
[Editor Event] : Prompted For Selection
[Editor Event] : Prompting For Selection
[Editor Event] : Prompt For Selection Ending
[Editor Event] : Prompted For Selection
[Editor Event] : Prompting For Selection
[Editor Event] : Prompt For Selection Ending
[Editor Event] : Prompted For Selection
[Editor Event] : Prompting For Selection
[Editor Event] : Prompt For Selection Ending
[Editor Event] : Prompted For Selection
[Doc Event] : Implied Selection Changed
[Editor Event] : Prompt For Selection Ending
[Editor Event] : Prompted For Selection
[DB Event : 749142272] : Object Modified : <DrawOrderTable, 27F0>
[DB Event : 749142272] : Object Modified : <DrawOrderTable, 27F0>
[DB Event : 749142272] : Object Modified : <BlockTableRecord, 1F>
[DB Event : 749142272] : Object Modified : <BlockTableRecord, 5D>
[DB Event : 749142272] : Object Modified : <BlockTableRecord, 1F>
[DB Event : 749142272] : Object Modified : <BlockTableRecord, 119C>
[DB Event : 749142272] : Object Modified : <BlockTableRecord, 11A4>
[DB Event : 749142272] : Object Modified : <BlockTableRecord, 9B16>
[DB Event : 749142272] : Object Modified : <BlockTableRecord, 9B3B>
[DB Event : 749142272] : Object Modified : <BlockTableRecord, 9B60>
[DB Event : 749142272] : Object Modified : <BlockTableRecord, 9B86>
[DB Event : 749142272] : Object Modified : <BlockTableRecord, 9BAC>
[DB Event : 749142272] : Object Modified : <BlockTableRecord, 9BD3>
[DB Event : 749142272] : Object Modified : <BlockTableRecord, AF81>
[DB Event : 749142272] : Object Modified : <BlockTableRecord, 11759>
[DB Event : 749142272] : Object Modified : <BlockTableRecord, 11778>
[DB Event : 749142272] : Object Modified : <BlockTableRecord, 117AF>
[DB Event : 749142272] : Object Modified : <BlockTableRecord, 11B71>
[DB Event : 749142272] : Object Modified : <BlockTableRecord, 13A73>
[DB Event : 749142272] : Object Modified : <BlockTableRecord, 13A8C>
[DB Event : 749142272] : Object Modified : <BlockTableRecord, 13ABC>
[DB Event : 749142272] : Object Modified : <BlockTableRecord, 13AD9>
[DB Event : 749142272] : Object Modified : <BlockTableRecord, 13B08>
[DB Event : 749142272] : Object Modified : <BlockTableRecord, 13B50>
[DB Event : 749142272] : Object Modified : <BlockTableRecord, 13B6B>
[DB Event : 749142272] : Object Modified : <BlockTableRecord, 13B92>
[DB Event : 749142272] : Object Modified : <BlockTableRecord, 13BAD>
[DB Event : 749142272] : Object Modified : <BlockTableRecord, 13BC8>
[DB Event : 749142272] : Object Modified : <BlockTableRecord, 13BE2>
[DB Event : 749142272] : Object Modified : <BlockTableRecord, 13BF8>
[DB Event : 749142272] : Object Modified : <BlockTableRecord, 13C11>
[DB Event : 749142272] : Object Modified : <BlockTableRecord, 13C62>
[DB Event : 749142272] : Object Modified : <BlockTableRecord, 13C7E>
[DB Event : 749142272] : Object Modified : <BlockTableRecord, 14584>
[DB Event : 749142272] : Object Modified : <BlockTableRecord, 146A7>
[DB Event : 749142272] : Object Modified : <BlockTableRecord, 146AC>
[DB Event : 749142272] : Object Modified : <BlockTableRecord, 146B1>
[DB Event : 749142272] : Object Modified : <BlockTableRecord, 146B7>
[DB Event : 749142272] : Object Modified : <BlockTableRecord, 148AC>
[DB Event : 749142272] : Object Modified : <BlockTableRecord, 155AD>
[DB Event : 749142272] : Object Modified : <BlockTableRecord, 15E59>
[DB Event : 749142272] : Object Modified : <BlockTableRecord, 17792>
[DB Event : 749142272] : Object Modified : <BlockTableRecord, 1F05A>
[DB Event : 749142272] : Object Modified : <BlockTableRecord, 1F085>
[DB Event : 749142272] : Object Modified : <BlockTableRecord, 1F4B7>
[DB Event : 749142272] : Object Modified : <BlockTableRecord, 1F8E2>
[DB Event : 749142272] : Wblock Notice : To = C:\Users\Zagorulkin_DY\appdata\local\autodesk\c3d 2014\rus\template\_autocad civil 3d (metric)_rus.dwt
[DB Event : 55343840] : Database Constructed
[Editor Event] : Selection Added
[Editor Event] : Prompting For Selection
[Editor Event] : Selection Added
[Editor Event] : Prompt For Selection Ending
[Editor Event] : Prompted For Selection
[Editor Event] : Prompting For Selection
[Editor Event] : Selection Added
[Editor Event] : Prompt For Selection Ending
[Editor Event] : Prompted For Selection
[Editor Event] : Prompting For Selection
[Editor Event] : Selection Added
[Editor Event] : Prompt For Selection Ending
[Editor Event] : Prompted For Selection
[Editor Event] : Prompting For Selection
[Editor Event] : Selection Added
[Editor Event] : Prompt For Selection Ending
[Editor Event] : Prompted For Selection
[Doc Event] : Implied Selection Changed
[Doc Event] : Command Ended : COPYBASE
Ключевой для меня момент -
[DB Event : 55343840] : Database Constructed, т.е., создание базы данных отловить можно! Просто для этого нужно использовать события не отдельного объекта Database, а класса Database!
Дальше, думаю, проблем быть не должно.
В общем, копирование объектов между чертежами выполняется примерно по такому сценарию (может кому пригодится):
- при Ctrl+C создается новая база данных чертежа, в нее помещаются выбранные объекты
- далее, эта база данных сохраняется в чертеж в папке Temp с именем типа "A$C70F66046.DWG", на каждое копирование создается новый чертеж
- каким-то образом приложение отслеживает связь между чертежом, из которого копировали и этими временными файлами, т.к. после закрытия чертежа все относящиеся к нему временные файлы удаляются из Temp
- в буфере обмена также есть копия этого чертежа, потому что даже после закрытия файла-источника (соответственно, уничтожения всех его временных файлов), можно выполнить вставку ранее скопированных объектов в другой чертеж (если мне память не изменяет)
- соответственно, при вставке этот временный файл вставляется как блок в чертеж и в зависимости от команды вставки расчленяется или нет. Если нет (pasteblock) - то получается блок с именем, которое было у файла.
Кстати, по поводу события WblockNotice вопрос остается открытым