我使用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)
答案 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)