巧用excel编写脚本实现对AutoCAD文档的批量处理

来源:期刊VIP网所属分类:软件开发发布时间:2012-09-27浏览:

  摘要:在使用AutoCAD的过程中,我们经常需要处理成百上千的dwg文档,通常我们会选择编程来解决,但是这个对大多数人来说都有些难度。这篇文章则是提供了另一种方法来实现,script脚本。本文详细介绍了AutoCAD中,脚本文件的原理,实现过程,并结合两个实例实现了对单文档和多文档的批量处理。

  关键词:AutoCAD脚本;批量处理;脚本编写;excel编辑

  Abstract: in the process of using AutoCAD, we often need to deal with hundreds of thousands of DWG document, generally we choose programming to solve, but this for most people have some difficulty. This article is to provide a method to realize, script scripts. This paper introduces the AutoCAD, script file of principle, process, and combined with two examples of single document and realized how document batch processing.

  Keywords: AutoCAD script; Batch processing; Script writing; Excel editor

  中图分类号:G306.4 文献标识码:A 文章编号:

  0.引言

  尽管差不多每年AutoDesk公司都会推出全新版本的AutoCAD,但是有一个东西始终没变,就是它强大的可扩展性。我们也认为这是它最值得称道的特性之一,如命令行用户接口,lisp脚本,或者VBA和.NET应用程序。所有这些特性的提供都只为一个目的,就是用户定制。但是lisp和.net应用程序开发对于大多数AutoCAD程序来说都不是一天两天能学会的。

  不过幸运的是,我们还有一种简单的人人都能理解和掌握的方法让批量自动处理CAD文档成为可能,那就是Script脚本。可能好多人还是觉得陌生,但是实际上,我们从用上AutoCAD的那天起我们就已经在编写Script脚本了。这怎么可能呢?有人会问。其实 AutoCAD脚本文件就是一系列标准CAD命令的有序组合。你知道怎么使用在AutoCAD中敲命令,你就一定会写脚本。

  1.脚本简介

  脚本就是一个宏,或者说是你可以一次运行的一组命令,而且可以重复运行多次,让你可以自动执行那些你手动需要很长时间才能完成的任务。脚本非常强大,你可以在单个文件中执行,也可以对多个文件执行。脚本出现很多年了但是却有好多人没意识到它的便利性。

  创建脚本文件的步骤如下:

  1. 设置FILEDIA系统变量为0,组织从打开对话框访问文件

  2. 然后执行你想自动执行的步骤,但是只能从命令行输入。把步骤写在纸上或者电脑中的记事本程序里。你可以直接拷贝命令行到记事本。在AutoCAD中按F2可以打开文本框。

  3. 在每个命令行后面敲回车,或者空格键(相当于回车)。所以在脚本文件里,空格非常重要,你必须保证正确使用。为了保证脚本文件的可读性,你可以每行只放置一条命令。

  4. 把包含空格的层名、文件名、文件路径放到引号里

  5. 不时插入一些注释以便于日后阅读修改,注释格式为文本前加引号

  6. 保存文件扩展名为.scr

  7. 重新设置FILEDIA系统变量为1

  2.单文档脚本的实现

  下面我们就试着写这样一个脚本文件:创建一个叫ABC的图层,把层颜色设置成红色,并把该层置为当前。

  在众多的CAD命令中,LAYER是同时有对话框版本和命令行版本的命令之一,通常CAD会执行命令的对话框版本。虽然便于操作,但是SCRIPT脚本却并不能和对话框交互。所以,我们就必须明确地告诉CAD执行命令的命令行版本。通常我们只需要在命令前面加上一个小横杠(-)。相应的,我们键入-LAYER,而不是LAYER,返回如下提示

  输入选项

  [?/生成(M)/设置(S)/新建(N)/重命名(R)/开(ON)/关(OFF)/颜色(C)/线型(L)/线宽(LW)/透明度(TR)/材质(MAT)/打印(P

  )/冻结(F)/解冻(T)/锁定(LO)/解锁(U)/状态(A)/说明(D)/协调(E)]:

  如果我们想改变颜色,我们就键入C,想设置材质键入MAT,当然我们也可以键入全称colar和materiel。

  那么我们要新建一个名叫ABC的图层,自然就输入N了

  然后出现提示:"输入新图层的名称列表:",输入“ABC”

  然后根据提示输入“C”

  提示新颜色 [真彩色(T)/配色系统(CO)],我们输入“yellow”,

  提示输入图层名列表,这些图层使用颜色 2 (黄) <0>,我们输入“ABC”

  最后输入两个空格,结束命令。

  把这一组命令依次记下来,我们就得到一个脚本文件,如下

  Script Description

  -LAYER LAYER 命令的命令行形式

  N 新建图层(new)

  ABC 新图层名

  C 设置颜色(color)

  Yellow 黄色(也可以输入2)

  ABC 想设置黄色的图层名

  空格,代表回车

  空格,代表回车

  把左边这列命令拷贝下来,打开记事本粘贴,然后另存为abc.scr(注意扩展名),我们也可以写成一行,即:

  -layer n ABC C yellow ABC

  脚本文件写好了,我们如何让运行它呢.AutoCAD里面有两种方式运行:

  1、 在命令行输入Script,或者简写的SCR

  2、 在菜单中选择工具>运行脚本

  这两种方式都会弹出一个选择脚本文件的对话框,选择脚本文件即可运行。

  我们新建一个dwg文档,然后执行刚才我们创建的abc.scr文件,就会发现得到的结果和我们在CAD中输入一条条命令得到的结果一样。

  3.多文档脚本的实现

  显然这时我们只是对一个单独的文档进行了处理,CAD脚本的威力并没有发挥出来,脚本的强大之处在于它可以对CAD文档进行批量处理。假设我有100个dwg文件,存放在G:\abc目录下,我们要对它们执行清理操作,以减小文档体积。最原始的方法就是一个个打开文档,在命令行执行如下步骤(这里我用的是常规清理):

  1、打开文档open

  2、输入要打开的图形文件名 : 1.dwg

  3、命令: -PURGE

  4、输入要清理的未使用对象的类型

  [块(B)/标注样式(D)/组(G)/图层(LA)/线型(LT)/材质(MA)/多重引线样式(MU)/打印样式(P)/形(SH)/文字样式(ST)/多线样式(M)/表格样式(T)/视觉样式(V)/注册应用程序(R)/零长度几何图形(Z)/空文字对象(E)/全部(A)]: a

  5、输入要清理的名称 <*>: *

  6、是否确认每个要清理的名称?[是(Y)/否(N)] : n

  7、保存文件命令: qsave

  8、关闭文档命令: close

  9、打开下一个文档,重复上面的步骤,直至100个文档处理完毕。

  显然,这样费时又费力,要批量处理文档,我们首先需要获得这些文档的文件名列表,当然我们不可能一个个自己把文件名敲出来,这显然和我们快速处理的宗旨相违背。其实我们只需要在从windows开始菜单中运行CMD命令,打开dos窗口:

  输入

  cd abc

  dir *.dwg /b > list.txt

  这样,我们就在G:\abc目录下得到一个包含所有dwg文件名的文本文件list.txt.

  但实现批量处理,我们还需要加入命令,变成如下格式:

  open 1.dwg -purge A * n qsave close

  open 2.dwg -purge A * n qsave close

  open 3.dwg -purge A * n qsave close

  open 4.dwg -purge A * n qsave close

  open 5.dwg -purge A * n qsave close

  怎么实现呢?看上面这种格式,我们应该马上就想到微软的office程序excel。打开excel,把list中的内容粘贴到新建表格的第二列,如下图:

  1、选中A1单元格,双击右下角的小黑点

  2、选中C1:A1单元格,双击右下角的小黑点

  3、另存为jiaoben.txt,打开文本文件,替换TAB为一个空格:

  4、改文件后缀为.scr,脚本文件就编辑好了。

  在运行这段脚本之前,我们还有一件事情要做,就是必须定义文件支持路径以便CAD能顺利找到这些dwg文件。在AutoCAD菜单点工具>选项或者在CAD命令行输入窗口上点右键选择选项。将G:\ABC目录添加进去,点确定。

  现在就可以在AutoCAD中运行该脚本来实现对文档的批量清理工作了。

  4.总结和扩展

  这只是一个抛砖引玉的例子,想要完成其他复杂的批处理,只需要把文件名和qsave之间的文本改成你想要执行的操作。如果需要执行其他自定义程序中的命令,需要把程序添加到,自动启动组中,然后把指定命令添加到上面的脚本中即可。

  参考文献:

  [1]郭朝勇等.AUTOCAD2002定制与开发.清华大学出版社.2002-6

  [2]Sham Tickoo,AutoCAD 2000高级用户指南:设计、定制、开发.机械工业出版社.2000-6

  [3]方晨.Excel 2007 中文版实例教程.上海科学普及出版社.2010-1

  [4]赵全斌.Excel工程应用实用教程参数.清华大学出版社.2009-7

 

 

期刊VIP网,您身边的高端学术顾问

文章名称: 巧用excel编写脚本实现对AutoCAD文档的批量处理

文章地址: http://www.qikanvip.com/ruanjiankaifa/4668.html