AutoLISP反应器vlr-object-reactor函数应用

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 pa))
    (setq ptb (vlax-safearray->list pb))
    (setq long (- (car ptb) (car pta)))
    (setq line_pa (Vlax-Get line 'StartPoint))
    (Vlax-Put-Property
    line
    'EndPoint
    (Vlax-3d-Point (list (+ long (car line_pa)) (cadr line_pa)))
    )
    (princ)
)

代码完。

Vlax-3d-Point不是画线命令,从新设置endpoint点用startpoint来计算出其坐标,用vlax-put-property重新设置endpoint点,更新直线。

Vlax-Invoke-Method调用ActiveX方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值