明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2432|回复: 7

[已解答] 文件另存lisp,求帮助能判断一下时间格式,只保留最新的时间,免得文件重命名越来...

[复制链接]
发表于 2014-11-29 09:15:34 | 显示全部楼层 |阅读模式
文件另存lisp,求帮助能判断一下时间格式,只保留最新的时间,免得文件重命名越来越长,谢谢

  1. ;;直接按时间更改名字另保并打开目录
  2. (defun c:sav ( / date dwgtitled newname oldname path)
  3.   (if (= (getvar "DWGTITLED") 0)
  4.     (ALERT "请先保存文件!")
  5.     (progn
  6.       (setq path (getvar "DWGPREFIX")
  7.       oldname (vl-filename-base (getvar "DWGNAME"))
  8.       )
  9.       (setq date (menucmd "M=$(edtime,$(getvar,date),[YYYY-MO-DD]-[HH-MM-SS])"))
  10.       (setq newname (strcat path oldname date))
  11.       (command "_.save" newname)
  12.       (princ (strcat "\n---本图已另存为" newname ".dwg"))
  13.     )
  14.   )
  15.   (initget "Q")
  16.   (setq key (getkword "\n本图已另存是否打开另存文件夹 [打开(Q)/ <不打开(默认)>"))
  17.   (if (= key "Q")
  18.     (startapp (strcat "explorer /select, " (getvar "dwgprefix") (getvar "dwgname") ", /e"))
  19.   )
  20.     (princ)
  21. )



"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2014-11-29 11:19:47 | 显示全部楼层
本帖最后由 ㄘ丶转裑ㄧ灬 于 2014-11-30 20:45 编辑

暂时没弄懂这样另存的意义是什么。。
建议去看下G版的自动备份图纸
http://bbs.mjtd.com/forum.php?mo ... 1521&fromuid=401847

或者G版的另一个备份图纸
http://bbs.mjtd.com/thread-101512-1-1.html
发表于 2014-11-30 08:52:15 | 显示全部楼层
  1. ;;直接按时间更改名字另保并打开目录
  2. (defun c:sav ( / date dwgtitled newname oldname path)
  3.   (if (= (getvar "DWGTITLED") 0)
  4.     (ALERT "请先保存文件!")
  5.   (progn
  6.     (setq path (getvar "DWGPREFIX")
  7.           oldname (vl-filename-base (getvar "DWGNAME")))
  8.     (setq date (menucmd "M=$$(edtime,$$(getvar,date),[YYYY-MO-DD]-[HH-MM-SS])"))
  9.     (if (wcmatch oldname (strcat "*" (substr date 1 4) "*")) (progn
  10.      (setq n 1)
  11.      (while (/= (substr date 1 4) (substr oldname n 4)) (setq n (1+ n)))
  12.      (setq oldname (substr oldname 1 n))
  13.     ))
  14.     (setq newname (strcat path oldname date))
  15.     (command "_.save" newname)
  16.     (princ (strcat "\n---本图已另存为" newname ".dwg"))
  17.   ))
  18.   (initget "Q")
  19.   (setq key (getkword "\n本图已另存是否打开另存文件夹 [打开(Q)/ <不打开(默认)>"))
  20.   (if (= key "Q")
  21.     (startapp (strcat "explorer /select, " (getvar "dwgprefix") (getvar "dwgname") ", /e"))
  22.   )
  23.   (princ)
  24. )
 楼主| 发表于 2014-11-30 09:17:07 | 显示全部楼层
我打开了Drawing1[2014-11-30]-[09-08-14].dwg
使用命令: sav
"C:\tangent\TWT9\sys18x64\Drawing1[2014-11-30]-[09-08-14]$ $(EDTIME,??) ":  
无效文件名。

---本图已另存为C:\tangent\TWT9\sys18x64\Drawing1[2014-11-30]-[09-08-14]$ $(EDTIME,??)
.dwg
麻烦z版帮忙修改一下,谢谢了
发表于 2014-11-30 19:30:05 | 显示全部楼层
图纸另存为实际上就是复制一份,建议参考函数:vl-file-copy
 楼主| 发表于 2014-11-30 22:32:01 | 显示全部楼层
本帖最后由 tranney 于 2014-11-30 22:33 编辑

哎呀呀,等了这么久,看到了一个处理字符串的帖子,然后自己处理了一下居然成功了,
另存的文件=文件名-[年-月-日][时-分-秒]
希望大家喜欢

  1. ;主函数
  2. (defun c:sav ( / date dwgtitled newname oldname oldname1 path)
  3.   (if (= (getvar "DWGTITLED") 0)
  4.     (ALERT "请先保存文件!")
  5.     (progn
  6.       (setq path (getvar "DWGPREFIX")
  7.       oldname (vl-filename-base (getvar "DWGNAME"))
  8.       )
  9. (setq oldname1 (HH:GetBeforeStr1 oldname "-"))

  10.       (setq date (menucmd "M=$(edtime,$(getvar,date),-[YYYY-MO-DD][HH-MM-SS])"))
  11.       (setq newname (strcat path oldname1 date))
  12.       (command "_.saveas" "" newname "")
  13.       (princ (strcat "\n---本图已另存为" newname ".dwg"))
  14.     )
  15.   )
  16. )
  17. ;子函数1
  18. (defun HH:GetBeforeStr1 (str st);区分大小写
  19.   (car (xd::string:regexps (strcat "[^" st "]+") str "I"))
  20. )
  21. ;子函数2
  22. (defun XD::String:RegExpS (pat str key / end keys matches x)
  23.   (if (not *xxvbsexp)
  24.     (setq *xxvbsexp (vlax-get-or-create-object "VBScript.RegExp"))
  25.   )
  26.   (vlax-put *xxvbsexp 'Pattern pat);;;;;;是'Pattern出错的,
  27.   (if (not key)
  28.     (setq key "")
  29.   )
  30.   (setq key (strcase key))
  31.   (setq keys '(("I" "IgnoreCase") ("G" "Global")
  32.          ("M" "Multiline")
  33.         )
  34.   )
  35.   (mapcar
  36.     '(lambda (x)
  37.        (if (wcmatch key (strcat "*" (car x) "*"))
  38.          (vlax-put *xxvbsexp (read (cadr x)) 0)
  39.          (vlax-put *xxvbsexp (read (cadr x)) -1)
  40.        )
  41.      )
  42.     keys
  43.   )
  44.   (setq matches (vlax-invoke *xxvbsexp 'Execute str))
  45.   (vlax-for x matches (setq end (cons (vla-get-value x) end)))
  46.   (reverse end)
  47. )
发表于 2024-8-23 15:22:20 | 显示全部楼层
111111111111111
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 09:55 , Processed in 0.258633 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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