明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3647|回复: 11

读取dwg文件的修改时间

[复制链接]
发表于 2007-6-14 10:39 | 显示全部楼层 |阅读模式
请问大家怎样用lisp实现:读取dwg文件的修改时间以及怎样用lisp修改DWG文件的修改时间?先谢了啊
发表于 2007-6-14 11:24 | 显示全部楼层
TDUPDATE 存储最后一次更新/保存的本地时间和日期
是只读的
 楼主| 发表于 2007-6-14 11:41 | 显示全部楼层
我主要是想修改这个时间,能用lisp实现吗?
发表于 2007-6-14 12:24 | 显示全部楼层
byghbcx发表于2007-6-14 11:24:00TDUPDATE 存储最后一次更新/保存的本地时间和日期是只读的

我不知道能不能修改。但是既然二楼说了,只读,你说能不能修改!

发表于 2007-6-14 12:26 | 显示全部楼层
扔一个在Autodesk网站看到的。。好像不能用的修改次数的东西
  1. ;;;修改修计次数DWGPROPS
  2. (defun C:REVNO ();/ reply revno xlist)
  3.   ;; get Xrecord and revno
  4.   (setq xlist (dictsearch (namedobjdict) "DWGPROPS")
  5. xlist (if xlist
  6.   xlist
  7.   '((0 . "XRECORD")
  8.     (100 . "AcDbXrecord")
  9.     (1
  10.      .
  11.      "DWGPROPS COOKIE"
  12.     )
  13.    )
  14.        )
  15. revno (assoc 9 xlist)
  16. revno (if revno
  17.   (cdr revno)
  18.   ""
  19.        )
  20. xlist (mapcar '(lambda (i)
  21.     (if (member (car i)
  22.          '(0    1  2    3    4 6
  23.            7    8  100  300  301 302
  24.            303  304  305  306  307 308
  25.            309
  26.           )
  27.         )
  28.       i
  29.     )
  30.          )
  31.         xlist
  32.        )
  33. xlist (apply '(lambda (l / i r)
  34.    (foreach i l
  35.      (if i
  36.        (setq r (append r (list i)))
  37.      )
  38.    )
  39.    r
  40.         )
  41.        (list xlist)
  42.        )
  43.   )
  44.   ;; get new revno
  45.   (setq reply (getstring
  46.   T
  47.   (strcat "Enter new revision number, or . for none
  48. <"   revno
  49.    ">: "
  50.   )
  51.        )
  52. reply (if (= "" reply)
  53.   revno
  54.   reply
  55.        )
  56. reply (if (= "." reply)
  57.   ""
  58.   reply
  59.        )
  60.   )
  61.   ;; set Xrecord
  62.   (setq xlist (append xlist
  63.         (list (cons 9 reply))
  64.         (list (cons 40 (getvar "TDINDWG"))
  65.        (cons 41 (getvar "TDCREATE"))
  66.        (cons 42 (getvar "TDUPDATE"))
  67.         )
  68.        )
  69.   )
  70.   (dictremove (namedobjdict) "DWGPROPS")
  71.   (dictadd (namedobjdict) "DWGPROPS" (entmakex xlist))
  72.   (princ)
  73. )
发表于 2007-6-14 12:26 | 显示全部楼层

一个笨办法,把系统日期调整到你需要的时间,打开图纸再保存,再把时间调回来.

或者试试FSO,创建FSO接口,用vlax-put-propties方法试试.

发表于 2007-6-14 12:46 | 显示全部楼层

几个关于时间的系统变量:

TDCREATE 存储创建图形的当地时间和日期。

TDINDWG 存储所有的编辑时间,即在保存当前图形之间占用的总时间。

TDUCREATE 存储创建图形的通用时间和日期。

TDUPDATE 存储最后一次更新/保存图形的当地时间和日期。

 TDUSRTIMER 存储用户消耗的时间计时器。

 TDUUPDATE 存储最后一次更新/保存图形的通用时间和日期。

发表于 2007-6-14 20:37 | 显示全部楼层
在空白图中插入要更改时间的图样再另存就能以当前时间和最少的用户编辑时间保存图样了(注意:可事先更改系统时间)。
 楼主| 发表于 2007-6-15 09:24 | 显示全部楼层

我本来的目地是想选中多张图纸,自动purge,然后存盘,因为图纸大部分是原来的存档图,存盘后,修改时间就变成现在的了,我又不想图纸的修改时间变化,所以想寻求在lisp下能修改文件的修改日期的办法。有个软件SmartPurger可以实现上诉功能,主要是用起来图纸大点就出问题,所以想自己编一个,希望大家能给我提点方法,谢谢!

发表于 2012-9-6 17:28 | 显示全部楼层
(vl-file-systime filename)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-3 17:33 , Processed in 0.265785 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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