Ошибка подключения Win32Com к Autocad через Python - PullRequest
1 голос
/ 17 февраля 2012

Мне нужно подключить и управлять Autocad через интерфейс Com.Для этой цели я использую Python.В моем первом испытании с очень простым фрагментом я получил ошибку.Код

import win32com.client
acad = win32com.client.Dispatch("AutoCAD.Application")
doc = acad.ActiveDocument
doc.Utility.Prompt("Hello from Python\n")

, и когда я пытаюсь его запустить, я получаю следующее:

Traceback (most recent call last):
  File "C:\Users\SBYSMR10\Desktop\recipe-440493-1.py", line 2, in <module>
    acad = win32com.client.Dispatch("AutoCAD.Application")
  File "C:\Python26\lib\site-packages\win32com\client\__init__.py", line 95, in Dispatch
    dispatch, userName = dynamic._GetGoodDispatchAndUserName(dispatch,userName,clsctx)
  File "C:\Python26\lib\site-packages\win32com\client\dynamic.py", line 108, in _GetGoodDispatchAndUserName
    return (_GetGoodDispatch(IDispatch, clsctx), userName)
  File "C:\Python26\lib\site-packages\win32com\client\dynamic.py", line 85, in _GetGoodDispatch
    IDispatch = pythoncom.CoCreateInstance(IDispatch, None, clsctx, pythoncom.IID_IDispatch)
com_error: (-2147221005, 'Invalid class string', None, None)

У меня установлен Python 2.6 и Autocad LT 2009Я искал в сети решение, но не смог найти ни одного.Не могли бы вы помочь мне решить эту проблему?

Заранее спасибо

1 Ответ

5 голосов
/ 17 февраля 2012

AutoCAD LT версии не поддерживают автоматизацию ( обсуждение в группе Autodesk ).

Если вы сможете установить полную версию AutoCAD, я рекомендую вам использовать пакет comtypes. С win32com вы не можете добавлять объекты в документ, потому что AutoCAD требует VARIANT с кодами типов VT_ARRAY | VT_I2 or VT_ARRAY | VT_R8 для параметров, например, InsertionPoint.

См. примеры в comtypes документации

...