zoukankan      html  css  js  c++  java
  • AutoLISP反应器vlrobjectreactor函数应用

    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方法。

    作者:codee
    文章千古事,得失寸心知。


  • 相关阅读:
    关于树及其各种操作
    正交矩阵与齐次矩阵
    矩阵的行列式与矩阵的逆
    线性变换
    矩阵
    向量的运算
    求两直线的交点
    微任务防抖
    二项分布
    二项式定理
  • 原文地址:https://www.cnblogs.com/bimgoo/p/2503084.html
Copyright © 2011-2022 走看看