;;; 快速退出
AutoCAD--By Caoyin 2009.4
;;; 不必逐个操作检查保存、关闭文档,不必担心文档因未保存而丢失。
;;; 1. 未修改的文档直接关闭;
;;; 2. 已经修改并已经命名存档的直接保存;
;;; 3. 已经修改但尚未命名存档的另存到临时目录。
(defun C:QX (/ AC MSG TMP NAME FNAME)
(setq AC (vlax-get-acad-object) MSG "")
(vlax-for X (vla-get-Documents AC)
(if (not (zerop (vlax-invoke X 'getVariable "DBMOD"))) ;;文档已经被修改
(if (= (vlax-invoke X 'getVariable "DWGTITLED") 1)
(vl-catch-all-apply 'vla-save (list X)) ;;已经命名则直接保存
(progn ;;未命名则创建临时路径然后另存为
(or TMP
(progn
(setq TMP (strcat (getenv "TEMP")
"
\\DWG临时保存-"
(rtos (* (vlax-invoke X 'getVariable "CDATE") 1E+5) 2 0)
)
)
(vl-mkdir TMP)
)
)
(setq NAME (vlax-invoke X 'getVariable "DWGNAME")
FNAME (strcat TMP "\\" NAME)
)
(setq MSG (strcat MSG "图形文档\n“" NAME "”\n被临时储存为\n“" FNAME "”;\n\n"))
(vl-catch-all-apply 'vla-saveas (list X FNAME))
)
)
)
(vl-catch-all-apply 'vla-close (list X))
)
(alert MSG)
(vla-SendCommand (vla-get-ActiveDocument AC) "_.quit ") ;;关闭AutoCAD
)