你好,欢迎来到电脑编程技巧与维护杂志社! 杂志社简介广告服务读者反馈编程社区  
合订本订阅
 
 
您的位置:杂志经典 / 编程语言
VB编程实现AutoCAD文件“减肥”批处理
 

一、引言    

用户在使用AutoCAD时可能会发现这样现象,尽管图面实体比较简单,但绘图文件(DWG文件)却很大,这是什么原因呢?原因是使用AutoCAD过程中,绘图文件中的数据库将用户的每一步操作、所有曾经绘制的实体(含已删除的)、插入的图块、线型、图层等一一记录。而使用来说,这些中间数据是可有可无的,但是它们的存在却使文件变大,从而造成文件的调用、存盘和备份存档等工作的不便。虽然AutoCAD软件本身如(R14)提供了专门的清理命令Purge,它可以把多余的中间信息从文档数据库中彻底删除,使文件精简。但对一个较大AutoCAD应用单位来说,经常需要对成千上万个DWG文件的进行备份存档,因此对这些文件作精简处理是必要的,但如果通过系统管理员一一打开每个文件,再键入Purge命令来处理,工作量太大。如果能设计一个批处理程序对磁盘上的DWG文件进行自动批处理,将起到事半功倍的作用。

二、程序设计思想

首先通过VB来设计窗体,窗体包含磁盘列表框、目录列表框和文件列表框等控件,利用这些控件来在磁盘中选择要作精简处理的DWG文件;然后通过ActiveX Automation启动AutoCAD应用程序打开DWG文件进行处理。处理过程将用到如下几个函数。

l       GetObject用于在系统已经加载AutoCAD时检索AutoCAD应用程序对象;

l       CreateObject用于在未加载Autocad情况下创建AutoCAD应用程序对象;

l       AcadDoc.Open函数用于打开指定路径下的DWG文件,acadDoc.Save保存所编辑的文件;

l       AcadDoc.Activeviewport.Zoomall用于将全部图形缩放在视口中;

l       AcadDoc.Purgeall用于从文档中删除所有不用的块、图层及线型等实体,相当于在AutoCAD环境下使用Purge命令并选择All并对purge everything?回答yes,重复使用该命令4~5次以确保删除干净。

l     AcadApp.Quit用于对AutoCAD应用程序卸载

三、程序详细设计

1.使用VB新建一个工程,并按下表实现窗体:

对象

属性

设置值

窗体

Name

Caption

FilePurge

DWG文件清理

标签

Name

Caption

Label1

驱动器

标签

Name

Caption

Label2

目录

标签

Name

Caption

Label3

要清理的文件

标签

Name

Caption

Label4

处理前大小

标签

Name

Caption

Label5

处理后大小

磁盘列表框

 Name

Driver1

目录列表框

 Name

Dir1

文件列表框

 Name

MultiSelect

pattern

File1

2-extend

*.dwg

文本框

Name

Caption

Text1

“”

文本框

Name

Caption

Text2

“”

按钮

Name

Caption

CmdSelall

全选

按钮

Name

Caption

CmdDo

处理

按钮

Name

Caption

CmdExit

退出

2.窗体的外观如下图所示:

 

 

 

 

 

 

 

3.在窗体的代码窗中添加如下代码:

Public path '定义路径公共变量

Private Sub CmdDo_Click()

    Size = 0

    On Error Resume Next

    Set acadApp = GetObject(, "AutoCAD.Application")

    If Err Then

        Err.Clear

        Set acadApp = CreateObject("AutoCAD.Application")

        If Err Then

            MsgBox Err.Description

            Exit Sub

        End If

    End If

    Set acadDoc = acadApp.ActiveDocument '设定文档对象

   

    For i = 0 To File1.ListCount - 1 Step 1

        If File1.Selected(i) Then '对当前文件列表框中的选中文件进行处理

            a = path + File1.List(i) '获得文件名

            File1.Selected(i) = False

            acadDoc.open a

            acadDoc.Activeviewport.zoomall

            acadDoc.purgeall

            acadDoc.purgeall

            acadDoc.purgeall

            acadDoc.purgeall

            acadDoc.save

            Size = Size + FileLen(a)

        End If

    Next i

    Text2.Text = Str(Size) '显示所选文件处理后的大小(字节)

    acadApp.quit

End Sub

 

Private Sub CmdExit_Click()'结束程序

    End

End Sub

 

Private Sub CmdSelall_Click()'选择当前目录下的所有DWG文件

    For i = 0 To File1.ListCount - 1 Step 1

        File1.Selected(i) = True

    Next i

    Text1.Text = cal_size

End Sub

 

Private Sub Dir1_Change()

    Text2.text= ""

End Sub

 

Private Sub Dir1_Click()

    Dir1.path = Dir1.List(Dir1.ListIndex)

    path = Dir1.path

    If Right$(path, 1) <> "\" Then

        path = path + "\"

    End If

    File1.path = path

    Text1.Text = ""

    Text2.Text = ""

End Sub

 

Private Sub Drive1_Change()

    Dir1.path = Drive1.Drive

    Dir1_Click

End Sub

 

Private Function cal_size() As String'计算当前目录下所中的DWG文件大小

    Dim len1 As Long

    len1 = 0

    For i = 0 To File1.ListCount - 1 Step 1

        If File1.Selected(i) Then

            len1 = len1 + FileLen(path + File1.List(i))

        End If

    Next i

    cal_size = Str(len1)

End Function

 

Private Sub File1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)

    Text1.Text = cal_size

End Sub

4.将工程编译成可执行文件,运行后将出现下图所示的清理界面:

 

 

 

 

 

 

 

四、结束语

通过编制上述的小程序,可方便地对磁盘中的DWG文件进行精简处理,从处理的效果看,对于一般在AutoCAD环境下未经Purge命令处理的文件,可将其大小缩小24倍,个别文件可“减肥”10倍以上。

 

  推荐精品文章

·2024年2月目录 
·2024年1月目录
·2023年12月目录
·2023年11月目录
·2023年10月目录
·2023年9月目录 
·2023年8月目录 
·2023年7月目录
·2023年6月目录 
·2023年5月目录
·2023年4月目录 
·2023年3月目录 
·2023年2月目录 
·2023年1月目录 

  联系方式
TEL:010-82561037
Fax: 010-82561614
QQ: 100164630
Mail:gaojian@comprg.com.cn

  友情链接
 
Copyright 2001-2010, www.comprg.com.cn, All Rights Reserved
京ICP备14022230号-1,电话/传真:010-82561037 82561614 ,Mail:gaojian@comprg.com.cn
地址:北京市海淀区远大路20号宝蓝大厦E座704,邮编:100089