python - 使用 Python 批量运行 autoLISP

标签 python autocad autolisp

我想对多个 CAD 文件(例如文件夹中的所有文件)运行 autoLISP。基本上,打开文件 (DWG),运行 LISP(包括保存文件)并关闭。我是 LISP 的新手,但对 Python 不太陌生。

是否可以使用 Python 运行批处理?我知道如何使用 Python 程序打开文件,但不知道如何运行 LISP。或者,有人知道如何使用 LISP 运行批处理吗?

到目前为止,我找到的解决方案涉及第三方软件和 C#。此外,我正在运行 AutoCAD-MEP 2018 和 Python 3.5。

最佳答案

根据我的经验,批处理多个文件的最佳方法是使用 AutoCAD 脚本文件 (.scr)。

脚本仅用于打开每个绘图,加载并运行适当的 AutoLISP 程序,然后保存并关闭绘图,然后再移动到下一个绘图文件。

由于 AutoLISP 在 Document 命名空间中运行,因此当另一个绘图变为事件状态时,计算将停止;但是,AutoCAD 脚本文件将继续运行,直到脚本中的所有命令都已发出,或者脚本已中止。


这样一个脚本的基本结构是:

_.open C:\Drawing1.dwg (load "MyProgram.lsp" nil) (c:MyCommand) _.qsave _.close
_.open C:\Drawing2.dwg (load "MyProgram.lsp" nil) (c:MyCommand) _.qsave _.close
_.open C:\Drawing3.dwg (load "MyProgram.lsp" nil) (c:MyCommand) _.qsave _.close
...

以上内容可以保存为 MyScript.scr 并使用 AutoCAD SCRIPT 命令从空白的新绘图中运行。

当然也可以加入额外的错误检查,比如在评估之前检查AutoLISP程序是否加载成功等。

有关一般 AutoCAD 脚本文件的更多信息,我已将其放在一起 this basic tutorial围绕 AutoCAD 脚本。


考虑到上述情况,下一步是自动构建脚本文件本身(而不是手动编写几乎相同的每一行)。

为此,有几个现有的应用程序:ScriptPro 是众所周知的,我也创建了自己的 Script Writer前段时间的应用程序,它提供了一个基本界面,允许用户键入脚本文件的第一行,程序构建其余部分。

为了提供一个现有的例子,我的 Batch Attribute Editor应用程序还基于这种使用 AutoLISP 应用程序构建 AutoCAD 脚本文件的技术,然后使用该文件在多个选定图形上评估 AutoLISP 函数。


简而言之,虽然您特别声明使用 Python 来执行此任务,但我认为在这种情况下没有必要这样做,因为一个非常简单的脚本文件 (.scr) 就足够了.

关于python - 使用 Python 批量运行 autoLISP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48794935/

相关文章:

python - 写入文件时评估转义字符

python - 属性错误: module 'simplejson' has no attribute 'dumps' on "import flask"

c# - 如何使用.net在Autocad中的特定布局中插入实体?

Lisp - 如何在另一个函数中调用一个函数?

python - 列出每行中 Dataframe 为 NULL/Empty 的列名

静态确定的Python局部变量?

python - 如何BlockReference对象属性

c# - 在不打开图形的情况下使用数据库获取图形的范围

python - Lisp翻译

Lisp - 从逗号分隔值列表中提取信息