;find扩展 by weltion chen ;全选输入all ;*匹配模糊查找 ;查找字符a,输入a ;查找字符a开头的字符串,输入a* ;查找字符a结尾的字符串,输入*a ;查找带字符a的字符串,输入*a* (defun c:finde( / ACADAPP ACADDOC FINDSTR LEFTDOWNPOINT NEWSTR RIGHTUPPOINT SELECTIONSET) ;加载Vlisp函数 (vl-load-com) (setq ;AutoCAD acadapp (vlax-get-acad-object) ;当前文档 acaddoc (vla-get-activedocument acadapp) ) (if (and ;搜索内容,匹配"*" (setq findstr (getstring "\n输入查找字符串,输入*匹配搜索: ")) ;处理范围 (ssget (list '(0 . "TEXT") (cons 1 findstr))) ) (progn ;当前选集 (setq selectionset (vla-get-activeselectionset acaddoc)) ;遍历选集 (vlax-for obj selectionset ;获取外框 (vla-getboundingbox obj 'leftdownpoint 'rightuppoint) ;锁定目标 (vla-zoomwindow acadapp leftdownpoint rightuppoint) ;扩大视图范围 (vla-zoomscaled acadapp 0.5 acZoomScaledRelative) ;修改内容 (setq newstr (getstring 0 "\n输入修改内容或<回车查找下一个>: ")) (if newstr ;替换文字内容 (vla-put-textstring obj newstr) ) ) ) ) ;静默退出 (princ) ) |