乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
楼主: fcfcadd

[编程交流] 时间日志

[复制链接]

4

主题

31

帖子

27

银币

初来乍到

Rank: 1

铜币
20
发表于 2022-7-6 12:11:31 | 显示全部楼层
我写lisp例程已经有十多年了。我不知道该怎么组合。基本上,我在问是否有人可以用lisp或vba为我编写一个简单的。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 12:15:59 | 显示全部楼层
例子:
 
  1. (defun c:GetTime (/ toDate *error* ofile)
  2. (defun toDate (var format)
  3.    (menucmd (strcat "m=$(edtime,$(getvar," var ")," format ")")))
  4. (defun *error* (msg)
  5.    (and ofile (close file))
  6.    (or (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*")
  7.        (princ (strcat "\n** Error: " msg " **")))
  8.    (princ))   
  9. (if (or *logfile* (setq *logfile* (getfiled "Create Log File" "" "txt" 1)))
  10.    (progn
  11.      (setq ofile (open *logfile* "a"))
  12.      (write-line (strcat "DATE: " (toDate "DATE" "DD.MO.YY HH.MM.SS"))              ofile)
  13.      (write-line (strcat "DRAWING: " (getvar 'DWGPREFIX) (getvar 'DWGNAME))         ofile)
  14.      (write-line (strcat "CREATED: " (toDate "TDCREATE" "DD.MO.YY HH.MM.SS"))       ofile)
  15.      (write-line (strcat "TOTAL EDITING TIME: " (toDate "TDINDWG" "HH.MM.SS") "\n") ofile)
  16.      (setq ofile (close ofile))))
  17. (princ))
  18.      
回复

使用道具 举报

4

主题

31

帖子

27

银币

初来乍到

Rank: 1

铜币
20
发表于 2022-7-6 12:18:42 | 显示全部楼层
我将尝试一下,看看是否可以让它自动运行。非常感谢你。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 12:22:46 | 显示全部楼层
 
当你说自动,你是什么意思?图形何时保存?如果您希望它自动运行,您可能需要将其用作反应堆中的回调函数,由save命令触发。
回复

使用道具 举报

4

主题

31

帖子

27

银币

初来乍到

Rank: 1

铜币
20
发表于 2022-7-6 12:23:03 | 显示全部楼层
我需要它在open命令和close命令上运行。所以每次我打开一个新的图纸,然后当我关闭该图纸。即使我必须在收盘时回答提示,让它运行也没问题。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 12:27:13 | 显示全部楼层
您可以使用命令反应器,在打开命令结束后以及关闭命令启动时做出反应。
 
这里有一些关于反应堆的帮助,
 
http://www.afralisp.net/vl/reactors1.htm
 
Visual LISP帮助文件中也有一些好东西
回复

使用道具 举报

4

主题

31

帖子

27

银币

初来乍到

Rank: 1

铜币
20
发表于 2022-7-6 12:31:26 | 显示全部楼层
是的,我以前去过那个网站,他以前也有一个vba程序,可以记录时间,但现在它有一些错误,我无法让它正常工作。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 12:32:36 | 显示全部楼层
这应该适合您:
 
  1. (defun TimeReac nil
  2. (vl-load-com)
  3. (if (not (vl-position "TIMEREACT"
  4.             (mapcar (function strcase)
  5.                     (mapcar (function vlr-data)
  6.                             (mapcar (function cadr)
  7.                                     (vlr-reactors :vlr-command-reactor))))))
  8.    (progn
  9.      (vlr-command-reactor "TIMEREACT"
  10.        (list
  11.          (cons :vlr-commandWillStart 'GetTime_C)
  12.          (cons :vlr-commandEnded     'GetTime_O)))
  13.      (princ "\n<< Reactor Initiated >>"))
  14.    (princ "\n<< Reactor Already Running >>"))
  15. (princ))
  16. (TimeReac)
  17. (defun GetTime_O (Reactor Args)
  18. (if (eq "OPEN" (strcase (car Args)))
  19.    (GetTime))
  20. (princ))
  21. (defun GetTime_C (Reactor Args)
  22. (if (eq "CLOSE" (strcase (car Args)))
  23.    (GetTime))
  24. (princ))      
  25. (defun GetTime (/ toDate *error* ofile)
  26. (defun toDate (var format)
  27.    (menucmd (strcat "m=$(edtime,$(getvar," var ")," format ")")))
  28. (defun *error* (msg)
  29.    (and ofile (close file))
  30.    (or (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*")
  31.        (princ (strcat "\n** Error: " msg " **")))
  32.    (princ))   
  33. (if (setq ofile (open (strcat (getvar 'DWGPREFIX) (getvar 'DWGNAME) "_log.txt") "a"))
  34.    (progn     
  35.      (write-line (strcat "DATE: "    (toDate "DATE" "DD.MO.YY HH.MM.SS"))           ofile)
  36.      (write-line (strcat "DRAWING: " (getvar 'DWGPREFIX) (getvar 'DWGNAME))         ofile)
  37.      (write-line (strcat "CREATED: " (toDate "TDCREATE" "DD.MO.YY HH.MM.SS"))       ofile)
  38.      (write-line (strcat "TOTAL EDITING TIME: " (toDate "TDINDWG" "HH.MM.SS") "\n") ofile)
  39.      (setq ofile (close ofile))))
  40. (princ))
  41. (defun c:TimeOFF (/ Reac)
  42. (vl-load-com)
  43. (if (and (setq Reac
  44.             (car
  45.               (vl-remove-if-not
  46.                 (function
  47.                   (lambda (x)
  48.                     (eq "TIMEREACT" (strcase (vlr-data x)))))
  49.                 (mapcar (function cadr)
  50.                   (vlr-reactors :vlr-command-reactor)))))
  51.           (vlr-added-p Reac))
  52.    (progn
  53.      (vlr-remove Reac)
  54.      (princ "\n<< Reactor Deactivated >>"))
  55.    (princ "\n** Reactor Not Running **"))
  56. (princ))
  57.       

 
将代码放入ACADDOC。lsp,以便在打开图形时运行。
 
您可以输入TIMEOFF以随时断开反应堆。
 
回复

使用道具 举报

4

主题

31

帖子

27

银币

初来乍到

Rank: 1

铜币
20
发表于 2022-7-6 12:36:33 | 显示全部楼层
我会试一试,看看会发生什么。非常感谢你。如果这能奏效,这将为我节省大量的头痛和时间。
回复

使用道具 举报

4

主题

31

帖子

27

银币

初来乍到

Rank: 1

铜币
20
发表于 2022-7-6 12:39:29 | 显示全部楼层
当我在autocad中打开一个图形时,一切都很好,但我看不到它将日志文件放在哪里
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-6 01:59 , Processed in 0.441977 second(s), 70 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表