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

Posted

技术标签:

【中文标题】使用 Python 保存 AutoCAD 文件 (.dwg)【英文标题】:Saving AutoCAD files (.dwg) using Python 【发布时间】:2020-02-15 10:32:28 【问题描述】:

我正在使用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 method 我收到以下错误:

    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)

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

【问题讨论】:

我不完全明白为什么,但是通过添加这行代码:“doc = acad.ActiveDocument” 调用Open方法后,我可以使用SaveAs方法 【参考方案1】:

查看适用于 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

【讨论】:

以上是关于使用 Python 保存 AutoCAD 文件 (.dwg)的主要内容,如果未能解决你的问题,请参考以下文章

AutoCAD 中的 ISAVEPERCENT 变量有啥作用?

STEP这个文件用AUTOCAD能不能打开

使用 Python 自动化 AutoCAD

sketchup能导入的文件都有哪些

AutoCAD批量导出点坐标

Window安装AutoCAD