JoeyG_77 发表于 2022-7-5 19:52:37

时间记录。。。

大家好。。。我需要一些帮助,我不知道从哪里开始,也不知道如何编写完成我的想法所需的代码。我需要一个文本文件,当你打开和关闭一个带有时间戳的图形时,该文件会给出一个标记,这样我就可以在没有时间戳的情况下跟踪我的一天,试图找出我在一个图形上工作了多少小时。这必须是当天的连续列表。2010年的一篇文章效果很好,但它在每个绘图位置都放了一个单独的文本文件。我需要一个文本文件,这样我就可以看到所有的图纸,打开和关闭的时间和日期。。。。。因此,任何帮助都将不胜感激
 
乔伊·G

Commandobill 发表于 2022-7-5 19:56:46

也许您应该考虑修改lisp例程,您只需将其放入一个文件中。

JoeyG_77 发表于 2022-7-5 20:00:28

我甚至不知道从哪里开始。。。这是我从论坛收到的代码
 
(defun TimeReac nil
(vl-load-com)
(if (not (vl-position "TIMEREACT"
(mapcar (function strcase)
(mapcar (function vlr-data)
(mapcar (function cadr)
(vlr-reactors :vlr-command-reactor))))))
(progn
(vlr-command-reactor "TIMEREACT"
(list
(cons :vlr-commandWillStart 'GetTime_C)
(cons :vlr-commandEnded 'GetTime_O)))

(princ "\n<< Reactor Initiated >>"))

(princ "\n<< Reactor Already Running >>"))

(princ))

(TimeReac)


(defun GetTime_O (Reactor Args)
(if (eq "OPEN" (strcase (car Args)))
(GetTime))
(princ))


(defun GetTime_C (Reactor Args)
(if (eq "CLOSE" (strcase (car Args)))
(GetTime))
(princ))


(defun GetTime (/ toDate *error* ofile)

(defun toDate (var format)
(menucmd (strcat "m=$(edtime,$(getvar," var ")," format ")")))

(defun *error* (msg)
(and ofile (close file))
(or (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*")
(princ (strcat "\n** Error: " msg " **")))
(princ))

(if (setq ofile (open (strcat (getvar 'DWGPREFIX) (getvar 'DWGNAME) "_log.txt") "a"))
(progn

(write-line (strcat "DATE: " (toDate "DATE" "DD.MO.YY HH.MM.SS")) ofile)
(write-line (strcat "DRAWING: " (getvar 'DWGPREFIX) (getvar 'DWGNAME)) ofile)
(write-line (strcat "CREATED: " (toDate "TDCREATE" "DD.MO.YY HH.MM.SS")) ofile)
(write-line (strcat "TOTAL EDITING TIME: " (toDate "TDINDWG" "HH.MM.SS") "\n") ofile)

(setq ofile (close ofile))))

(princ))



(defun c:TimeOFF (/ Reac)
(vl-load-com)
(if (and (setq Reac
(car
(vl-remove-if-not
(function
(lambda (x)
(eq "TIMEREACT" (strcase (vlr-data x)))))
(mapcar (function cadr)
(vlr-reactors :vlr-command-reactor)))))
(vlr-added-p Reac))
(progn
(vlr-remove Reac)
(princ "\n<< Reactor Deactivated >>"))

(princ "\n** Reactor Not Running **"))

(princ))

Commandobill 发表于 2022-7-5 20:04:46

好的,您要更改的行是:
(if (setq ofile (open (strcat (getvar 'DWGPREFIX) (getvar 'DWGNAME) "_log.txt") "a"))
 
如果你告诉我确切的位置和文件名,我可以为你更改。否则,您将更改:
类似于:
双反斜杠是关键。

JoeyG_77 发表于 2022-7-5 20:05:55

C: \Users\Acad2015\TimeLog\Logfile。txt文件
这还会每天创建一个新文件吗。。这是一个愚蠢的问题,但还是想问=)

tzframpton 发表于 2022-7-5 20:08:50

总有CAD节奏:http://www.cadtempo.com/
 
它价格便宜,用途广泛。

Commandobill 发表于 2022-7-5 20:12:17

以下是新代码:
;;I believe this was originally written by Lee-Mac
;;Date: Unknown
;;Modified By:Commandobill
;;Date 04/21/15
;;Reason for change: Updated to make text file be in a static position instead of dynamic.
(defun TimeReac nil
(vl-load-com)
(if (not (vl-position "TIMEREACT"
(mapcar (function strcase)
(mapcar (function vlr-data)
(mapcar (function cadr)
(vlr-reactors :vlr-command-reactor))))))
(progn
(vlr-command-reactor "TIMEREACT"
(list
(cons :vlr-commandWillStart 'GetTime_C)
(cons :vlr-commandEnded 'GetTime_O)))

(princ "\n<< Reactor Initiated >>"))

(princ "\n<< Reactor Already Running >>"))

(princ))

(TimeReac)


(defun GetTime_O (Reactor Args)
(if (eq "OPEN" (strcase (car Args)))
(GetTime))
(princ))


(defun GetTime_C (Reactor Args)
(if (eq "CLOSE" (strcase (car Args)))
(GetTime))
(princ))


(defun GetTime (/ toDate *error* ofile)

(defun toDate (var format)
(menucmd (strcat "m=$(edtime,$(getvar," var ")," format ")")))

(defun *error* (msg)
(and ofile (close file))
(or (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*")
(princ (strcat "\n** Error: " msg " **")))
(princ))

(if (setq ofile (open "C:\\Users\\Acad2015\\TimeLog\\Logfile.txt" "a"));;Location of change
(progn

(write-line (strcat "DATE: " (toDate "DATE" "DD.MO.YY HH.MM.SS")) ofile)
(write-line (strcat "DRAWING: " (getvar 'DWGPREFIX) (getvar 'DWGNAME)) ofile)
(write-line (strcat "CREATED: " (toDate "TDCREATE" "DD.MO.YY HH.MM.SS")) ofile)
(write-line (strcat "TOTAL EDITING TIME: " (toDate "TDINDWG" "HH.MM.SS") "\n") ofile)

(setq ofile (close ofile))))

(princ))



(defun c:TimeOFF (/ Reac)
(vl-load-com)
(if (and (setq Reac
(car
(vl-remove-if-not
(function
(lambda (x)
(eq "TIMEREACT" (strcase (vlr-data x)))))
(mapcar (function cadr)
(vlr-reactors :vlr-command-reactor)))))
(vlr-added-p Reac))
(progn
(vlr-remove Reac)
(princ "\n<< Reactor Deactivated >>"))

(princ "\n** Reactor Not Running **"))

(princ))
 
我们可以随时更改代码,每天创建一个新的文本文件,但目前没有。

Commandobill 发表于 2022-7-5 20:17:41

 
亵渎进入一个LISP线程,试图让人们购买东西。。。

JoeyG_77 发表于 2022-7-5 20:18:41

2010年1月27日是他写这封信的日期。。。
这是原始线程:http://www.cadtutor.net/forum/archive/index.php/t-44196.html
 
非常感谢比尔,我现在正在测试它=)

JoeyG_77 发表于 2022-7-5 20:22:29

这是它提供的文件中的文本
日期:04.21.15 13.05.26
图纸:X:\Churchill\Engineering\JohnsBedroom\Churchill\U JohnsBedroom\U Rev0。图纸
创建时间:04.17.15 12.35.19
总编辑时间:03.03.43
 
比尔有没有办法捕捉这样的动作。。
操作:打开
日期:04.21.15 13.05.26
图纸:X:\Churchill\Engineering\JohnsBedroom\Churchill\U JohnsBedroom\U Rev0。图纸
 
动作:关闭
日期:04.21.15 13.05.26
图纸:X:\Churchill\Engineering\JohnsBedroom\Churchill\U JohnsBedroom\U Rev0。图纸
页: [1] 2
查看完整版本: 时间记录。。。