使用反应器时:vlr-copied遇到的麻烦
在用反应器编程的时候给一个对象添加了(vlr-object-reactor
obj-list
obj-Data
'(
(:vlr-modified . objmark-changed)
(:vlr-copied . objmark-copied)
(:vlr-erased . objmark-erased)
)
) ;_ end of vlr-object-reactor
三个对象反应器,当obj-list碰到copy时会触发objmark-copied的函数,但是获取不到copy后得到的实体,有什么办法解决?本人主要是学习CAD帮助里面自带的教程,所以很多内容不能很好的理解,请大侠指导下。
本帖最后由 Gu_xl 于 2012-11-15 15:26 编辑
copy后的实体图元名保存在回调函数第三个参数里,但在回调函数里不能对该实体进行任何读写,因为反应器没结束,该实体处于保护状态!
请看测试代码:
(defun c:tt()
(setq e (car(entsel)))
(if e
(progn
;;添加反应器
(vlr-object-reactor (list (vlax-ename->vla-object e)) nil '((:vlr-copied . obj-copied)))
)
)
(princ)
)
;;回调函数
(defun obj-copied (obj vlrobj vlr-list)
(if (= 'ename (type (car vlr-list)))
(progn
(princ (car vlr-list))
(if (vlax-write-enabled-p (car vlr-list))
(princ "可读写")
(princ "不可读写")
)
;;此处entget得到的是nil
(princ (entget (car vlr-list)))
)
)
)
谢谢gu大!
是我太着急发贴了,应该多搜索下论坛,前面有帖子谈过这个问题。
下次会注意,不多耽误大伙时间。 还不会用反应器,向你学习!
页:
[1]