明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1539|回复: 3

使用反应器时:vlr-copied遇到的麻烦

[复制链接]
发表于 2012-11-15 14:52 | 显示全部楼层 |阅读模式
在用反应器编程的时候给一个对象添加了
  1. (vlr-object-reactor
  2.      obj-list
  3.      obj-Data
  4.      '(
  5.        (:vlr-modified . objmark-changed)
  6.        (:vlr-copied . objmark-copied)
  7.        (:vlr-erased . objmark-erased)
  8.       )
  9.    ) ;_ end of vlr-object-reactor

三个对象反应器,当obj-list碰到copy时会触发objmark-copied的函数,但是获取不到copy后得到的实体,有什么办法解决?本人主要是学习CAD帮助里面自带的教程,所以很多内容不能很好的理解,请大侠指导下。
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2012-11-15 15:23 | 显示全部楼层
本帖最后由 Gu_xl 于 2012-11-15 15:26 编辑

copy后的实体图元名保存在回调函数第三个参数里,但在回调函数里不能对该实体进行任何读写,因为反应器没结束,该实体处于保护状态!
请看测试代码:
  1. (defun c:tt()
  2.   (setq e (car(entsel)))
  3.   (if e
  4.     (progn
  5.       ;;添加反应器
  6.       (vlr-object-reactor (list (vlax-ename->vla-object e)) nil '((:vlr-copied . obj-copied)))
  7.       )
  8.     )
  9.   (princ)
  10.   )
  11. ;;回调函数
  12. (defun obj-copied (obj vlrobj vlr-list)
  13.   (if (= 'ename (type (car vlr-list)))
  14.     (progn
  15.       (princ (car vlr-list))
  16.       (if (vlax-write-enabled-p (car vlr-list))
  17. (princ "可读写")
  18. (princ "不可读写")
  19. )
  20.       ;;此处entget得到的是nil
  21.       (princ (entget (car vlr-list)))
  22.       )
  23.     )
  24.   )


 楼主| 发表于 2012-11-15 15:31 | 显示全部楼层
谢谢gu大!
是我太着急发贴了,应该多搜索下论坛,前面有帖子谈过这个问题。
下次会注意,不多耽误大伙时间。
发表于 2012-11-15 17:10 | 显示全部楼层
还不会用反应器,向你学习!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-2 15:02 , Processed in 0.387210 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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