求助:文件太大
<p>所做的一CAD文件,用e命令删除了文件中所有物体,用pu命令清除,保存后还有30M,请问是什么原因?如何解决?谢谢!</p> 本帖最后由 dunkel 于 2015-4-2 09:10 编辑 <br /><br />这类情形, 就我自己接触到的, 也是在这里反应的情形来看, 有两种可能. 一个是有大量层过滤设置; 另外就是大量的组定义. 如果是前者, 层管理命令 Layer 会很长时间失去响应, 因为在整理大量的层过滤设置到列表控件里. 这个可以通过附件里的 .lsp 程序简单地删除层过滤设置而解决. 如果是后者的话, 组管理命令 Group 同样会失去响应, 理由也是一样的. 这个暂时没有特别好的方法在原图上进行清理, 不过可以通过 WBlock 写块命令进行清除, 虽然也可能因此会丢掉其它的些有用但暂时没使用到的设置. 如果非要在原图上进行清理, 可以试试第二个附件的 .lsp 程序, 不过会比较费时间, 虽然比打开该文件稍好些. <br/>或者, 可以的话, 将这文件压缩了 <a href="mailto:dunkel@tom.com">dunkel@tom.com</a><br/><br/>删除层过滤设置的 .lsp 程序文件: <br/><br/><br/>删除组定义的 .lsp 程序文件: <br/><br/><br/>词典数据查看和清除的 .lsp 程序:<br/> 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)
)
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 字典选项 谢谢楼主了,非常好的命令 <p>非常感谢,解决了困惑我多年的问题。</p> 多谢,我也有这个问题呢 <p>非常感谢,命令很好用!</p><p>谢谢<strong><font face="Verdana" color="#61b713">dunkel</font></strong></p> 解决了大问题,非常感谢 “层过滤设置”,要好好学学,长长知识。 收藏备用,谢谢<font color="#61b713" face="Verdana"><b>dunkel</b></font> <p>谢谢<strong><font face="Verdana" color="#61b713">dunkel</font></strong></p>
<p>收藏了,慢慢看学习学习.</p>
<p>我一般是采用 WBlock 写块命令进行清除.比较快,方便</p>