明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
12
返回列表 发新帖
楼主: BDYCAD

[讨论]剛剛寫的一個查找和替換程序

  [复制链接]
发表于 2004-9-15 08:05:00 | 显示全部楼层
这样就在选择时只选择有包含要找的文字了,可是后面的程序也不会精减啊


哪位大侠再把程序代码精减一下,如何
发表于 2004-9-16 12:38:00 | 显示全部楼层
;;替换所有文字(注意大小写有别)
;;<CH_TXT NEWTXT OLDTXT>
;;<CH_TXT "LUCAS" "龙龙仔">
;;由於它是偏歷全图可能有点慢(修改一下可用在objectdbx----未试)
(defun DO_IT1 (OBJ / ATT CATT ENT1)
(setq ATT (vlax-variant-value (vla-getattributes OBJ))
CATT (vlax-variant-value
(vla-getconstantattributes OBJ)
)
)
(if (safearray-value ATT)
(foreach ENT1 (vlax-safearray->list ATT)
(DO_IT2 ENT1)
)
)
(if (safearray-value CATT)
(foreach ENT1 (vlax-safearray->list CATT)
(DO_IT2 ENT1)
)
)
) (defun DO_IT2 (ENT / TEXTSTRING STR)
(if (and (vlax-property-available-p ENT 'TEXTSTRING)
(wcmatch (setq STR (vla-get-textstring ENT))
(strcat "*" OLDTXT "*")
)
)
(progn
(setq STR (vl-string-subst NEWTXT OLDTXT STR))
(vla-put-textstring ENT STR)
)
)
) (defun CH_TXT (NEWTXT OLDTXT / APP DOC N ENT STR OBJ_NAME)
(vl-load-com)
(setq APP (vlax-get-acad-object))
(setq DOC (vla-get-activedocument APP))
(vlax-for N (vla-get-blocks DOC)
(vlax-for ENT N
(cond
((and (= (setq OBJ_NAME (vla-get-objectname ENT))
"AcDbBlockReference"
)
(= (vl-catch-all-apply 'vla-get-hasattributes (list ENT))
:vlax-true
)
)
(DO_IT1 ENT)
)
((= OBJ_NAME "AcDbAttributeDefinition")
(if (wcmatch (setq STR (vla-get-tagstring ENT))
(strcat "*" OLDTXT "*")
)
(progn
(setq STR (vl-string-subst NEWTXT OLDTXT STR))
(vla-put-tagstring ENT STR)
)
)
)
(t
(DO_IT2 ENT)
)
)
)
)
(vla-regen DOC acallviewports)
(vlax-release-object DOC)
(vlax-release-object APP)
(princ)
)
发表于 2022-9-28 08:58:23 | 显示全部楼层
日常灌水,到此一看
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-2-22 02:24 , Processed in 0.285186 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表