乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 62|回复: 4

[编程交流] 关于反应堆的问题

[复制链接]

66

主题

1552

帖子

1514

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
325
发表于 2022-7-5 17:50:04 | 显示全部楼层 |阅读模式
大家好,
 
我没有发现任何类似的信息,关于反应堆的问题,让我好奇。
所以我的问题是:
 
*回拨问题:
是否可以通过reactor作为回调运行lisp命令定义?
例如,运行C:测试某个事件。
 
*事件问题:
是否可以像循环一样重新运行该命令(C:测试),例如延迟0.5秒?(我不知道结果可能是什么-可能AutoCAD会崩溃)。
但这意味着不包括任何活动?或者,如果有一个变量很重要:从“CDATE”变量的某个值中获取它。
 
*此类事件的回调示例:
-每隔15分钟从lisp这样的列表中打印提示:
 
  1. (defun-q c:test ( / lst )
  2.    (setq lst '( "[#1] Tip Number 1."
  3.          "[#2] Tip Number 2."
  4.          "[#3] Tip Number 3."
  5.          "[#4] Tip Number 4."
  6.          "[#5] Tip Number 5."
  7.          "[#6] Tip Number 6."
  8.        )
  9.    )
  10.    (setq c:test (vl-list* '( / lst ) (list 'setq 'lst (list 'quote (append (cdr lst) (list (car lst))))) (cddr c:test)))
  11.    (setq storedvalue (car lst))
  12.    (princ (strcat "\n" storedvalue " "  ))
  13.    (princ)
  14. )       

-或者lisps在图形中执行一些检查:例如,是否有需要清除的块/层,
是否进行了选择?如果是,则调用属性,如果不是,则关闭属性(Lee Mac对这一点没有反应,但我仍然对另一种方式很好奇)。
回复

使用道具 举报

95

主题

477

帖子

383

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
475
发表于 2022-7-5 18:14:34 | 显示全部楼层
如果我理解你的问题,是的,你可以为某个事件编写一个LISP例程,只需使用vla sendcommand。要将命令延迟5秒,请使用延迟命令(使用vla sendcommand),延迟量为5000。
回复

使用道具 举报

66

主题

1552

帖子

1514

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
325
发表于 2022-7-5 18:24:40 | 显示全部楼层
嗨broncos15,
 
但这是否意味着vla sendcommand将适用于lisp命令定义?
我知道它可以与标准的autocad命令一起使用,正如我在LM中看到的示例:
  1. (autoprops:sendcommand "_.properties ")
  2. (defun autoprops:sendcommand ( com )
  3.    (eval
  4.        (list 'defun 'autoprops:sendcommand '( com )
  5.            (list 'vla-sendcommand (vla-get-activedocument (vlax-get-acad-object)) 'com)
  6.        )
  7.    )
  8.    (autoprops:sendcommand com)
  9. )

但这会以同样的方式工作吗
  1. (autoprops:sendcommand "_.test ")

 
我没有听说过延迟命令,但你知道我在问什么类型的反应堆了
(延迟运行c:test,c:test对图形执行检查)。
回复

使用道具 举报

95

主题

477

帖子

383

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
475
发表于 2022-7-5 18:40:27 | 显示全部楼层
是的,你可以像那样使用它。我使用的参考是http://www.afralisp.net/archive/methods/list/sendcommand_method.htm.是的,我理解。在做其他事情之前,你想把延迟命令放在反应堆的开头。那样的话,你可以延迟任何时间,然后让反应堆做任何你想做的事情。
回复

使用道具 举报

66

主题

1552

帖子

1514

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
325
发表于 2022-7-5 18:55:27 | 显示全部楼层
谢谢,现在我知道我的那些反应堆“想法”是可能的。
然而,我仍然很惊讶为什么这种延迟反应器如此不受欢迎(根据我在谷歌的研究)。
可能的原因是,它会不断检查事件,从而耗尽CPU。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-12 23:41 , Processed in 0.618749 second(s), 62 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表