2

COM インターフェイス経由で AutoCAD に接続して制御する必要があります。この目的のために、私は Python を使用します。非常に基本的なスニペット(1)を使用した最初の試行で、エラーが発生しました。コードは次のとおりです。

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) @Tom Haws のブログからのコード。

4

1 に答える 1

6

AutoCAD LTバージョンは自動化をサポートしていません ( Autodesk グループでのディスカッション)。

完全な AutoCAD バージョンをインストールできる場合は、comtypesパッケージを使用することをお勧めします。AutoCAD ではパラメータのタイプコードをwin32com含む VARIANT が必要なため、ドキュメントにエンティティを追加することはできません。VT_ARRAY | VT_I2 or VT_ARRAY | VT_R8InsertionPoint

ドキュメントの例を参照してくださいcomtypes

于 2012-02-17T12:58:59.060 に答える