到多行文字反应器的线路距离
(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
线路测试。图纸 我认为现场指挥部应该帮助你,没有必要建造反应堆。 它适用于因包含字段的属性而严重减慢速度的动态块。。。。
所以我这样做是作为一个领域的替代品。。。
此外,现场需要刷新/现场更新,而反应堆则不需要这样。。。
所以在我的情况下,需要一个反应堆。很不幸lol 虽然我觉得这是一次很好的学习经历 显然,我可以在多行文字中使用字段,如果它们是对象字段的话 好的,事实上,如果有人能告诉我我做错了什么,我仍然希望看到这项工作。。。我只是想不通。。。
我希望最后必须预定义两行中较大的一行胜过另一行,然后在多行文字中表示
页:
[1]