哪位大侠再把程序代码精减一下,如何 ;;替换所有文字(注意大小写有别)<BR>;;<CH_TXT NEWTXT OLDTXT><BR>;;<CH_TXT "LUCAS" "龙龙仔"><BR>;;由於它是偏歷全图可能有点慢(修改一下可用在objectdbx----未试)<BR>(defun DO_IT1 (OBJ / ATT CATT ENT1)<BR> (setq ATT (vlax-variant-value (vla-getattributes OBJ))<BR> CATT (vlax-variant-value<BR> (vla-getconstantattributes OBJ)<BR> )<BR> )<BR> (if (safearray-value ATT)<BR> (foreach ENT1 (vlax-safearray->list ATT)<BR> (DO_IT2 ENT1)<BR> )<BR> )<BR> (if (safearray-value CATT)<BR> (foreach ENT1 (vlax-safearray->list CATT)<BR> (DO_IT2 ENT1)<BR> )<BR> )<BR>)
(defun DO_IT2 (ENT / TEXTSTRING STR)<BR> (if (and (vlax-property-available-p ENT 'TEXTSTRING)<BR> (wcmatch (setq STR (vla-get-textstring ENT))<BR> (strcat "*" OLDTXT "*")<BR> )<BR> )<BR> (progn<BR> (setq STR (vl-string-subst NEWTXT OLDTXT STR))<BR> (vla-put-textstring ENT STR)<BR> )<BR> )<BR>)
(defun CH_TXT (NEWTXT OLDTXT / APP DOC N ENT STR OBJ_NAME)<BR> (vl-load-com)<BR> (setq APP (vlax-get-acad-object))<BR> (setq DOC (vla-get-activedocument APP))<BR> (vlax-for N (vla-get-blocks DOC)<BR> (vlax-for ENT N<BR> (cond<BR> ((and (= (setq OBJ_NAME (vla-get-objectname ENT))<BR> "AcDbBlockReference"<BR> )<BR> (= (vl-catch-all-apply 'vla-get-hasattributes (list ENT))<BR> :vlax-true<BR> )<BR> )<BR> (DO_IT1 ENT)<BR> )<BR> ((= OBJ_NAME "AcDbAttributeDefinition")<BR> (if (wcmatch (setq STR (vla-get-tagstring ENT))<BR> (strcat "*" OLDTXT "*")<BR> )<BR> (progn<BR> (setq STR (vl-string-subst NEWTXT OLDTXT STR))<BR> (vla-put-tagstring ENT STR)<BR> )<BR> )<BR> )<BR> (t<BR> (DO_IT2 ENT)<BR> )<BR> )<BR> )<BR> )<BR> (vla-regen DOC acallviewports)<BR> (vlax-release-object DOC)<BR> (vlax-release-object APP)<BR> (princ)<BR>) 日常灌水,到此一看
页:
1
[2]