求块属性与文字内容互相对应程序
用反应器做,块被修改后自动把图中块的第三个属性(注意体现第三)的值写到文字的内容中去,同样文字被修改后文字的内容自动写到图中块的第三个属性中去。只能路过,,,反应器根本就不懂,, 自己摸索了几天,终于写出了一半,成功将文字的改变反映到了块属性里面去,见下面的代码。但是另一半遇到了困难,块属性的改变不会触发块的vlr-modified反应器,而用vlr-subobjmodified又提示antomation对象已经被打开,就是说修改块属性的时候不能读取块属性,希望有vlisp高手完成另一半。
(vl-load-com)
(defun c:FG (/)
(setq BlkObject (vlax-ename->vla-object
(car (entsel "\nplz choose a block"))
)
) ;得块对象
(setq TxtObject (vlax-ename->vla-object
(car (entsel "\nplz choose a text"))
)
) ;得文字对象
(if TxtObject
(setq TxtReactor
(vlr-object-reactor
(list TxtObject)
(list BlkObject)
'((:vlr-modified . Text-CHANG))
)
)
)
(vlr-pers TxtReactor)
)
;;;==============================================================
;;文字改变时的回调函数 反映到块属性中去
(defun Text-CHANG (OBJ REACTOR-OBJECT PARAMETER-LIST)
(setq AA (vla-get-textstring OBJ))
(setq BB (car (VLR-DATA REACTOR-OBJECT))) ;BB就是块的object
(setq CC (nth 2
(vlax-safearray->list
(vlax-variant-value (vla-GetAttributes BB))
)
)
)
(vla-put-TextString CC AA)
)
页:
[1]