明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2173|回复: 16

[提问] 有没有一个lsp可以在dwg后面添加当前系统的日期?

[复制链接]
发表于 2022-9-6 16:43:29 | 显示全部楼层 |阅读模式
5明经币
本帖最后由 ljfzx 于 2022-9-7 19:24 编辑

画图的时候,经常想备份当前画的图纸,但是在论坛里面搜索了良久也没有一个合适的,请问有没有一个lsp可以做到以下的要求:


1.在当前图纸dwg文件名加上后缀“YYYYMODD”(就是当前保存的年月日)。
2.每次保存的时候可以检测此文件名的后缀日期是否与系统日期一致,如果相同就正常保存,如果不同的话,就把当前的文档备份到图纸目录下的“备份目录”去,并且自动修改当前文档的日期与系统日期一致。
3.例如当前系统日期为20220901,图档的后缀日期也是20220901,则直接保存
如果当前系统日期为20220901,图档的后缀日期为20220831,则备份0831的图纸到当前图档的文件夹下的“备份”文件夹内,并把当前的0831文档后缀名修改为0901并保存。

这样能够确保每天的修改量都可以备份下来,请问有大神可以做到吗?




自己解决了,还是得靠自己啊。。



  1. (defun c:bak ( /  oldpath oldname oldname1 midname newname)
  2. ;;;;;下面的程序为获取文件原始的文件名及路径
  3. (setq oldpath (getvar "DWGPREFIX"));获取文件n路径
  4. (setq oldname (getvar "dwgname"));获取文件名
  5.   (vl-mkdir (strcat (getvar 'DWGPREFIX) "图纸备份"))               ;在源目录下创建一个名称为BAK的文件夹
  6.   (setq oldname1 (vl-filename-base (getvar "DWGNAME")))
  7.                                         ;将去掉路径和后缀名的文件名赋值给变量
  8.   (vl-file-copy
  9.    (strcat oldpath oldname1 ".dwg")
  10.     (strcat (getvar 'DWGPREFIX)
  11.                "图纸备份\"
  12.                (cadr (fnsplitl (getvar 'DWGNAME)))
  13.                ".dwg"
  14.        )
  15.     nil
  16.   )
  17. ;;;;;下面的程序为以现在的时刻时间加到原文件名后并保存
  18.    (if (wcmatch oldname "* *.dwg")
  19.        (setq midname (substr oldname 1 (vl-string-search " " oldname)))
  20.        (setq midname (substr oldname 1 (- (strlen oldname)  4)))
  21.    )                                      
  22.    (setq newname (strcat midname " " (menucmd "M=$(edtime,$(getvar,date),YYYYMODD)") ".dwg"))
  23.    (command "saveas" ""  (strcat oldpath newname) "y")

  24. ;;;;;下面的程序为删除加上新时刻时间前的文件
  25.    (vl-file-delete (strcat oldpath oldname1 ".dwg"))
  26.    (vl-file-delete (strcat oldpath oldname1 ".bak"))
  27.    (princ)
  28. )




评分

参与人数 1明经币 +1 收起 理由
菜鸟初来乍到 + 1 很给力!

查看全部评分

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2022-9-6 21:11:19 | 显示全部楼层
这个可能需要反应器吧,思路倒简单,利用(getvar "cdate") 获取当前日期 ,用(Getvar "dwgname")等变量"获取当前文件名和路径,反应器检测到保存动作时候调用和判断修改。
回复

使用道具 举报

发表于 2022-9-6 21:30:33 | 显示全部楼层
没啥意义!!
回复

使用道具 举报

发表于 2022-9-6 21:42:07 | 显示全部楼层
第一个不行啊 文件不关闭不可以改名
回复

使用道具 举报

发表于 2022-9-6 22:38:43 | 显示全部楼层
已经有了,仔细搜。
回复

使用道具 举报

发表于 2022-9-7 07:58:02 | 显示全部楼层

;找到一个存为今天
(defun C:EF_TodaySave ( / name basename ext fullname bakname path time newname)
  (setq name (Vlax-Get (Vlax-Get (Vlax-Get-Acad-Object) 'ActiveDocument) 'Name))
  (setq fullname (Vlax-Get (Vlax-Get (Vlax-Get-Acad-Object) 'ActiveDocument) 'FullName))
  (setq path (vl-filename-directory  fullname))
  (setq ext (vl-filename-extension name))
  (setq basename (vl-filename-base name))
  (setq bakname (strcat path "\\" basename ".bak"))
  (setq time (menucmd "m=$(edtime,$(getvar,DATE),YYYY-MO-DD HH-MM-SS)"))
  (cond ((= fullname "")    ;从未存过盘
     (vla-sendcommand (vla-get-activedocument (vlax-get-acad-object)) "SAVE ")
     )
    ((wcmatch (strcase name)  "*`[####-##-## ##-##-##`].DWG")
     (setq newname (strcat path "\\" (substr basename 1 (- (strlen basename) 21)) "[" time "]" ext))
     (if (= (strcase fullname) (strcase newname))
       (vla-sendcommand (vla-get-activedocument (vlax-get-acad-object)) "SAVE ")
       (progn
         (vl-cmdf "SAVEAS" "" newname)
         (if (= (getvar 'ISAVEBAK) 1)    ;检测是否需要备份
           (vl-file-rename fullname (strcat path "\\" (vl-filename-base newname) ".bak"))
           (vl-file-delete fullname)
           )
         (if (vl-file-size bakname) (vl-file-delete bakname))
         )
       )
     )
    (T
     (setq newname (strcat path "\\" basename "[" time "]" ext))
     (vl-cmdf "SAVEAS" "" newname)
     (if (= (getvar 'ISAVEBAK) 1)    ;检测是否需要备份
       (vl-file-rename fullname (strcat path "\\" (vl-filename-base newname) ".bak"))
       (vl-file-delete fullname)
       )
     (if (vl-file-size bakname) (vl-file-delete bakname))
     )
    )
  (princ)
  )
回复

使用道具 举报

发表于 2022-9-7 09:06:40 | 显示全部楼层
baitang36 发表于 2022-9-7 07:58
;找到一个存为今天
(defun C:EF_TodaySave ( / name basename ext fullname bakname path time newname) ...

感谢明经大神的分享,谢谢~

点评

明经币可以发放了~  发表于 2022-9-7 09:36
回复

使用道具 举报

发表于 2022-9-7 09:34:44 | 显示全部楼层
czb203 发表于 2022-9-7 09:06
感谢明经大神的分享,谢谢~

不要感谢我,这不是我写的,是搜到的。没发现作者信息。作者看到后自己认领吧。
我不是大神,只是个业余爱好者。很高兴和大家一起玩。

点评

大神真的是谦虚了~  发表于 2022-9-7 09:38
回复

使用道具 举报

 楼主| 发表于 2022-9-7 10:20:45 | 显示全部楼层
飞雪神光 发表于 2022-9-6 21:42
第一个不行啊 文件不关闭不可以改名

用saveas应该可以
回复

使用道具 举报

 楼主| 发表于 2022-9-7 10:29:29 | 显示全部楼层
baitang36 发表于 2022-9-7 07:58
;找到一个存为今天
(defun C:EF_TodaySave ( / name basename ext fullname bakname path time newname) ...

这个程序不能在当前文件夹下自动建立备份文件夹并备份到这里啊。只能改当前名称
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-17 00:21 , Processed in 0.191902 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表