gengzi1999
路人甲
路人甲
  • 注册日期2003-09-10
  • 发帖数238
  • QQ
  • 铜币956枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:2231回复:1

[原创]批量处理范例

楼主#
更多 发布于:2003-10-10 11:21
;;一个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)

喜欢0 评分0
我是农民,我怕谁!
gis
gis
管理员
管理员
  • 注册日期2003-07-16
  • 发帖数15945
  • QQ554730525
  • 铜币25337枚
  • 威望15352点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
  • 帝国沙发管家
  • GIS帝国明星
  • GIS帝国铁杆
1楼#
发布于:2003-10-10 12:56
very支持!
举报 回复(0) 喜欢(0)     评分
游客

返回顶部