使用python将块插入autocad文档,但未成功

时间:2016-03-27 12:58:18

标签: python autocad comtypes

我使用Python将块插入到autocad文档中。代码如下:

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)

将块插入文档,但不显示模型空间。例外情况是:

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 个答案:

答案 0 :(得分:0)

虽然您似乎找到了问题的解决方案,但我直接在comtypes文档http://www.pythonhosted.org/comtypes/#converting-data-types中找到了一个更简单的解决方案,其中解释了问题并提供了在Autocad中插入一个点的示例。

简而言之,请将代码更改为:

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)