• Добро пожаловать на Форум пользователей ПО АСКОН. Пожалуйста, авторизуйтесь.
 

Уважаемые пользователи,

Хотим проинформировать вас о режиме работы регистрации на нашем сайте.

Зарегистрироваться возможно в рабочие дни, с 8:00 до 20:00 (мск).

Если у вас возникнут вопросы или потребуется дополнительная информация, не стесняйтесь обращаться к нашей службе поддержки. Вы можете связаться с нами по указанным контактным данным на нашем сайте.

Благодарим вас за понимание и сотрудничество. Мы ценим ваше терпение и стремимся предоставить вам лучший опыт использования нашего сервиса.

С уважением,
Команда Ascon

События при открытии сборки - заменить файл компонента сборки

Автор SerGoVec, 16.10.15, 12:27:26

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

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

SerGoVec

Всем привет!
Ситуация:
При открытии сборки, если компас не находит файл компонента сборки пользователю выдается сообщение  "Не прочитан файл компонента".
Внимание вопросы:
Какое событие происходит, можно ли через api компаса влезть в реализацию этого события? Главное!!!- можно ли программно указать какой файл(ы) открывать при наступлении этого события?

Slaviation


При открытии сборки данное событие не возникает - проверено.

Slaviation

А если Через API
1. Подписаться на ksKompasObjectNotify::BeginRequestFiles
2. Создать спецификацию
3. Подключить целевую сборку к спецификации

То, судя по справке API, мы получим requestID = koRFSpcAssemblyAddDocument + SafeArray файлов, необходимых сборке для открытия?

Если так, то далее удаляем спецификацию и перед открытием сборки имеем на руках список ее файлов.

Событие было сгенерировано при нажатии на кнопки, для спецификации не генерировалось.
+ Благодарностей: 1

SerGoVec


SerGoVec

"Событие было сгенерировано при нажатии на кнопки". А как сгенерировано. То есть как отследить событие нажатия на эти кнопки?


SerGoVec


А пример тогда зачем?
Подписка на событие IKompasObjectNotify - интерфейс событий приложения, реализована в модуле ApplicationEvents.pas, там посмотрите подробнее.

SerGoVec

в step12 в ApplicationEvent.BeginRequestFiles(requestID: Integer; var files: OleVariant): WordBool; написал простое i := 0, поставил точку останова, запустил. В Компасе подписался на события библиотеки step12 (пример создания панели свойств). По нажатию кнопок (любой) открыть, Добавить из файла -> компонент, Добавить из файла - Локальную деталь или Создать -> деталь: останова не происходит. Ничего не происходит. Я что-то не то делаю?

Так как же мне сгенерировать события при нажатии на те самые кнопки, которые указаны у вас на скрине?.

Поменяйте и будет срабатывать, т.к. в примере данное событие не обрабатывается.

function ApplicationEvent.IsNotifyProcess(notifyType:SYSINT):WordBool;
begin
  Result:=(notifyType>=koCreateDocument)and(notifyType<=koBeginChoiceMaterial);
end;
+ Благодарностей: 1


SerGoVec

Всех с новым 2016 годом :)

В продолжение той же темы: можно ли перехватить окно "Открыть документы", которое появляется если в компасе открыто более одного документа. То есть оккно показывается до обработчика события BeginRequestFiles так как файла еще не запрашивается. Можно ли перехватить это окно (хочу подсунуть свое, либо запретить его показ) и при каком событии оно срабатывает?

По идеи IKompasDocument3DNotifyResult.RequestFilesType - тип процесса, запрашивающего файл, но я не проверял.

SerGoVec

Посмотрел, попробывал, ничего не получилось) Ну и ладно). Вопрос такой: можно ли повесить событие компаса на вставку элемента в сборку на кнопку панели? Кнопку я сделал, активный документ определил, что это сборка, а вот, что дальше. Пытаюсь вызвать через кнопку ApplicationEvant.BeginRequestFiles(7, Путь)  для примера передавая ей requstID = 7 (копнонет m3d) и путь к файлу, предварительно объявив его тип как OleVariant и в этоге тишина. Что нужно вызвать для того, чтобы вставка работала? Если это конечно можно.