mbrandt5 发表于 2022-7-5 18:23:18

到多行文字反应器的线路距离


(vl-load-com)    ;Loads ActiveX


    ;-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------;
    ;          LINE PREDEFINED          ;
    ;                        This Function predefines a line by its object handle/ObjID         ;
    ;                     ;
    ;                     ;
    ;-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------;

(defun C:line-predefined ();Defines Predefined Line
(setq acadDocument (vla-get-activedocument (vlax-get-acad-object)))
    ; Set Equal AcadDocument to Active Document in Acad
(setq mspace (vla-get-modelspace acadDocument))
    ; Set Equal MSpace to Mspace in AcadDocument
(setq ename-line (handent "10BE")) ; Set Equal Ename-line to Entity Name Of Handle "10BE"
(setq vlaobject-line (vlax-ename->vla-object ename-line))
    ; Set Equal Vlaobject-line to VLA Object of Ename-line
(setq ename-mtext (handent "10D1")) ; Set Equal Ename-mtext to Entity Name Of Handle "10D1"
(setq vlaobject-mtext (vlax-ename->vla-object ename-mtext))
    ; Set Equal Vlaobject-mtext to VLA Object of Ename-mtext
(setq lineReactor
(vlr-object-reactor
   (list vlaobject-line)
   "Line Reactor"
   '((:vlr-modified . print-length))
)
)   ; Set Equal lineReactor to vla-object-reactor for vla-object-line that executes print-length
(princ)    ; Exit Quietly
)   ;defun




    ;-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------;
    ;          PRINT LENGTH TO MTEXT CONTENTS      ;
    ;                        This Function prints the length of a line predefined by its object handle/ObjID       ;
    ;         To the contents of a predefined Mtext Object      ;
    ;                     ;
    ;-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------;
(defun print-length (notifier-object reactor-object parameter-list)



(If
   (cond ((vlax-property-available-p vlaobject-mtext "Contents")
   (vlax-put-property
   vlaobject-mtext
   (vlax-property-available-p notifier-object "Length")
   )
)

   ((vlax-property-available-p notifier-object "Length")
    ; Checks if property "Length" of notifier-object (vlaobject-line) is avaible to edit
   (vl-string-subst "ReplaceMe" "Ben" "")
   )
   )   ;cond
)

(princ)    ; Exit Quietly
)   ;defun
(princ)   ; Exit Quietly

   

 
 
 
 
 
 
我希望有一个lisp,当修改vlaobject lines属性length时,它会将该长度作为字符串添加到vlaobject mtext的contents属性中
 
 
最后,我只想替换组成vlaobject mtext内容的文本字符串的一部分,比如用“Length”替换YYY
 
 
多行文字旧内容=3/8“x7”x YYY
 
 
Mtext新内容=3/8“x7”x“长度”
 
 
我认为我只是在打印长度函数方面有问题
 
 
附着了带有预定义对象的图形和lisp
 
 
如果有人能帮我,我将不胜感激。。。
LineMtextReactorV1。lsp
线路测试。图纸

Tharwat 发表于 2022-7-5 18:45:13

我认为现场指挥部应该帮助你,没有必要建造反应堆。

mbrandt5 发表于 2022-7-5 18:53:08

它适用于因包含字段的属性而严重减慢速度的动态块。。。。
 
 
所以我这样做是作为一个领域的替代品。。。
 
 
此外,现场需要刷新/现场更新,而反应堆则不需要这样。。。
 
 
所以在我的情况下,需要一个反应堆。很不幸lol

mbrandt5 发表于 2022-7-5 19:06:11

虽然我觉得这是一次很好的学习经历

mbrandt5 发表于 2022-7-5 19:15:42

显然,我可以在多行文字中使用字段,如果它们是对象字段的话

mbrandt5 发表于 2022-7-5 19:26:16

好的,事实上,如果有人能告诉我我做错了什么,我仍然希望看到这项工作。。。我只是想不通。。。
 
 
我希望最后必须预定义两行中较大的一行胜过另一行,然后在多行文字中表示
页: [1]
查看完整版本: 到多行文字反应器的线路距离