明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1719|回复: 3

[求助]获取对象上附着的反应器

[复制链接]
发表于 2007-9-24 11:43 | 显示全部楼层 |阅读模式
请教:根据对象名,如何获得与之关联的反应器对象?
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2007-9-24 12:38 | 显示全部楼层
发表于 2007-9-26 08:02 | 显示全部楼层

;|Reply From: Esquivel, Luis
Date: May/05/03 - 06:54 (GMT)
  
    Re: Reactor
kevin bell,

>Is it possible to quiry an object to find out what reactors are attached to
it ???

Here are two functions that will help you:
|;
;; will return T if an object has reactor attached
(defun HAS-REACTOR? (OBJ)
  (vl-some
    (function (lambda (X) (numberp X)))
    (mapcar (function (lambda (R) (vl-position OBJ (vlr-owners R))))
     (cdar (vlr-reactors :vlr-object-reactor))
    )
  )
)

;; this will return a list of reactors attached to the object of the type: :vlr-object-reactor
(defun WHAT-REACTOR? (OBJ)
  (vl-remove-if-not
    (function (lambda (R)
  (if (vl-position OBJ (vlr-owners R))
    R
  )
       )
    )
    (cdar (vlr-reactors :vlr-object-reactor))
  )
)

;;And here is another one to query to any type of reactor:

;; (attached-to obj)
;; return a list with the list of reactors or nil
(defun ATTACHED-TO (OBJ)
  (vl-remove
    NIL
    (mapcar
      (function
 (lambda (REACTOR-TYPE)
   (vl-remove-if-not
     (function
       (lambda (R)
  (cond ((and (equal REACTOR-TYPE :vlr-object-reactor)
       (vl-position OBJ (vlr-owners R))
         )
         R
        )
        ((and (not (equal REACTOR-TYPE
     :vlr-object-reactor
     )
       )
       (vl-position OBJ (vlr-data R))
         )
         R
        )
  )
       )
     )
     (cdar (vlr-reactors REACTOR-TYPE))
   )
 )
      )
      (vlr-types)
    )
  )
)

 楼主| 发表于 2007-9-26 10:55 | 显示全部楼层
感谢楼上的代码。
我采用的方法是:为了防止连续反应,在回调函数中先判断一个全局变量的值,若存在就不做反应。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-18 04:31 , Processed in 0.186171 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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