<p>根据我的经验,批处理多个文件的最佳方法是使用AutoCAD脚本文件(<code>.scr</code>)。</p>
<p>脚本仅用于打开每个图形、加载和运行适当的AutoLISP程序,然后保存和关闭图形,然后再转到下一个图形文件。</p>
<p>由于AutoLISP在文档命名空间中运行,因此当另一个图形处于活动状态时,求值将停止;但是,AutoCAD脚本文件将继续运行,直到脚本中的所有命令都已发出或脚本已中止。</p>
<hr/>
<p>这种脚本的基本结构是:</p>
<pre><code>_.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
...
</code></pre>
<p>以上内容可以另存为<code>MyScript.scr</code>,并使用AutoCAD<code>SCRIPT</code>命令从空白的新图形中运行。</p>
<p>当然,还可以加入额外的错误检查,例如在评估之前检查AutoLISP程序是否已成功加载等</p>
<p>有关AutoCAD脚本文件的详细信息,我将围绕AutoCAD脚本的<a href="http://lee-mac.com/scriptwriting.html" rel="nofollow noreferrer">this basic tutorial</a>放在一起。</p>
<hr/>
<p>考虑到上述情况,下一步是自动构建脚本文件本身(而不是手动编写几乎相同的行)。</p>
<p>为此,有几个现有的应用程序:ScriptPro是一个很常见的应用程序,不久前我还创建了我自己的<a href="http://lee-mac.com/scriptwriter.html" rel="nofollow noreferrer">Script Writer</a>应用程序,它提供了一个基本接口,允许用户键入脚本文件的第一行,程序构造其余的行。</p>
<p>为了提供一个现有的示例,我的<a href="http://lee-mac.com/batte.html" rel="nofollow noreferrer">Batch Attribute Editor</a>应用程序还基于使用AutoLISP应用程序构造AutoCAD脚本文件的技术,然后使用该文件在多个选定图形上计算AutoLISP函数。</p>
<hr/>
<p>简言之,尽管您特别声明了使用Python来执行此任务,但我认为在这种情况下不需要这样做,因为一个非常简单的脚本文件(<code>.scr</code>)就足够了。</p>