明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1806|回复: 6

属性块的反应器问题,求指点

[复制链接]
发表于 2015-10-30 14:54:51 | 显示全部楼层 |阅读模式
本帖最后由 菜卷鱼 于 2022-9-12 10:20 编辑

想做一个块属性反应器,本来是想用在动态块上,通过更改块的文字属性引发动态属性的改变
但是一用到  vla-getattributes 就报错了,所以后面的东西就整不下去了,
报错内容是;错误:Automation 错误。 对象已打开进行通知;
求指点啊!

  1. (defun c:ff ( )
  2. (setq ss(ssget '((0 . "INSERT"))))
  3. (setq blkReactor (vlr-object-reactor (mapcar 'vlax-ename->vla-object (sslist ss))
  4.          "getattributes" '((:vlr-subObjModified . b_drive))))
  5. (prin1)
  6. )

  7. (defun b_drive (v r e )
  8. (setq a v)
  9. (setq        attlist        (vlax-safearray->list
  10.                   (vlax-variant-value (vla-getattributes a))))       ;;;;;;;;;;;;到这来就报错了
  11. (foreach att        attlist
  12.     (setq att_txt (vla-get-textstring att))
  13.     (setq tag_text (vla-get-TagString att))
  14.     (setq stag (cons tag_text att_txt))
  15.     (setq attxtlist (cons stag attxtlist))
  16.     (reverse attxtlist)
  17.     )
  18. )

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2015-10-30 20:35:57 | 显示全部楼层
你这样设计的逻辑应该有问题,因为修改属性本身就是会触发:vlr-subObjModified事件,所以程序是进行不下去的。

建议你尝试把反应器直接绑定到属性本身上,同时尽量不要链接块的:vlr-subObjModified,试试直接连接到动态控制参数本身上。
 楼主| 发表于 2015-10-31 08:21:32 | 显示全部楼层
mmmmmm 发表于 2015-10-30 20:35
你这样设计的逻辑应该有问题,因为修改属性本身就是会触发:vlr-subObjModified事件,所以程序是进行不下去的 ...

ok,谢谢指导。
发表于 2022-7-28 17:29:21 | 显示全部楼层
请问这个解决了么?
 楼主| 发表于 2022-7-28 17:43:41 | 显示全部楼层
guankuiwu 发表于 2022-7-28 17:29
请问这个解决了么?

这个问题这么多年了。。。
没有直接解决,因为之前是 文字属性与动态属性相互驱动,所以矛盾了,会报错,所以方向错了
后来我改成了属性文字单向驱动动态属性,成功用了一段时间
最后发现没必要,直接做一个对话框,抓取动态属性值,在对话框里改动态属性就行
发表于 2022-7-28 18:18:25 | 显示全部楼层
那这样把属性修改做成反应器了
发表于 2022-7-30 17:21:57 | 显示全部楼层
菜卷鱼 发表于 2022-7-28 17:43
这个问题这么多年了。。。
没有直接解决,因为之前是 文字属性与动态属性相互驱动,所以矛盾了,会报错 ...

厉害。思路不错!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-6 00:25 , Processed in 0.185792 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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