明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2044|回复: 4

[分享]*.dwg文件减肥程序

[复制链接]
发表于 2003-10-10 20:55:00 | 显示全部楼层 |阅读模式
本帖最后由 作者 于 2003-10-11 10:19:01 编辑

曾经在一本期刊上看到:对于复杂大的图形,实际是可以将它的大小减小的,因为它记录了很多用户曾经做过的操作。尽管可以使用PURGE进行清理,但如果有一大批的图纸要一个一个清理那就相当麻烦了,如果能批量的处理就更好了。于是小弟就将它做出来了,现将代码传上来供大家学习和提供意见(用VB做的,如果那位大哥想要源程序的话请EMAIL告知)
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.apen a
    acaddoc.activeviewport.zoomall
    acaddoc.purgeall
    acaddoc.purgeall
    acaddoc.purgeall
    acaddoc.purgeall
    acaddoc.purgeall
     MkDir "d:\jianfei"
    acaddoc.saveas "d:\jianfei\" & File1.List(i) & ".dwg"
    Size = Size + FileLen("d:\jianfei\" & File1.List(i) & ".dwg")
  End If
Next i
Text2.Text = Str(Size)
  acadapp.quit
End Sub
Private Sub cmdexit_Click()
Unload Me
End Sub
Private Sub cmdselall_Click() '计算大小
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 '计算当前的文件大小
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
发表于 2003-10-10 23:03:00 | 显示全部楼层
象这样的清理可能不能将以前的绘图记录清除吧。应该清理后把图形全选,然后输出为图块,但这样的输出有一个缺点,就是如果用户有使用布局时这种输出图块不能将布局也输出。
发表于 2003-10-10 23:11:00 | 显示全部楼层
使用acaddoc.save达不到减肥的效果,因为在ACAD中的图形是以增量方式保存的,默认的是50%。
应该要先使用acaddoc.saveas另存为一个临时文件,然后再更改它的文件名。
 楼主| 发表于 2003-10-11 10:02:00 | 显示全部楼层
多谢明总及版主的指点。现在已经做好了。
发表于 2003-11-12 08:08:00 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-28 13:33 , Processed in 0.167873 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表