@hidxb123:更改c:测试功能以适合您的特定情况:
- (defun KGA_Conv_Collection_To_List (coll / ret)
- (reverse
- (vlax-for a coll
- (setq ret (cons a ret))
- )
- )
- )
- ; (UpdateAttribValue "Layout1" "MyBlock" "MYTAG" "New Text" nil)
- (defun UpdateAttribValue (lyt blk tag str allP / lyt)
- (setq lyt (strcase lyt))
- (setq blk (strcase blk))
- (setq tag (strcase tag))
- (if
- (or
- (= "MODEL" lyt)
- (vl-position lyt (mapcar 'strcase (layoutlist)))
- )
- ((if allP mapcar vl-some)
- '(lambda (obj)
- (if
- (and
- (= "AcDbBlockReference" (vla-get-objectname obj))
- (=
- blk
- (strcase
- ((if (vlax-property-available-p obj 'effectivename) vla-get-effectivename vla-get-name)
- obj
- )
- )
- )
- (= :vlax-true (vla-get-hasattributes obj))
- )
- (vl-some
- '(lambda (att)
- (if (= tag (strcase (vla-get-tagstring att)))
- (progn
- (vla-put-textstring att str)
- T
- )
- )
- )
- (vlax-invoke obj 'getattributes)
- )
- )
- )
- (KGA_Conv_Collection_To_List
- (vla-get-block
- (vla-item (vla-get-layouts (vla-get-activedocument (vlax-get-acad-object))) lyt)
- )
- )
- )
- )
- )
- (defun c:Test ( / doc)
- (setq doc (vla-get-activedocument (vlax-get-acad-object)))
- (vla-endundomark doc)
- (vla-startundomark doc)
- (if (UpdateAttribValue "Layout1" "MyBlock" "MYTAG" "New Text" nil)
- (princ "\nAttibute updated ")
- (princ "\nAttibute NOT updated ")
- )
- (vla-endundomark doc)
- (princ)
- )
|