Подписка на события Kompas

Автор Nevegiy, 17.02.07, 12:37:39

« предыдущая - следующая »

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

Вират Лакх

Slaviation, ну так поможете подписаться на события? Кроме Вас, думаю, никто не умеет на форуме.

Slaviation

Да, отправил в личку.

ТрындецЪ

Цитата: Slaviation от 10.01.18, 09:12:53
У меня в работе есть проект - запись макросов на Python. Код самого проекта написан на python.
Проект основан именно на подписках на события КОМПАС-3D.
Предлагаю его вашему вниманию.

Ехешник для х64 систем? У меня на х32 на запустился.

Slaviation

ЦитироватьЕхешник для х64 систем? У меня на х32 на запустился.

Да, все верно, не запустится. Для создания такого exe мне нужно будет устанавливать 32-битный питон и его 32-битное расширение pywin.

pr0100

Цитата: Slaviation от 10.01.18, 09:12:53
Подписка на события из python возможна.
У меня в работе есть проект - запись макросов на Python. Код самого проекта написан на python.
Проект основан именно на подписках на события КОМПАС-3D.
Предлагаю его вашему вниманию. Ссылка на проект http://wdfiles.ru/5dx3
Исходники проекта (по понятным причинам) преобразованы в исполняемый exe.

Текущие ограничения:
Запись макросов по созданию только 2D объектов на API версии 7.
Путь к файлу записанного макроса макроса фиксированный.
Исполняемый exe для win x64.

Инструкция:
Скачать проект по указанной ссылке.
Распаковать PyRecorder.zip.
Открыть КОМПАС-3D.
Запустить main.exe из каталога PyRecorder.
Выполнить в КОМПАС-3D действия по созданию 2D-объектов.
В каталоге PyRecorder появится файл макроса temporary.pyw.
Если его запустить - записанные в макросе действия должны быть воспроизведены.

Пытаюсь скачать не удается. Не грузит файлобменник.
У меня такой вопрос, а он будет работать если к примеру библиотека кампас-макро отключена или не установлена? Просто столкнулся с тем, что пробовал сделать *.exe и там где не установлена библиотека компас-макро. Экзэшник не срабатывал. Хочется чтобы была возможность запуска исполняемых файлов написанных на пайтоне без подключенной библиотеки.

pr0100

Цитата: Вират Лакх от 10.01.18, 09:40:26
Еще вопрос. Как питон компилировать в exe?



можно попробовать cx freeze

Вират Лакх

Цитата: pr0100 от 10.01.18, 11:05:17
Пытаюсь скачать не удается. Не грузит файлобменник.

У меня в браузере Опера, где была блокировка рекламы и пр., тоже не хотел качать. Открыл страницу через хром без блокировки рекламы и скачал.
cx freeze и PyInstaller могут пригодиться тем, у кого глюки с питоном не удалось побороть. Или при использовании разных питонов 2.х и 3.х

Slaviation

ЦитироватьХочется чтобы была возможность запуска исполняемых файлов написанных на пайтоне без подключенной библиотеки.


Вот перевод кусочка с главной страницы PyInstaller
ЦитироватьОсновная цель PyInstaller - быть совместимой с сторонними пакетами из коробки. Это означает, что с PyInstaller все необходимые трюки для работы с внешними пакетами уже интегрированы в PyInstaller, так что не требуется вмешательства пользователя. Вам никогда не придется искать трюки в вики и применять пользовательскую модификацию к вашим файлам или вашим сценариям установки. Например, библиотеки, такие как PyQt, Django или matplotlib, полностью поддерживаются без необходимости обрабатывать плагины или внешние файлы данных вручную. Подробнее см. Наш список совместимых пакетов.

ainis

Цитата: Nevegiy от 17.02.07, 12:37:39
Подскажите, кто знает, каким образом можно получить сообщение от приложения о его выполнении. В SDK сказано, что подписаться на события можно с помощью интерфейса ksKompasObjectNotify - интерфейса событий приложения. При этом говорится, что источником в Automation является KompasObject или IApplication в зависимости от версии интерфейсов. Однако на этом пояснения заканчиваются, хотя мне, например, таких сжатых объеснений маловато. Как я не пытался разобраться в перехвате таких событий приложения как CreateDocument или OpenDocument - воз и ныне там (в смысле не удалось). Если у кого есть опыт в решении таких задач - помогите, кто чем может, пожалуйста.

Та же проблема. Имеется внешнее приложение, написанное на Visual Basic.NET, нужно подписаться в нем на события Компаса. В SDK как-то непонятно это описано.

Vi2

Цитата: ainis от 20.09.19, 15:25:00
Та же проблема. Имеется внешнее приложение, написанное на Visual Basic.NET, нужно подписаться в нем на события Компаса. В SDK как-то непонятно это описано.

Для Visual Basic.NET подписка осуществляется естественным образом: при описании объекта указывается ключевое слово WithEvents и тип объекта должен быть указанием имени кокласса (в Обозревателя объектов коклассы имеют события, обозначаемые "молниями". Я приведу картинку во вложении, не знаю, будет ли она доступна)

    Private WithEvents obj5 As Kompas6API5.Application
    Private WithEvents obj7 As KompasAPI7._Application
...
        ' после создания объект подключается к событиям автоматически
        obj5 = GetObject(, "Kompas.Application.5")
        obj7 = obj5.ksGetApplication7
...
    Private Function obj5_OpenDocument(newDoc As Object, docType As Integer) As Boolean Handles obj5.OpenDocument
        ' обработка
    End Function
...
    Private Function obj7_OpenDocument(newDoc As Object, docType As Integer) As Boolean Handles obj7.OpenDocument
        ' обработка. понятно, что нужно что-то одно, зачем две
    End Function

Если объект объявить так obj7 As KompasAPI7.IApplication, то никаких событий не будет, т.к. сам интерфейс не имеет способа оповестить о событиях, которые поддерживает его реализующий объект.

Вот и вся премудрость.

Ах да, после описания объекта с WithEvents список объектов с событиями пополнится объявленным именем объекта. Я не знаю как оно называется, но вверху окна кода. Можно там выбирать объект, рядом в окне появятся доступные события. Выбираете, VB добавляет код, которые дополняется нужными действиями. Вторая картинка во вложении.