我在 AutoCAD 中运行一个 .arx 应用程序。当我们单击 AutoCAD 中的自定义选项卡时,它会在 AutoCAD 的命令行中运行该程序。我们执行的LISP函数如下;
(defun c:XYZ_program()
(command)
(command)
(arxload "C:/ABC/XYZ.arx")
(command "XYZ_program")
(arxunload "XYZ.arx"))
The process that I need to execute is "LOAD the .arx"--> "Execute it fully" --> "UNLOAD .arx"
现在,当我为基于菜单的输入驱动的 .arx 运行它时,它工作正常,但是当某些程序需要从 AutoCAD 的命令行输入时,它会给出错误提示“卸载失败”。
我相信这里发生的过程是“加载 arx”-->“通过命令行运行”-->“在 arx 完全执行之前运行。因此给出错误。”
如有任何帮助,我们将不胜感激。
最佳答案
我确实从更多的研究和帮助中得到了答案。
在LISP中顺序执行命令的方式,我们可以使用(progn expr ....)
但是,如果某些程序采用命令行输入,这可能无济于事。上述问题专门针对 AutoCAD 和 .arx 应用程序,因此我们可以在 VC++ 程序中包含以下行。
ads_queueexpr(_T("(arxunload \"XYZ\")") );
希望这对您有所帮助。
关于lisp - 顺序执行LISP中的多个命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17621896/