明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3490|回复: 19

[分享]特此上传*DWG减肥工具所有部分

  [复制链接]
发表于 2003-10-11 12:09:00 | 显示全部楼层 |阅读模式
为答谢明总及EFAN2000版主的指点,特将此减肥工具的所有上传。
  注意:减肥后的文件保存在D盘的jianfei文件夹下,名称没有变

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2003-10-11 18:43:00 | 显示全部楼层
呵呵,终于出成果了,恭喜
 楼主| 发表于 2003-10-11 19:00:00 | 显示全部楼层
谈不上什么成果,没有您老的意见,可能也没有办法做出来。呵呵!
冒昧地说一句:干脆够点意思,给个积分吧?呵呵
发表于 2003-10-13 09:36:00 | 显示全部楼层
你这个程序没法用哦,我用的是CAD2004。
发表于 2003-10-13 10:14:00 | 显示全部楼层
本帖最后由 作者 于 2003-10-13 11:00:55 编辑

很好很好
 楼主| 发表于 2003-10-13 14:39:00 | 显示全部楼层
4楼朋友能不能具体说清楚,我那是个用VB做的,不是2004的VBA环境
发表于 2003-10-13 19:36:00 | 显示全部楼层
此程序需要改进.
不知你是否打开过"减肥"过后的图形,是空白图形.
由于On Error Resume Next
和缺少On Error GoTo 0语句,后续错误将被忽略.

  1. Private Sub cmddo_click()
  2.    Size = 0
  3.    On Error Resume Next
  4.    Set acadapp = GetObject(, "AutoCAD.application")
  5.    If Err Then
  6.      Err.Clear
  7.      Set acadapp = CreateObject("AutoCAD.application")
  8.         If Err Then
  9.            MsgBox Err.Description
  10.            Exit Sub
  11.         End If
  12.    End If
  13. Set acaddoc = acadapp.activedocument
  14. For i = 0 To File1.ListCount - 1 Step 1
  15.   If File1.Selected(i) Then '对列表文件进行处理
  16.     a = Path + File1.List(i)
  17.     File1.Selected(i) = False
  18.     acaddoc.apen a '拼写错误,acaddoc.open也会导致错误,但都被忽略
  19.     acaddoc.activeviewport.zoomall
  20.     acaddoc.purgeall
  21.     acaddoc.purgeall
  22.     acaddoc.purgeall
  23.     acaddoc.purgeall
  24.     acaddoc.purgeall
  25.     MkDir "d:\jianfei" '如果存在,将会产生错误
  26.     acaddoc.saveas "d:\jianfei" & File1.List(i) & ".dwg"'保存的不一定是a
  27.     Size = Size + FileLen("d:\jianfei" & File1.List(i) & ".dwg")
  28.   End If
  29. Next i
  30. Text2.Text = Str(Size)
  31.   acadapp.quit'如果是用户正在使用,也将提示退出.
  32. End Sub


以下是改写后的代码:

  1. Private Sub cmddo_click()
  2.     Size = 0
  3.     On Error Resume Next
  4.     Set AcadApp = GetObject(, "AutoCAD.application")
  5.     If Err Then
  6.         NewApp = True
  7.         Err.Clear
  8.         Set AcadApp = CreateObject("AutoCAD.application")
  9.         If Err Then
  10.             MsgBox Err.Description
  11.             Exit Sub
  12.         End If
  13.     End If
  14.     On Error GoTo 0 '关闭错误陷井,以便调试后续语句.
  15.     For i = 0 To File1.ListCount - 1 Step 1
  16.         If File1.Selected(i) Then '对列表文件进行处理
  17.             a = Path + File1.List(i)
  18.             File1.Selected(i) = False
  19.             AcadApp.documents.open a
  20.             For Each CurDoc In AcadApp.documents
  21.                 If CurDoc.FullName = a Then
  22.                     AcadApp.zoomall
  23.                     CurDoc.PurgeAll
  24.                     CurDoc.PurgeAll
  25.                     CurDoc.PurgeAll
  26.                     CurDoc.PurgeAll
  27.                     CurDoc.SaveAs Dir1.Path & "S_" & File1.List(i)
  28.                     CurDoc.Close
  29.                     Size = Size + FileLen(Dir1.Path & "S_" & File1.List(i))
  30.                 End If
  31.             Next CurDoc
  32.         End If
  33.     Next i
  34.     Text2.Text = Str(Size)
  35.     If NewApp = True Then AcadApp.quit
  36.     Set AcadApp = Nothing
  37. End Sub
 楼主| 发表于 2003-10-13 19:55:00 | 显示全部楼层
呵呵,实在不好意思了,连我自己都没有发现,我只看了一下那个文件大小有变化就以为大功告成了。
不过你改动的程序也不行,那个处理后文件大小显示为零,然后找不到处理后的文件。
发表于 2003-10-13 20:09:00 | 显示全部楼层
处理后的文件存在原文件所在目录,文件名在原文件名加上前缀"S_",不可能每个人运行是都建个目录,没D盘咋办.
由于我在根目录下调试的,没考虑到非根目录的情况,以下是改正后的程序:

  1. Private Sub cmddo_click()
  2.     Size = 0
  3.     On Error Resume Next
  4.     Set AcadApp = GetObject(, "AutoCAD.application")
  5.     If Err Then
  6.         NewApp = True
  7.         Err.Clear
  8.         Set AcadApp = CreateObject("AutoCAD.application")
  9.         If Err Then
  10.             MsgBox Err.Description
  11.             Exit Sub
  12.         End If
  13.     End If
  14.     On Error GoTo 0 '关闭错误陷井,以便调试后续语句.
  15.     For i = 0 To File1.ListCount - 1 Step 1
  16.         If File1.Selected(i) Then '对列表文件进行处理
  17.             a = Path + File1.List(i)
  18.             File1.Selected(i) = False
  19.             AcadApp.documents.open a
  20.             For Each CurDoc In AcadApp.documents
  21.                 If CurDoc.FullName = a Then
  22.                     AcadApp.zoomall
  23.                     CurDoc.PurgeAll
  24.                     CurDoc.PurgeAll
  25.                     CurDoc.PurgeAll
  26.                     CurDoc.PurgeAll
  27.                     If Right(Dir1.Path, 1) <> "" Then
  28.                         Temp = Dir1.Path & ""
  29.                     Else
  30.                         Temp = Dir1.Path
  31.                     End If
  32.                     CurDoc.SaveAs Temp & "S_" & File1.List(i)
  33.                     CurDoc.Close
  34.                     Size = Size + FileLen(Temp & "S_" & File1.List(i))
  35.                 End If
  36.             Next CurDoc
  37.         End If
  38.     Next i
  39.     Text2.Text = Str(Size)
  40.     If NewApp = True Then AcadApp.quit
  41.     Set AcadApp = Nothing
  42. End Sub
  43. Private Sub cmdexit_Click()
  44. Unload Me
  45. End Sub
 楼主| 发表于 2003-10-13 20:22:00 | 显示全部楼层
依旧没有发现处理后的文件,再有就是处理后CAD打开了所有图形,应该退出CAD的。处理结果仍然显示为0
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-28 13:47 , Processed in 0.169549 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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