阅读:2382回复:1
[原创]批量处理范例
;;一个VLISP的批量处理范例
;;从这个范例可以了解VLISP如何批量处理图档 ;;虽然速度慢了点,但非常实用 ;;批量修改文字 ;; ;;虽配合Expresstools__(acetutil.arx) ;;为加速程序执行,程序将设定系统变量ACADLSPASDOC ;;即<只载入 acad.lsp 至 AutoCAD 执行期所开启的第一个图面> ;;当然程序结束后,会还原系统变量ACADLSPASDOC ;; ;;For AutoCad 2000+ (arxload "acetutil.arx" NIL) (vl-load-com) (defun CH_TXT (OLDTXT NEWTXT / HOLDECHO APP DWGNAME PREFIX_DWG NN QQ HOLDLSP WW ENT N ) (setq HOLDECHO (getvar "cmdecho")) (setvar "cmdecho" 0) (setq PREFIX_DWG (strcat (vl-string-right-trim "\\" (strcase (acet-ui-pickdir "选择目录" (vl-string-right-trim "\\" (getvar "dwgprefix")) "批量修改文字" ) ) ) "\\" ) ) (setq HOLDLSP (getvar "ACADLSPASDOC")) (setvar "acadlspasdoc" 0) (setq QQ (vl-directory-files PREFIX_DWG "*.DWG")) (setq NN 0) (if (/= QQ NIL) (progn (setq APP (vlax-get-acad-object)) (repeat (length QQ) (setq DWGNAME (strcase (strcat PREFIX_DWG (nth NN QQ)))) (setq WW (vla-open (vla-get-documents APP) DWGNAME)) (vlax-for N (vla-get-blocks WW) (vlax-for ENT N (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) ) ) ) ) (vla-save WW) (prompt (strcat "\n" DWGNAME " <修改Text完成>!!!")) (vla-close WW :vlax-false) (setq NN (1+ NN)) ) (vlax-release-object WW) (vlax-release-object APP) ) (prompt "\n所选目录中未有任何图档!!!") ) (setvar "acadlspasdoc" HOLDLSP) (setvar "cmdecho" HOLDECHO) (princ) ) (princ) |
|
|
1楼#
发布于:2003-10-10 12:56
very支持!
|
|
|