yanyanjun999 发表于 2013-2-3 21:30:55

求块属性与文字内容互相对应程序

用反应器做,块被修改后自动把图中块的第三个属性(注意体现第三)的值写到文字的内容中去,同样文字被修改后文字的内容自动写到图中块的第三个属性中去。


xiabin68 发表于 2013-2-3 23:32:57

只能路过,,,反应器根本就不懂,,

yanyanjun999 发表于 2013-2-7 20:19:13

自己摸索了几天,终于写出了一半,成功将文字的改变反映到了块属性里面去,见下面的代码。但是另一半遇到了困难,块属性的改变不会触发块的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]
查看完整版本: 求块属性与文字内容互相对应程序