本帖最后由 183017064 于 2025-5-30 14:42 编辑
不要占用资源那种
- (setvar "modemacro" "$(edtime,$(getvar,date),YYYY年M月DD日DDDDH:MM:SS)")
- 原因在于​​AutoCAD的modemacro变量不支持动态实时刷新​​,而中望CAD可能对此功能进行了增强 auto CAD有办法解决吗?
 - (defun c:timer ()
- (vl-load-com)
-
- (defun Timer_Tick ()
- (setq AA (menucmd "m=$(edtime,$(getvar,date),YYYY年M月D日 HH:MM:SS DDD)"))
- (setvar "modemacro"
- (strcat " Yu文书 <" AA
- "> 比例:<1:" (rtos (getvar 'dimscale))
- "> 层:<" (substr (getvar 'CLAYER) 1 20) ">"
- )
- )
- )
- ;; 鼠标点击回调函数
- (defun MouseClickCallback (reactor params)
- (Timer_Tick)
- )
-
- ;; 定义反应器回调函数
- (defun ReactorCallback (reactor params)
- (Timer_Tick) ; 每次命令结束后更新状态栏
- )
-
- ;; 创建命令反应器(如果尚未创建)
- (if (not *CommandReactor*)
- (setq *CommandReactor*
- (vlr-command-reactor nil '((:vlr-commandEnded . ReactorCallback)))
- )
- )
-
- ;; 创建鼠标点击反应器(使用支持的点击事件)
- (if (not *MouseReactor*)
- (setq *MouseReactor*
- (vlr-mouse-reactor nil '((:vlr-beginDoubleClick . MouseClickCallback)
- (:vlr-beginRightClick . MouseClickCallback)))
- )
- )
-
- ;; 立即更新一次状态栏
- (Timer_Tick)
-
- (princ "\n状态栏自动更新已启用。执行任何命令后将刷新状态信息。")
- (princ)
- )
- (defun c:endt()
- (defun Timer_Tick()NIL)
- (setq MyTimer nil)
- (if *MouseReactor*
- (vlr-remove *MouseReactor*)
- )
- (setvar "modemacro" "")
- (princ "\n状态栏自动更新和鼠标刷新已禁用。")
- (princ))
- (c:timer)
|