我很少有用于.arx的AutoCAD应用程序。在这些应用程序中,很少是基于菜单的,其他的是命令行。现在我想做的是,
现在我有了一个lisp文件,一旦用户启动AutoCAD,就会加载该文件。在lisp文件中,我为各种.arx应用程序声明了这些函数;
( c:XYZ_program()命令)(命令) (arxload "C:/ABC/XYZ.arx") (命令"XYZ_program") (arxunload "XYZ.arx")
对于需要从基于菜单的表单输入数据的程序,它可以正常工作,但是对于需要命令行输入的程序,它可以错误地卸载xyz.arx。
我想知道LISP中是否有确保arxunload "XYZ.arx“只执行一次(命令"XYZ_program")的命令。
我不知道如何处理这个问题。如果有同样的帮助,我们将不胜感激。
我目前使用的代码是这样的;
(
defun c:XYZ_program() (command) (command)
(arxload "C:/Example/Folder/XYZ.arx")
(command "XYZ_program")
ads_queueexpr( (arxunload "XYZ.arx") )
)发布于 2013-07-15 02:34:08
您的问题并不清楚,但听起来该模块无法卸载,因为它正在积极执行等待用户输入的命令。因此,我想您是在问如何将卸载推迟到命令执行完成为止。这个问题的答案是使用ads_queueexpr()在命令本身中对(arxunload "XXX")函数进行排队。
但是,通过卸载模块,您正在为自己制造更大的问题。卸载需要时间,因此它肯定无助于性能的提高。解决问题的正确方法是不卸载模块并将卸载留给AutoCAD。
发布于 2013-07-12 13:42:27
http://docs.autodesk.com/ACD/2013/ENU/index.html?url=files/GUID-3FF72BD0-9863-4739-8A45-B14AF1B67B06.htm,topicNumber=d30e502824
(defun c:Load()
(arxload "the\\file\\path")
; run the app
)试试这个:
(arxload "C:/ABC/XYZ.arx" nil)
(defun c:XYZ_program()
(command)
(command)
(command "XYZ_program")
(arxunload "XYZ.arx" nil)
);祝好运。
https://stackoverflow.com/questions/17602443
复制相似问题