Подписка на события графического документа (ksDocument2DNotify)

Автор sumish, 28.09.26, 15:57:54

« назад - далее »

0 Пользователи и 5 гостей просматривают эту тему.

sumish

Возникла необходимость подписки на события графического документа, а именно 2D-чертежа в КОМПАС-3D 23.0.3.2285 (x64).
Согласно SDK, подписка выполняется через интерфейс API5 ksDocument2DNotify, "в COM источником для подписки является графический документ", то есть ksDocument2D. Аналога в API7 нет (в отличие от интерфейса событий документа-модели ksDocument3DNotify7, именно с "7", который прекрасно работает).
Подписка на события через win32com.connect.SimpleConnection (через класс BaseEvent форумчанина Slaviation (https://forum.ascon.ru/index.php?topic=7259.msg284230#msg284230), за что ему отдельная благодарность)) корректно выполняется на очень многие интерфейсы событий, в том числе на объекты графического документа (интерфейс ksKompasObjectNotify). Но подключение ksDocument2D к ksDocument2DNotify неизменно падает с ошибкой (-2147220992, 'CONNECT_E_NOCONNECTION', None, None).
Подключения через DispatchWithEvents, WithEvents и тому подобные методы win32com также не дают результата, помимо подключения к событиям самого приложения КОМПАС.
Метод ksDocument2D.GetDocument2DNotify() в python падает с ошибкой [_disobj_] на строке кода ret = Dispatch(ret, 'GetDocument2DNotify', '{1B9B9B4E-DCD7-496E-A583-547EC1E91E47}'), что ожидаемо, так как "не применяется в COM" согласно SDK.
Попытка достучаться до точек IConnectionPoint внутри интерфейса ksDocument2D вполне успешна, точка с CLSID {AF4E160D-5C89-4F21-B0F2-D53397BDAF78} = class ksDocument2D(DispatchBaseClass) имеется, и успешно подключается через метод connection_point.Advise(sink_com_object), но события НЕ ПРИХОДЯТ!
Опытные КОМПАС-программисты данного раздела, подскажите, пожалуйста, как достучаться до событий ksDocument2DNotify (самого документа, например OnRebuild, а НЕ объектов на нем, с ними проблем нет), либо подскажите аналог в API7

Михаил88

Цитата: sumish от 28.09.26, 15:57:54как достучаться до событий ksDocument2DNotify (самого документа, например OnRebuild, а НЕ объектов на нем, с ними проблем нет), либо подскажите аналог в API7

+ Благодарностей: 2