s1os5210 发表于 2024-3-8 23:55:17

监控块属性的修改并联动执行其他操作

本帖最后由 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事件能够监控属性的变化。但是我是个新手,反应器不会用,研究了半天也不知道咋用。请大神指点一下。


kozmosovia 发表于 2024-3-9 09:32:44

不推荐用反应器,都是要编程,不如直接编个命令,执行后遍历图块找到属性,再根据属性值执行需要的函数。相当于手动更新一下,比反应器稳定靠谱的多。

你有种再说一遍 发表于 2024-3-9 19:35:27

如果非要说反应器有什么经验要分享,那就是每个反应器都应该加入一个flag进行终止功能,只有这样才能把反应器纳入"功能"内部,而不是每次都去改同一个全局函数.

shenhung 发表于 2024-3-9 20:00:21

我也覺得既然要修改A.會連動到B.那就寫個LSP 直接改AB就行了.   比方工作中改零件材料表中的材料名稱. 材料硬度欄或供應商.會一起修改.這類的功能就寫個專門的命令去處理~

d1742647821 发表于 2024-3-12 14:08:56

kozmosovia 发表于 2024-3-9 09:32
不推荐用反应器,都是要编程,不如直接编个命令,执行后遍历图块找到属性,再根据属性值执行需要的函数。相 ...

总有这种抖机灵的,回答不了问题就让人改需求

kozmosovia 发表于 2024-3-13 20:06:43

比不上抖屎的。

s1os5210 发表于 2024-3-13 23:06:12

谢谢诸位,自己搞定了
页: [1]
查看完整版本: 监控块属性的修改并联动执行其他操作