spring 发表于 2004-9-15 08:05:00

这样就在选择时只选择有包含要找的文字了,可是后面的程序也不会精减啊


哪位大侠再把程序代码精减一下,如何

龙龙仔 发表于 2004-9-16 12:38:00

;;替换所有文字(注意大小写有别)<BR>;;&lt;CH_TXT NEWTXT OLDTXT&gt;<BR>;;&lt;CH_TXT "LUCAS" "龙龙仔"&gt;<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-&gt;list ATT)<BR>                                       (DO_IT2 ENT1)<BR>                       )<BR>       )<BR>       (if (safearray-value CATT)<BR>                       (foreach ENT1 (vlax-safearray-&gt;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>)

行天下 发表于 2022-9-28 08:58:23

日常灌水,到此一看
页: 1 [2]
查看完整版本: [讨论]剛剛寫的一個查找和替換程序