jiaodahaoren 发表于 2014-8-15 19:14:08

删除图元上的所有对象反应器

;下面的函数删除图元上附加的反应器
(defun DelRecAll( OutEnt )
(setq vlrobjects (car(vlr-reactors :VLR-Object-Reactor)))
(foreach vlr
        (cdr vlrobjects)
      (vlr-owner-remove vlr (vlax-ename->vla-object OutEnt) )
)
)


outent是外部图元名
请问这个函数错在哪儿?求正解。

ZZXXQQ 发表于 2014-8-19 19:50:57

帮助中的内容;;;--------------------------------------------------------------;
;;;   函数:CleanReactors                                  ;
;;;--------------------------------------------------------------;
;;;   说明:用于清除反应器的;
;;;          通用的实用程序函数。它可以在调试时使用,
;;;          也能在关闭图形以前清除任何   ;
;;;          打开的反应器。                           ;
;;;--------------------------------------------------------------;
(defun CleanReactors ()
(mapcar 'vlr-remove-all
         '(:VLR-AcDb-reactor
         :VLR-Editor-reactor
         :VLR-Linker-reactor
         :VLR-Object-reactor
          )
)
)

jiaodahaoren 发表于 2014-8-16 15:21:10

我还在等哦。帮帮忙啦。

jiaodahaoren 发表于 2014-8-18 19:52:07

今天来看看,还是没有回复。mark

ZZXXQQ 发表于 2014-8-19 08:00:00

这样试试:
(DelRecAll (car(entsel)))

jiaodahaoren 发表于 2014-8-19 08:25:25

ZZXXQQ 发表于 2014-8-19 08:00 static/image/common/back.gif
这样试试:
(DelRecAll (car(entsel)))

首先感谢您的回复。
你引用了我的那个函数delrecall
意思是您确认这个函数没有问题吗?

jiaodahaoren 发表于 2014-8-22 07:31:42

ZZXXQQ 发表于 2014-8-19 19:50 static/image/common/back.gif
帮助中的内容

感谢回复。
我想做的不是这个。
我想删除某些图元上的反应器。
您这样做把所有的反应器都删除了。

Gu_xl 发表于 2014-8-22 10:29:42

(defun DelReactorAll (enObj)
(foreach a (vlr-reactors :VLR-Object-Reactor) ;_ 所有对象反应器
    (foreach b (cdr a) ;_ 各类反应器对象
      (vl-some (function
               (lambda (c)
                   (if (equal c enobj)
                     (vlr-remove b)
                   )
               )
             )
             (vlr-owners b) ;_ 反应器拥有者对象
      )
    )
)
)

;;测试
(DelReactorAll (vlax-ename->vla-object (car(entsel "\n选择对象:"))))

jiaodahaoren 发表于 2014-8-23 20:25:24

Gu_xl 发表于 2014-8-22 10:29 static/image/common/back.gif


感谢回复。经验证确实可以。
页: [1]
查看完整版本: 删除图元上的所有对象反应器