明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 891|回复: 6

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

[复制链接]
发表于 2024-3-8 23:55:17 | 显示全部楼层 |阅读模式
本帖最后由 s1os5210 于 2024-3-8 23:58 编辑

想实现的功能是,监控某个属性值变化,比如属性块A中的a值被修改,执行一个函数。b值被修改,执行另外一个函数。所有块中无论哪个a值都执行的是同一个函数。

找到一个反应器。一葫芦画瓢,写成了一个,但感觉有点不伦不类的。
  1. (vlr-command-reactor
  2.            nil
  3.            (list
  4.        (cons :vlr-commandEnded (function ab))
  5.            )
  6.          )
  7. (defun ab (a b / )
  8.   (setq EATT b)
  9. (if (= EATT "EATTEDIT")(def))
  10. )

监控所有的命令,判断命令是否是EATTEDIT,若果是执行函数def.
但是这会对所有的命令监控,每个命令运行一遍是否耗费资源呢?另外这里只是监控了命令。无法确定,里面的值是否被修改。
查到一个:vlr-subObjModified事件能够监控属性的变化。但是我是个新手,反应器不会用,研究了半天也不知道咋用。请大神指点一下。


发表于 2024-3-9 09:32:44 | 显示全部楼层
不推荐用反应器,都是要编程,不如直接编个命令,执行后遍历图块找到属性,再根据属性值执行需要的函数。相当于手动更新一下,比反应器稳定靠谱的多。
发表于 2024-3-9 19:35:27 | 显示全部楼层
如果非要说反应器有什么经验要分享,那就是每个反应器都应该加入一个flag进行终止功能,只有这样才能把反应器纳入"功能"内部,而不是每次都去改同一个全局函数.
发表于 2024-3-9 20:00:21 | 显示全部楼层
我也覺得既然要修改A.會連動到B.那就寫個LSP 直接改AB就行了.   比方工作中改零件材料表中的材料名稱. 材料硬度欄或供應商.會一起修改.這類的功能就寫個專門的命令去處理~
发表于 2024-3-12 14:08:56 | 显示全部楼层
kozmosovia 发表于 2024-3-9 09:32
不推荐用反应器,都是要编程,不如直接编个命令,执行后遍历图块找到属性,再根据属性值执行需要的函数。相 ...

总有这种抖机灵的,回答不了问题就让人改需求
发表于 2024-3-13 20:06:43 | 显示全部楼层
比不上抖屎的。
 楼主| 发表于 2024-3-13 23:06:12 | 显示全部楼层
谢谢诸位,自己搞定了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-25 22:41 , Processed in 0.237968 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表