669423907 发表于 2020-2-27 11:26:13

如何限制一个程序(命令)重复运行的间隔时间?

在日常操作cad的时候,一不小心就连续按了两次或多次空格键(或回车键),又或者按下去太久,导致继续运行上一个命令(程序),比如以下程序 13

(defun c:13()
(princ "\n 888888888")
)

因此,向大家请教一个问题:如何限制一个程序(命令)重复运行的间隔时间?比如两次运行的时间间隔必须大于3秒

tryhi 发表于 2020-2-27 11:26:14

本帖最后由 tryhi 于 2020-2-28 11:27 编辑

(defun c:13()
      (and *time* (<(try-time-end *time* nil)3000) (exit))
      (princ "\n 888888888")
      (setq *time* (try-time-be))
      (princ)
)

(defun try-time-be () ;计时器开始
      (setq $try-timebe(getvar "TDUSRTIMER"))
)

(defun try-time-end (time p / tt) ;计时器结束
      (if (not time)(setq time $try-timebe))
      (setq tt(* 86400000(- (getvar "TDUSRTIMER") time)))
      (if p (print(strcat"经历时间为:"(rtos tt 2 0)"毫秒")))
      tt
)

start4444 发表于 2020-2-27 11:45:09

这想法可以啊,要不要把所以命令都这样给你设置一下

雨的节奏 发表于 2020-2-27 12:28:13

每次运行完写一个注册表

669423907 发表于 2020-2-27 21:00:24

谢谢各位大师的热情回复,我也在写,还没写好

669423907 发表于 2020-2-28 11:47:41

(defun J计算时间差(jg / tx)
;(setq tx (atof(menucmd"M=$(edtime,$(getvar,date),mmss)")) ) ;YYMODDhhmmss
(setq tx (*(getvar "TDUSRTIMER")86400) ) ;86400000毫秒
(if (not jg) (setq jg 0))

(if t1
(if (< (- tx t1) jg) (vlax-invoke shell "SendKeys" "{esc}") (setq t1 tx))
(setq t1 tx)
)
(setq jg nil)
)


(defun c:13()
(J计算时间差 1)
(princ "\n 888")
)


请教一下,为什么 t1 不能作为局部变量?

cchessbd 发表于 2022-10-20 17:15:57

tryhi 发表于 2020-2-27 11:26
(defun c:13()
      (and *time* (

大神,太牛了!
页: [1]
查看完整版本: 如何限制一个程序(命令)重复运行的间隔时间?