Как избежать ошибок «чистого вызова виртуальной функции» при программировании Adobe Illustrator через WIN32COM с Python?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как избежать ошибок «чистого вызова виртуальной функции» при программировании Adobe Illustrator через WIN32COM с Python?

Сообщение Anonymous »

При написании кода Python (3.12.2) для взаимодействия с Adobe Illustrator через WIN32COM (Windows 10) я иногда аварийно завершаю работу Illustrator с ошибками «вызова чисто виртуальной функции».
Вот пример строки кода, вызывающей такой сбой:
font_size = text_frame.TextRange.CharacterAttributes.Size

Просто попытка доступа к свойству Size приводит к сбою. Однако этим двум строкам семантически эквивалентного кода удается избежать сбоев:
text_range = text_frame.TextRange
font_size = text_range.CharacterAttributes.Size

Я надеюсь, что кто-то, кто знаком с тонкостями программирования WIN32COM, сможет провести меня на средней глубине в технические тонкости взаимодействия с COM-объектами и, возможно, объяснить, почему разрывается цепочка доступа. на две части заставляет код работать. Я хотел бы иметь возможность предвидеть, когда это произойдет, чтобы иметь возможность писать работающий код, не натыкаясь на это минное поле каждый раз, когда я пытаюсь получить доступ к чему-то новому из объектной модели Illustrator.
Полная отслеживание исключений выглядит следующим образом:
Traceback (most recent call last):
File "C:\Users\John\PycharmProjects\Adobe API\Short Grain 500 Hex Coordinates.py", line 83, in
main()
File "C:\Users\John\PycharmProjects\Adobe API\Short Grain 500 Hex Coordinates.py", line 21, in main
original = OriginalTextInfo(item)
^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\John\PycharmProjects\Adobe API\hex_coord.py", line 10, in __init__
self.font_size = item.TextRange.CharacterAttributes.Size
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\John\PycharmProjects\venv\Lib\site-packages\win32com\client\__init__.py", line 585, in __getattr__
return self._ApplyTypes_(*args)
^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\John\PycharmProjects\venv\Lib\site-packages\win32com\client\__init__.py", line 574, in _ApplyTypes_
self._oleobj_.InvokeTypes(dispid, 0, wFlags, retType, argTypes, *args),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
pywintypes.com_error: (-2147023170, 'The remote procedure call failed.', None, None)


Подробнее здесь: https://stackoverflow.com/questions/782 ... obe-illust
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»