明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 33178|回复: 73

求助:文件太大

  [复制链接]
发表于 2008-4-10 23:16 | 显示全部楼层 |阅读模式

所做的一CAD文件,用e命令删除了文件中所有物体,用pu命令清除,保存后还有30M,请问是什么原因?如何解决?谢谢!

评分

参与人数 1明经币 +1 收起 理由
nuts26173802 + 1 赞一个! 存成04格式也能减少些体积

查看全部评分

发表于 2008-4-11 06:48 | 显示全部楼层
本帖最后由 dunkel 于 2015-4-2 09:10 编辑

这类情形, 就我自己接触到的, 也是在这里反应的情形来看, 有两种可能. 一个是有大量层过滤设置; 另外就是大量的组定义. 如果是前者, 层管理命令 Layer 会很长时间失去响应, 因为在整理大量的层过滤设置到列表控件里. 这个可以通过附件里的 .lsp 程序简单地删除层过滤设置而解决. 如果是后者的话, 组管理命令 Group 同样会失去响应, 理由也是一样的. 这个暂时没有特别好的方法在原图上进行清理, 不过可以通过 WBlock 写块命令进行清除, 虽然也可能因此会丢掉其它的些有用但暂时没使用到的设置. 如果非要在原图上进行清理, 可以试试第二个附件的 .lsp 程序, 不过会比较费时间, 虽然比打开该文件稍好些.
或者, 可以的话, 将这文件压缩了 dunkel@tom.com

删除层过滤设置的 .lsp 程序文件:


删除组定义的 .lsp 程序文件:


词典数据查看和清除的 .lsp 程序:

本帖子中包含更多资源

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

x

点评

第三个可否做成自动清理的?不要认为选择?  发表于 2019-5-5 23:49
收藏,备用。感谢高手!  发表于 2017-2-23 09:37
高人呐,收藏备用。  发表于 2013-5-7 08:43

评分

参与人数 3明经币 +2 金钱 +40 收起 理由
Cad2077 + 20 很给力!
ccistudio + 20 好程序!高人此贴8年之后仍帮我解决大问题,.
mccad + 2 【好评】好程序

查看全部评分

回复 支持 5 反对 0

使用道具 举报

发表于 2019-4-18 20:07 | 显示全部楼层
BUBUBA918 发表于 2019-4-10 17:29
1."4C495745_D3"  12
2."4C495745_D4"  32
3."4C495745_DD"  6

(defun c:uu (/ amode)
  (setvar "cmdecho" 0)
  (command "purge" "all" "" "n")
  (command "-scalelistedit" "reset" "y" "e")
  (princ "\n图层清理完毕O(∩_∩)O")
  (initget "Y N")
  (setq
    amode (getkword
            "\n是否清理CAD词典[是(Y)/否(N)]<否>:"
          )
  )
  (if (not amode)
    (setq amode "N")
  )
  (IF (= amode "Y")
    (PROGN
      (defun C:cduuxx
                      (/ xdoc xdicts xi xc xii xlst xnl xhl)
                                        ; 对当前图形里的常规词典进行列表
        (defun myGetCount (xd xn / xitem errobj)
          (setq        xitem  (vla-item xd xn)
                errobj (vl-catch-all-apply 'vla-get-count (list xitem))
          )
          (if (vl-catch-all-error-p errobj)
            "#n/a"
            (itoa errobj)
          )
        )                                ; end of myerr()

        (vl-load-com)
        ;; (textscr)
        (command "Undo" "c" "n")
        (setq xdoc        (vla-get-ActiveDocument (vlax-get-Acad-Object))
              xdicts        (vla-get-dictionaries xdoc)
              xdictlist        (entget (namedobjdict))
              xi        0
              xc        (length xdictlist)
              xii        0
              xnl        nil
              xhl        nil
              aalstn        '()
        )
        (while (< xi xc)                ; for each element in xdictlist, the dictionary list
          (if (= (car (setq xlst (nth xi xdictlist))) 3)
            (progn
              (setq xii        (1+ xii)
                    xi        (1+ xi)
              )
              (setq uudd (strcat (itoa xii)
                                 ". \""
                                 (setq xname (cdr xlst))
                                 "\"  "
                                 (myGetCount xdicts xname)
                                 "\n"
                         )
              )
              ;;
              (setq aa1 (cdr xlst))
              ;;统计名称
              (setq aa2 (myGetCount xdicts xname))
              ;;统计数量
              (setq aalst (list (atof aa2) aa1 xii))
              ;;组表
              (setq aalstn (cons aalst aalstn))
              (setq
                disptnull00
                 (vl-sort aalstn
                          (function (lambda (e1 e2)
                                      (> (car e1)
                                         (car e2)
                                      )
                                    )
                          )
                 )
              )
              ;;根据距离排序
              ;;
              (setq xnl        (cons xname xnl)
                    xhl        (cons (cdr (nth xi xdictlist)) xhl)
              )
            )                                ; end of progn(it's a dictionary item)
          )                                ; end of if(it's a dictionary item)
          (setq xi (1+ xi))
        )                                ; end of while(each element in dictionary list)
        ;|(princ (strcat "\n当前文档词典数量="
                 (itoa (vla-get-count xdicts))
                 "\n"
         )
  )|;
        ;;(initget 6)                                ; no zero or negative value allowed
        (setq xnl (reverse xnl)
              xhl (reverse xhl)
              ;;xi  (getint "\n键入需要清理的项 <退出>: ")
              xi  (caddr (nth 0 disptnull00))
        )
        (if (and xi (<= xi xii))
          (entdel (nth (1- xi) xhl))
        )
        (command "Undo" "a")
        ;;(princ "\nCAD词典清理完毕!!!")
        (prin1)
      )
      (c:cduuxx)
      (princ "\nCAD词典清理完毕!!!")
    )
  )
  (prin1)
)

发表于 2019-4-10 17:29 | 显示全部楼层
dunkel 发表于 2018-11-27 15:48
不能固定了清除 第4 或 第5 项吧,可以固定地清除某个名的项,如单位里可能来自miscrostation 的困扰,或可 ...

1."4C495745_D3"  12
2."4C495745_D4"  32
3."4C495745_DD"  6
4."4C495745_DL"  872
5."4C495745_DN"  18
6."4C495745_DR"  26
7."4C495745_DS"  6
8."4C495745_DT"  7

我经常遇到上述选项,如何做到批量处理开头是 4C495745 字典选项
发表于 2008-9-3 16:12 | 显示全部楼层
谢谢楼主了,非常好的命令
发表于 2010-1-19 13:55 | 显示全部楼层

非常感谢,解决了困惑我多年的问题。

发表于 2010-1-19 18:18 | 显示全部楼层
多谢,我也有这个问题呢
发表于 2010-4-29 15:02 | 显示全部楼层

非常感谢,命令很好用!

谢谢dunkel

发表于 2010-8-11 13:38 | 显示全部楼层
解决了大问题,非常感谢
发表于 2010-8-11 16:09 | 显示全部楼层
“层过滤设置”,要好好学学,长长知识。
发表于 2010-8-20 21:33 | 显示全部楼层
收藏备用,谢谢dunkel
发表于 2010-8-24 06:50 | 显示全部楼层

谢谢dunkel

收藏了,慢慢看学习学习.

我一般是采用 WBlock 写块命令进行清除.比较快,方便

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-3-29 22:19 , Processed in 0.253784 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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