• 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
    文章千古事,得失寸心知。


  • 相关阅读:
    A1151 LCA in a Binary Tree (30分)
    A1150 Travelling Salesman Problem (25分)
    A1069 The Black Hole of Numbers (20分)
    A1149 Dangerous Goods Packaging (25分)
    A1148 Werewolf
    A1147 Heaps (30分)
    Ubuntu下git,gitlab团队协作
    如何查看JDK_API 2019.2.23
    linux_day1 (腾老师)2019年3月25日18:11:43(CentOs)
    jpa_缓存
  • 原文地址:https://www.cnblogs.com/bimgoo/p/2503084.html
Copyright © 2020-2023  润新知