brawleyman 发表于 2022-7-5 23:17:52

反应堆和第三方计划

我正在我的机器上使用HydraCAD。有一个名为“HCAD\u prettypes”的命令,它在管道的符号之间创建一条粗线,我认为这是一个。dll文件。我想在运行完一个命令后再运行一个命令。我想在后面运行的命令叫做“refreshdwg”,它可以缩放管线宽度和其他一些内容。
 
我对反应堆是个新手,真的不知道从哪里开始。这可能吗?这是我想出来的代码,但什么都没发生。
 
(vlr-command-reactor nil '((:vlr-commandEnded . endCommand)))

(defun endCommand (calling-reactor endcommandInfo / thecommandend)
(setq thecommandend endcommandInfo)
(if (= thecommandend "HCAD_PRETTYPIPES") (c:refreshdwg))
(princ)
);defun

Hippe013 发表于 2022-7-5 23:57:46

我用下面的代码来提醒自己反应堆是如何工作的。
 
(vlr-command-reactor nil '((:vlr-commandended . sayit)))

(defun sayit (d1 d2)
(alert (strcat (vl-princ-to-string d1) " : " (vl-princ-to-string d2)))
)

 
我首先看看上述代码是否触发了警报。尝试使用简单的命令行。请记住,您的“c:refreshdwg”不能包含某些代码。反应堆的帮助文件中解释了哪些代码不被接受。如果不了解更多关于代码的信息(c:refreshdwg),我无法告诉您为什么它不工作。希望这至少有一点帮助。
 
当做
 
Hippe013

BlackBox 发表于 2022-7-6 00:00:52

规则#VLR01246932:
 
在Visual LISP中,不能在Reactor的回调函数中调用命令;然而,只要所述LISP函数不包含命令调用,并且通常不提示用户输入,就可以调用LISP函数(包括以c为前缀的函数)。
 
注意-可以在中成功调用命令。NET事件处理程序,作为泛化;然而,应用程序/文档上下文必须允许调用此类命令。
 
 
 
如果您的Reactor回调函数和所需的LISP函数满足该标准,那么如果您只想对成功完成的HCAD\u prettypes命令调用作出反应,则需要考虑注册CommandEnded事件处理程序,否则还包括CommandCancelled和CommandFailed事件。
 
HTH公司

BIGAL 发表于 2022-7-6 00:18:26

可能是一个简单的两行脚本,由lisp调用作为defun
(command "script" "prettypies")
HCAD_PRETTYPIPES
(load "refreshdwg")
页: [1]
查看完整版本: 反应堆和第三方计划