监控块属性的修改并联动执行其他操作
本帖最后由 s1os5210 于 2024-3-8 23:58 编辑想实现的功能是,监控某个属性值变化,比如属性块A中的a值被修改,执行一个函数。b值被修改,执行另外一个函数。所有块中无论哪个a值都执行的是同一个函数。
找到一个反应器。一葫芦画瓢,写成了一个,但感觉有点不伦不类的。
(vlr-command-reactor
nil
(list
(cons :vlr-commandEnded (function ab))
)
)
(defun ab (a b / )
(setq EATT b)
(if (= EATT "EATTEDIT")(def))
)
监控所有的命令,判断命令是否是EATTEDIT,若果是执行函数def.
但是这会对所有的命令监控,每个命令运行一遍是否耗费资源呢?另外这里只是监控了命令。无法确定,里面的值是否被修改。
查到一个:vlr-subObjModified事件能够监控属性的变化。但是我是个新手,反应器不会用,研究了半天也不知道咋用。请大神指点一下。
不推荐用反应器,都是要编程,不如直接编个命令,执行后遍历图块找到属性,再根据属性值执行需要的函数。相当于手动更新一下,比反应器稳定靠谱的多。 如果非要说反应器有什么经验要分享,那就是每个反应器都应该加入一个flag进行终止功能,只有这样才能把反应器纳入"功能"内部,而不是每次都去改同一个全局函数. 我也覺得既然要修改A.會連動到B.那就寫個LSP 直接改AB就行了. 比方工作中改零件材料表中的材料名稱. 材料硬度欄或供應商.會一起修改.這類的功能就寫個專門的命令去處理~ kozmosovia 发表于 2024-3-9 09:32
不推荐用反应器,都是要编程,不如直接编个命令,执行后遍历图块找到属性,再根据属性值执行需要的函数。相 ...
总有这种抖机灵的,回答不了问题就让人改需求 比不上抖屎的。 谢谢诸位,自己搞定了
页:
[1]