- (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
线路测试。图纸 |