在我的代码库中找到了这一个旧的lisp,请在您的一端尝试,
更改旧文本值和新文本值,根据您的套装屏蔽名称
- (vl-load-com)
- (defun c:RTO (/ ablocks acapp adoc blkdef blklist blkobj en i newtext oldtext sset)
- (setq acapp (vlax-get-acad-object)
- adoc (vla-get-activedocument acapp)
- ablocks (vla-get-blocks adoc))
-
-
- (setq oldtext "ahha" newtext "new text");change to suit
- (if (setq sset (ssget "_X" (list (cons 0 "INSERT")(cons 66 1)(cons 2 "`*U*,DynBlock"))));DynBlock is name for your interest
- (progn
- (setq i (sslength sset))
- (while (setq en (ssname sset (setq i (1- i))))
- (setq blkobj (vlax-ename->vla-object en))
- (if (not (member "DynBlock" blklist)); use DynBlock only
- (setq blklist (cons (vla-get-effectivename blkobj) blklist)))
- (ssdel en sset))
- (repeat (length blklist)
- (if (not (vl-catch-all-error-p
- (setq blkdef (vl-catch-all-apply 'vla-item (list ablocks (nth 0 blklist))))))
- (progn
- (vlax-for a blkdef
- (if (eq "ACDBTEXT" (strcase (vla-get-objectname a)))
- (if (eq oldtext (vla-get-textstring a))
- (vla-put-textstring a newtext)))
- (if (eq "ACDBMTEXT" (strcase (vla-get-objectname a)))
- (if (eq oldtext (vla-get-textstring a))
- (vla-put-textstring a newtext))))
- ))
- (setq blklist (cdr blklist)))
- (command "_attsync" "_N" "*")
- (command "_regenall")
- )
- )
- (princ)
- )
|