2016-03-27 18 views
0

私は以下のAutoCADのdocument.Theコードにブロックを挿入するためのPythonを使用しています:AutoCADの文書にブロックを挿入するためのpythonを使用して、失敗した

import comtypes.client 
app = comtypes.client.GetActiveObject("AutoCAD.Application") 
ms = app.ActiveDocument 
files = r"C:\Users\TOM\Desktop\02python\516.00-501.50.dwg" 
insertionPnt = [0,0,0] 
ms.ModelSpace.InsertBlock(insertionPnt, files, 1, 1, 1, 0) 

ブロックを文書に挿入しますが、モデル空間」はdoesnのさtを表示します。例外は次のとおりです。

File "C:\Users\TOM\Documents\002pybookcode\backup_code\test.py", line 10, in <module> 
    ms.ModelSpace.InsertBlock(insertionPnt, files, 1, 1, 1, 0) 
_ctypes.COMError: (-2147024809, '\xb2\xce\xca\xfd\xb4\xed\xce\xf3\xa1\xa3', (None, None, None, 0, None)) 

私はこの問題を解決し、以下のコードが動作しています。

import win32com.client 
import pythoncom 

def POINT(x,y,z): 
    return win32com.client.VARIANT(pythoncom.VT_ARRAY | pythoncom.VT_R8, (x,y,z)) 

acad = win32com.client.Dispatch("AutoCAD.Application") 
doc = acad.ActiveDocument 
ms = doc.ModelSpace 
files = r"C:\Users\TOM\Desktop\02python\516.00-501.50.dwg" 
doc.Utility.Prompt("hello World\n") 
pt1= POINT(0.0,0.0,0.0) 
ms.InsertBlock(pt1, files, 1.0,1.0,1.0, 0) 
+1

おかげ@Padraicカニンガム –

+0

は、あなたがどのようなCOMエラー-2147024809手段を探してみましたがありますか?それは間違っているものとして重要な手がかりになると思われる... – martineau

+0

申し訳ありませんが、私はコードを強調する方法はありません。 –

答えて

0

私はちょうど問題を説明し、AutoCADでポイントを挿入するための例を持っているcomtypesドキュメントhttp://www.pythonhosted.org/comtypes/#converting-data-typesに直接簡単な解決策を発見した問題の解決策を見つけるように見えたが。要するに

にコードを変更:

import array 
import comtypes.client 
app = comtypes.client.GetActiveObject("AutoCAD.Application") 
ms = app.ActiveDocument 
files = r"C:\Users\TOM\Desktop\02python\516.00-501.50.dwg" 
insertionPnt = array.array('d', [0,0,0]) 
ms.ModelSpace.InsertBlock(insertionPnt, files, 1, 1, 1, 0) 
関連する問題