本帖最后由 ljfzx 于 2022-9-7 19:24 编辑
画图的时候,经常想备份当前画的图纸,但是在论坛里面搜索了良久也没有一个合适的,请问有没有一个lsp可以做到以下的要求:
1.在当前图纸dwg文件名加上后缀“YYYYMODD”(就是当前保存的年月日)。
2.每次保存的时候可以检测此文件名的后缀日期是否与系统日期一致,如果相同就正常保存,如果不同的话,就把当前的文档备份到图纸目录下的“备份目录”去,并且自动修改当前文档的日期与系统日期一致。
3.例如当前系统日期为20220901,图档的后缀日期也是20220901,则直接保存
如果当前系统日期为20220901,图档的后缀日期为20220831,则备份0831的图纸到当前图档的文件夹下的“备份”文件夹内,并把当前的0831文档后缀名修改为0901并保存。
这样能够确保每天的修改量都可以备份下来,请问有大神可以做到吗?
自己解决了,还是得靠自己啊。。
- (defun c:bak ( / oldpath oldname oldname1 midname newname)
- ;;;;;下面的程序为获取文件原始的文件名及路径
- (setq oldpath (getvar "DWGPREFIX"));获取文件n路径
- (setq oldname (getvar "dwgname"));获取文件名
- (vl-mkdir (strcat (getvar 'DWGPREFIX) "图纸备份")) ;在源目录下创建一个名称为BAK的文件夹
- (setq oldname1 (vl-filename-base (getvar "DWGNAME")))
- ;将去掉路径和后缀名的文件名赋值给变量
- (vl-file-copy
- (strcat oldpath oldname1 ".dwg")
- (strcat (getvar 'DWGPREFIX)
- "图纸备份\"
- (cadr (fnsplitl (getvar 'DWGNAME)))
- ".dwg"
- )
- nil
- )
- ;;;;;下面的程序为以现在的时刻时间加到原文件名后并保存
- (if (wcmatch oldname "* *.dwg")
- (setq midname (substr oldname 1 (vl-string-search " " oldname)))
- (setq midname (substr oldname 1 (- (strlen oldname) 4)))
- )
- (setq newname (strcat midname " " (menucmd "M=$(edtime,$(getvar,date),YYYYMODD)") ".dwg"))
- (command "saveas" "" (strcat oldpath newname) "y")
- ;;;;;下面的程序为删除加上新时刻时间前的文件
- (vl-file-delete (strcat oldpath oldname1 ".dwg"))
- (vl-file-delete (strcat oldpath oldname1 ".bak"))
- (princ)
- )
|