lamensterms 发表于 2022-7-6 06:46:42

保存重复的DWG LISP Routin

嘿伙计们,
 
前几天我在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)
)
 
谢谢你的帮助。

pBe 发表于 2022-7-6 07:14:46

(setvar专家2)。。天啊,我现在很困惑

lamensterms 发表于 2022-7-6 07:40:41

就这样-谢谢pBe。

pBe 发表于 2022-7-6 07:58:35

 
很高兴我能帮忙
页: [1]
查看完整版本: 保存重复的DWG LISP Routin