Grrr 发表于 2022-7-5 17:50:04

关于反应堆的问题

大家好,
 
我没有发现任何类似的信息,关于反应堆的问题,让我好奇。
所以我的问题是:
 
*回拨问题:
是否可以通过reactor作为回调运行lisp命令定义?
例如,运行C:测试某个事件。
 
*事件问题:
是否可以像循环一样重新运行该命令(C:测试),例如延迟0.5秒?(我不知道结果可能是什么-可能AutoCAD会崩溃)。
但这意味着不包括任何活动?或者,如果有一个变量很重要:从“CDATE”变量的某个值中获取它。
 
*此类事件的回调示例:
-每隔15分钟从lisp这样的列表中打印提示:
 
(defun-q c:test ( / lst )

   (setq lst '( "[#1] Tip Number 1."
       "[#2] Tip Number 2."
       "[#3] Tip Number 3."
       "[#4] Tip Number 4."
       "[#5] Tip Number 5."
       "[#6] Tip Number 6."
       )
   )
   (setq c:test (vl-list* '( / lst ) (list 'setq 'lst (list 'quote (append (cdr lst) (list (car lst))))) (cddr c:test)))
   (setq storedvalue (car lst))
   (princ (strcat "\n" storedvalue " "))
   (princ)
)       
-或者lisps在图形中执行一些检查:例如,是否有需要清除的块/层,
是否进行了选择?如果是,则调用属性,如果不是,则关闭属性(Lee Mac对这一点没有反应,但我仍然对另一种方式很好奇)。

broncos15 发表于 2022-7-5 18:14:34

如果我理解你的问题,是的,你可以为某个事件编写一个LISP例程,只需使用vla sendcommand。要将命令延迟5秒,请使用延迟命令(使用vla sendcommand),延迟量为5000。

Grrr 发表于 2022-7-5 18:24:40

嗨broncos15,
 
但这是否意味着vla sendcommand将适用于lisp命令定义?
我知道它可以与标准的autocad命令一起使用,正如我在LM中看到的示例:

(autoprops:sendcommand "_.properties ")

(defun autoprops:sendcommand ( com )
   (eval
       (list 'defun 'autoprops:sendcommand '( com )
         (list 'vla-sendcommand (vla-get-activedocument (vlax-get-acad-object)) 'com)
       )
   )
   (autoprops:sendcommand com)
)
但这会以同样的方式工作吗
(autoprops:sendcommand "_.test ")
 
我没有听说过延迟命令,但你知道我在问什么类型的反应堆了
(延迟运行c:test,c:test对图形执行检查)。

broncos15 发表于 2022-7-5 18:40:27

是的,你可以像那样使用它。我使用的参考是http://www.afralisp.net/archive/methods/list/sendcommand_method.htm.是的,我理解。在做其他事情之前,你想把延迟命令放在反应堆的开头。那样的话,你可以延迟任何时间,然后让反应堆做任何你想做的事情。

Grrr 发表于 2022-7-5 18:55:27

谢谢,现在我知道我的那些反应堆“想法”是可能的。
然而,我仍然很惊讶为什么这种延迟反应器如此不受欢迎(根据我在谷歌的研究)。
可能的原因是,它会不断检查事件,从而耗尽CPU。
页: [1]
查看完整版本: 关于反应堆的问题