AutoLISP反应器vlr-object-reactor函数应用,代码如下。
(defun c:tt (/ line line_handle txt txt_line txt_line_reactor)
(Setq txt (Vlax-Ename->Vla-Object (car (entsel))))
(Setq line (Vlax-Ename->Vla-Object (car (entsel))))
(setq line_handle (Vlax-Get line 'Handle))
(if (not txt_line_reactor)
(setq txt_line_reactor
(vlr-object-reactor
(list txt)
(list line_handle)
'((:vlr-modified . Txt_Line))
)
)
)
(vlr-pers txt_line_reactor)
)
(defun Txt_Line (a b c / line line_pa long pa pb pta ptb txt)
(setq txt a)
(setq line (Vlax-Invoke-Method
(Vlax-Get (Vlax-Get-Acad-Object) 'ActiveDocument)
'HandleToObject
(car (vlr-data b))
)
)
(Vlax-Invoke-Method txt 'GetBoundingBox 'pa 'pb)
(setq pta (vlax-safearray->list