明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1141|回复: 6

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

[复制链接]
发表于 2020-2-27 11:26 | 显示全部楼层 |阅读模式
1明经币
在日常操作cad的时候,一不小心就连续按了两次或多次空格键(或回车键),又或者按下去太久,导致继续运行上一个命令(程序),比如以下程序 13

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

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

最佳答案

查看完整内容

(defun c:13() (and *time* (
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2020-2-27 11:26 | 显示全部楼层
本帖最后由 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
)
回复

使用道具 举报

发表于 2020-2-27 11:45 | 显示全部楼层
这想法可以啊,要不要把所以命令都这样给你设置一下
回复

使用道具 举报

发表于 2020-2-27 12:28 来自手机 | 显示全部楼层
每次运行完写一个注册表
回复

使用道具 举报

 楼主| 发表于 2020-2-27 21:00 | 显示全部楼层
谢谢各位大师的热情回复,我也在写,还没写好
回复

使用道具 举报

 楼主| 发表于 2020-2-28 11:47 | 显示全部楼层
(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 不能作为局部变量?
回复

使用道具 举报

发表于 2022-10-20 17:15 | 显示全部楼层
tryhi 发表于 2020-2-27 11:26
(defun c:13()
        (and *time* (

大神,太牛了!
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-3 02:49 , Processed in 0.578730 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表