使用Python保存AutoCAD文件(.dwg)

3
我正在使用win32com自动化AutoCAD中的某些简单任务。除了保存文件之外,它大多数情况下都可以正常工作。我的目标是打开(模板)文件,根据需要进行调整,然后将文件另存为另一个文件夹中的.dwg,同时保持模板为空并准备下次使用。
以下是我的代码示例:
import win32com.client


acad = win32com.client.dynamic.Dispatch("AutoCAD.Application")
acad.Visible=True

doc = acad.Documents.Open("C:\\Template_folder\\Template.dwg")
doc.SaveAs("C:\\Output_folder\\Document1.dwg")

### Adjust dwg ###

doc.Save()

加载模板文件的过程运行良好,但是当我尝试保存文件(使用SaveAs方法)时,出现以下错误:

    doc.SaveAs("C:\\Output_folder\\Document1.dwg")
  File "<COMObject Open>", line 3, in SaveAs
pywintypes.com_error: (-2147352567, 'Exception occurred.', (0, 'AutoCAD', 'Error saving the document', 'C:\\Program Files\\Autodesk\\AutoCAD 2019\\HELP\\OLE_ERR.CHM', -2145320861, -2145320861), None)

任何提示或资源都将不胜感激!

我不完全明白为什么,但在调用Open方法后添加代码行:"doc = acad.ActiveDocument",我就能使用SaveAs方法了。 - Jowizo
1个回答

3

看AutoCAD的ActiveX API文档,当你调用Documents.Open()时,它应该返回打开的文档并将其设置为活动文档。但是,在这里实际上发生的情况似乎不是这样。解决您的问题的解决方案应该类似于这样:

import win32com.client

acad = win32com.client.dynamic.Dispatch("AutoCAD.Application")
acad.Visible=True

# Open a new document and set it as the active document
acad.Documents.Open("C:\\Template_folder\\Template.dwg")

# Set the active document before trying to use it
doc = acad.ActiveDocument

# Save the documet
doc.SaveAs("C:\\Output_folder\\Document1.dwg")

### Adjust dwg ###

doc.Save()

您可以在这里找到文档。

AutoCAD.Application

Application.Documents

Documents.Open()

Application.ActiveDocument


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接