嘿伙计们,
前几天我在Audodesk论坛上发现了这个帖子…http://forums.autodesk.com/t5/Visual-LISP-AutoLISP-and-General/Save-copy-of-AutoCAD-Dwg-file-using-macro/td-p/3574830
我觉得这是个不错的主意。因此,我将宏代码应用到QuickSave LISP例程中,发现它运行得很好。
有一件事让我困惑……有时我会收到这样的信息:“一幅同名的画已经存在。你想替换它吗?”在命令行中返回,其他时候我没有收到消息,例程成功完成。我的第一个想法是,我只会(而且总是)在消息为真时得到该消息,即当需要覆盖文件时。事实并非如此,有时我可以运行例程,在我的“备份”目录中可能存在同名的现有文件,并且我不会看到“覆盖”消息。
我的代码是:
- (defun c:q ()
- (vl-load-com)
- (command "qsave")
- (SETQ QSDATE (RTOS (GETVAR "CDATE") 2 0))
- (vl-mkdir (strcat "D:/_DWGBackup/" QSDATE "/"))
- (command "_.SAVE" (strcat "D:/_DWGBackup/" QSDATE "/" (getvar "DWGNAME")))
- (princ)
- )
我已经找到了解决这个问题的方法(下面的代码),所以这不是我寻求的解决方案——只是解释一下为什么我有时只会得到这个信息。
- (DEFUN C:q (/ newname)
- (setvar "CMDECHO" 0)
- (if (zerop (getvar "dwgtitled"))
- (command "._qsave" (getstring "\n Enter drawing name: "))
- (command "_.qsave")
- )
- (setvar "filedia" 0)
- (vl-mkdir (strcat "D:/_DWGBackup/" QSDATE "/"))
- (setq newname
- (strcat
- "D:/_DWGBackup/" QSDATE "/"
- (getvar "DWGNAME")
- )
- )
- (if (findfile (strcat newname))
- (command "_.save" newname "_Y")
- (command "_.save" newname)
- )
- (setvar "filedia" 1)
- (princ)
- )
谢谢你的帮助。 |