Grrr 发表于 2022-7-5 17:52:53

反应堆特性

你好
我试图创建一个属性反应器:
如果存在选定对象,则调用“属性”命令,
如果没有选择任何对象,则调用propertieclose命令。
它的工作方式应该与quickproperties在选择时显示的方式相同。
 
我知道如何使用纯lisp执行此操作:
(defun checkselection ()
(if (ssget "_I")
(command "_.properties")
(command "_.propertiesclose")
)
);defun
 
但是我没有反应堆方面的经验,我不知道使用什么事件名称,回调函数应该是什么。
这是我的原始开始:
;*********************************************************************
(vlr-command-reactor

"TurnPropertiesOnSelection" '((:vlr-XXXX . XXXXXX ))) ; what event-name to use and what should be the callback function?
;*********************************************************************
(vl-load-com)

(defun checkselection () ; data
(if (ssget "_I")
(...)
)
);defun

(defun doProperties () ; callback
(command "_.properties")
);defun

(defun undoProperties () ; callback
(command "_.propertiesclose")
);defun
据我所知,它应该检查是否有调用属性的选择
如果没有选择调用propertiesclose。
但这是否意味着要建造两座反应堆?

Lee Mac 发表于 2022-7-5 18:01:32

这是此类反应堆的基本形式,类型为“autopropson”和“autopropsoff”,分别用于启用和禁用反应堆:
请注意,您不能从反应堆回调函数中调用命令调用,因此需要使用sendcommand方法进行处理后评估。
 
请注意,反应堆通常被视为Visual LISP的高级领域,因此支持代码需要防水,考虑到每一种可能的情况,以确保不间断运行。因此,我建议您在编写程序之前学习各种可用的教程和资源,以便更好地理解反应堆的“规则”。

Grrr 发表于 2022-7-5 18:10:58

嗨,李,
 
我记得有人问过这个问题,所以在反应堆内调用命令的全局答案是:
(autoprops:sendcommand "_.commandname ")
我很高兴得到这个答案!
 
 
我明白了,正如你提到的“Visual LISP的高级领域”一样,reactor似乎是最难学习的,但在某些情况下,它们是最容易使用的方法(正如我在许多示例中看到的,您的LayerDirector例程和其他一些隐藏/锁定对象例程)。
 
 
公平地说,我查看了afralisp的反应堆教程,但我找不到执行此尝试的示例,这就引出了我的问题:
您在哪里找到/阅读了这些功能:
4
通常,为了寻找一些VL VLA函数,我在AutoCAD的ActiveX参考中进行了检查,但我在任何地方都没有找到任何“VLR”(只有afralisp中的几个示例)。
 
 
我仍然在思考你的评论这一部分,因为我习惯了用ESC键退出每个命令的坏习惯来修改和学习示例-正如你所说,这与反应堆无关。

Lee Mac 发表于 2022-7-5 18:14:27

反应堆函数(vlr-*)在标准开发人员文档中有很好的文档记录——如果你在谷歌上搜索我在上面发布的代码中使用的任何函数,你应该从标准文档中找到描述每个函数的用途和格式的参考,并给出示例。

Grrr 发表于 2022-7-5 18:20:43

只是在谷歌上找到了“反应堆函数参考”。
https://knowledge.autodesk.com/search-result/caas/CloudHelp/cloudhelp/2016/ENU/AutoCAD-AutoLISP/files/GUID-B83B512E-CEF6-43C5-9099-398999E254AF-htm.html
李,谢谢你的时间和努力!

Tharwat 发表于 2022-7-5 18:30:18

 
AutoLISP函数中已经存在相关的开始字符。酒店雇员和饭馆雇员

Grrr 发表于 2022-7-5 18:36:32

我没有想到ACAD的帮助文件中会有AutoLISP函数!
立即下载脱机帮助。
谢谢,塔瓦!

Tharwat 发表于 2022-7-5 18:42:20

不客气。
 
你的帖子鼓励我搜索解决方案,唯一阻碍我的是如何找出是否已经选择了对象,所以我搜索了系统变量以寻找一匹马,但我空手而出,直到李一如既往地用答案让我们惊讶,老实说,我以前不知道ssgetfirst函数。
 
干得好,李。

Grrr 发表于 2022-7-5 18:49:15

有时我觉得他的母语是LISP,他的第二语言是英国英语。
很高兴听到你向他学习。

Lee Mac 发表于 2022-7-5 18:53:55

谢谢你们俩
页: [1]
查看完整版本: 反应堆特性