IPictureDisp python

Автор Тема: IPictureDisp python  (Прочитано 3063 раз)

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

Оффлайн JaJaBanxАвтор темы

  • ADN OPEN
  • Сообщений: 2
  • Карма: 0
IPictureDisp python
« : 05-01-2017, 18:05:07 »
Добрый день, пишу надстройку для Inventor на python 2.7, столкнулся с проблемой при добавлении кнопки. Не знаю как получить картинку с типом IPictureDisp. Может кто то сталкивался с такой проблемой и знает решение?

P.S.
Для реализации COM сервера использую библиотеку pywin32.
Вот есть рабочий образец, с обработчиками событий, но без кнопок((
https://github.com/S-Rx/PythonInventorAddIn

Оффлайн mikazakov

  • ADN
  • *
  • Сообщений: 751
  • Карма: 195
  • Skype: mikazakov@mail.ru
Re: IPictureDisp python
« Ответ #1 : 05-01-2017, 20:34:37 »
Не знаю как получить картинку с типом IPictureDisp.
IPictureDisp-это коварный объект, его проблема в том , что если пытаться его пропихивать из процесса в процесс, то он будет генерить ошибку. Видимо микрософт забыла сделать для него "заглушки" и пр. Хотя IPictureDisp это просто обертка для С++ интерфейса IDisp. Я не знаю как работает питон, но даже в вижуал студио, чтобы не ловить ошибок нужно отлаживать в одном процессе с инвентором. Если экзешник внешний относительно инвентора, то увы картинку в ивде IPictureDisp не пропихнет в инвентор.

Я когда то писал мануал для вижуал студио, можете почитать тут:
http://mihakazakov.wixsite.com/inventor-api/publications

Оффлайн JaJaBanxАвтор темы

  • ADN OPEN
  • Сообщений: 2
  • Карма: 0
Re: IPictureDisp python
« Ответ #2 : 06-01-2017, 13:10:21 »
Спасибо за ответ, и спасибо за мануалы на русском)) я их себе уже сохранил. Надстройка работает в одном процессе с инвентором и в передаче переменной этого типа проблем возникнуть не должно, проблема в создании переменной этого типа. Интернеты на эту тему молчат.

Оффлайн mikazakov

  • ADN
  • *
  • Сообщений: 751
  • Карма: 195
  • Skype: mikazakov@mail.ru
Re: IPictureDisp python
« Ответ #3 : 09-01-2017, 10:21:56 »
проблема в создании переменной этого типа.
если можно юзать WiAPI32, то функция для получения IDispathc:

OleCreatePictureIndirect

Во втором мануале в разделе с++ этот пример разобран, где считывается png с прозрачностью и конвертируется в IDispatch. Ну можно конечно MSDN почитать на тему этой функции.
Честно скажу на кой фиг этот питон нужен, есть же нормальные компилируемые языки программирования. А эти все интрепритаторы типа VBA, питона и пр. только тормазов и непоняток добавляют