Here is a reactor I did a while ago. It tells you how long a drawing has been open, and if it was saved. It could be better, but it was just a test back when I wanted to look into reactors. Change the file name/location to suit you needs.
(if (not GlbVarTimeString)
(progn
(setq DateStr (rtos (getvar "cdate") 2 16))
(setq GlbVarTimeString
(strcat
(substr DateStr 5 2)
"/"
(substr DateStr 7 2)
"/"
(substr DateStr 1 4)
","
(substr DateStr 10 2)
":"
(substr DateStr 12 2)
","
(getvar "dwgprefix")
(getvar "dwgname")
","
)
)
(setq DateStr nil)
)
)
(if (not GlbReactorBeginClose)
(setq GlbReactorBeginClose (vlr-dwg-reactor "TimeSheet" '((:vlr-BeginClose . DwgToBeClosed))))
)
(if (not GlbReactorSaveComplete)
(setq GlbReactorSaveComplte (vlr-dwg-reactor "TimeSheet" '((:vlr-SaveComplete . SaveCompleted))))
)
;-----------------------------------------------------------------------------------------------------------
(defun SaveCompleted (React DwgName / DateStr)
(setq DateStr (rtos (getvar "cdate") 2 16))
(setq GlbVarSaveTime (strcat (substr DateStr 10 2) ":" (substr DateStr 12 2) ","))
)
;-------------------------------------------------------------------------------------------------------------
(defun DwgToBeClosed (React DwgName / DateStr TextFile New Opened)
(if (equal (getvar "dwgtitled") 1)
(progn
(setq DateStr (rtos (getvar "cdate") 2 16))
[color=red](if (not (setq TextFile (findfile "TimeSheet.csv")))[/color]
(progn
(setq New T)
[color=red](setq TextFile "C:\\Custom2006\\TimeSheet.csv")[/color]
)
)
(setq Opened (open TextFile "a"))
(if New
(write-line "Date,Time Opened,File Name,Last Saved,Closed Time" Opened)
)
(write-line
(strcat
GlbVarTimeString
(if GlbVarSaveTime
GlbVarSaveTime
"Not saved!,"
)
(substr DateStr 10 2)
":"
(substr DateStr 12 2)
)
Opened
)
(close Opened)
)
)
)