找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 450|回复: 5

[求助] 反应器问题

[复制链接]
发表于 2017-12-24 13:25:41 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
(defun print-radius (notifier-object reactor-object parameter-list)
  (vl-load-com)
  (cond
    (
     (vlax-property-available-p
       notifier-object
       "Radius"
     )
     (princ "The radius is ")
     (princ (vla-get-radius notifier-object))
    )
  )
)

(setq circleReactor (vlr-object-reactor (list myCircle)
         "Circle Reactor" '((:vlr-modified . print-radius))))

请问这里的parameter-list要写在哪里呀,要怎么用?求指点,谢谢。


论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 604个

财富等级: 财运亨通

发表于 2017-12-24 13:48:55 | 显示全部楼层
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-12-24 16:12:19 | 显示全部楼层
这个帖子我看过了呀,还是不理解,求指点。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 19个

财富等级: 恭喜发财

发表于 2017-12-24 16:29:12 | 显示全部楼层

你用 替换法,去替换 那个帖子里面定义的反应器函数

print-radius 这个 去替换,先让程序跑起来,通过代码去理解。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-12-24 19:38:51 | 显示全部楼层
试过了呀,parameter-list查看都是nil,不知道怎么处理。求指点。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 19个

财富等级: 恭喜发财

发表于 2017-12-24 20:19:57 | 显示全部楼层
vlr-object-reactor

构造对象反应器对象
(vlr-object-reactor owners data callbacks)
反应器对象将被添加到图形数据库,但并不是永久反应器。
参数
owners
VLA 对象的 AutoLISP 表,标识要观察的图形对象。
data
任意要与反应器对象关联的 AutoLISP 数据。如果没有数据则为 nil。
callbacks
表,其中包含下列格式的点对:
(event-name . callback_function)
在这里,event-name 是表 “Object 事件”中的符号之一,callback_function 为符号,代表事件发生时要调用的函数。每个回调函数都接受如下三个参数:
owner 应用事件的 VLA 对象的所有者。
reactor_object 调用回调函数的 VLR 对象。
list 与特定事件相关联的其他数据元素。该表针对特定事件的内容见表 “Object 事件回调数据”。
返回值
reactor_object 参数。

Object 事件
名称
事件
:vlr-cancelled

对对象的修改已经取消。

:vlr-copied

对象已被复制。

:vlr-erased

对象的删除标志已被设置。

:vlr-unerased

对象的删除标志已被重置。

:vlr-goodbye

即将从内存中删除对象。

:vlr-openedForModify

即将修改对象。

:vlr-modified

对象已被修改。如果取消修改,还将激发 :vlr-cancelled and :vlr-modifyUndone。

:vlr-subObjModified

对象的子图元已被修改。在修改多段线或网格顶点时触发该事件,块参照拥有的属性也会触发该事件。

:vlr-modifyUndone

对对象的修改已被放弃。

:vlr-modifiedXData

对象的扩展图元数据已被修改。

:vlr-unappended

已从图形数据库中拆离对象。

:vlr-reappended

对象已被重新附着到图形数据库。

:vlr-objectClosed

对对象的修改已经完成。


[td]
Object events callback data
名称
表长度
参数
:vlr-cancelled
:vlr-erased,
:vlr-unerased
:vlr-goodbye
:vlr-openedForModify
:vlr-modified
:vlr-modifyUndone
:vlr-modifiedXData
:vlr-unappended
:vlr-reappended
:vlr-objectClosed

0


:vlr-copied

1

由复制操作创建的对象 (ename)。

:vlr-subObjModified

1

已被修改的子对象 (ename)。


你看下上面的帮助,vlr-modified 的回调函数参数列表 参数是0,你不用管了




你的代码改成:

注意,你上面的代码里面的 myCircle是要监视的圆的VLA对象,你要把它改成你自己的,参数PARAM-LIST是回调固定要求的,传递参数的,需要它的时候你就用,长度多少上面表对每个事件有说明,你的vlr:modify 这个参数没值,长度是0.

  1. (defun c:tt ()
  2.   (vl-load-com)
  3.   (defun print-radius (notifier-object reactor-object parameter-list)
  4.     (cond ((vlax-property-available-p notifier-object "Radius")
  5.            (princ "The radius is ")
  6.            (princ (vla-get-radius notifier-object))
  7.           )
  8.     )
  9.   )
  10.   (if (setq myCircle (car (entsel "\n拾取圆:")))
  11.     (progn (setq circleReactor
  12.                   (vlr-object-reactor
  13.                     (list (vlax-ename->vla-object myCircle))
  14.                     "Circle Reactor"
  15.                     '((:vlr-modified . print-radius))
  16.                   )
  17.            )
  18.     )
  19.   )
  20. )


你执行上面的代码,拾取圆。 然后你修改圆的时候,半径就给你打印了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-9-23 22:41 , Processed in 0.395150 second(s), 39 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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