前几天有一位朋友在微信公众号上问了我一个问题,同事给他的图纸只有不到7MB,但他一另存后就变100多MB了,清理CPU后也是如此,复制到新图也不行。另存一下文件大小能差这么多,我是怀疑有错误数据,但没有图纸也不好下结论,于是让他把图发过来。
打开他发过来的100多MB的图纸后,发现图形并不多,也清理过了,感觉确实不应该有100多MB。打开时注意到命令行提示是2000版的DWG文件,我知道存成高版本文件会小一些,于是尝试保存成2007版格式,奇迹发生了!文件果然变小了,变成了6MB多。于是我认为找到了原因并且回复了他。
不过我当时很好奇,为什么保存成低版本文件会差那么多?一般情况下,2000版DWG会比2007版大一到两倍,但大十几倍很少见,到底是什么数据导致出现这种问题呢?今天正好有点空,于是研究了一下。
我将图中的图形依次分类删除后保存,想找出到底什么图形导致图形变得巨大,但等我把图形全部都删光了,又清理过了,保存的2000版文件仍有100MB左右,2007版文件仍有5MB多,也就是说真正的图形数据也就1MB多。也就是说图中确实存在着看不到的巨大数据,这些数据到底是什么呢?类似的情况我遇到过多次了,图形不多,但文件巨大,打开和操作速度都很慢,这些图的原因还不尽相同,我不妨将我知道的几种情况跟大家分享一下。
一、 冗余的DGN数据
图纸导入过MICROSTATION的DGN图形数据,至于如何操作的我也不清楚,但会在图中遗留一个巨大的DGN数据字典,这个用CAD现有命令是看不出来的。我在网上找到了一个可以看DWG文件内部数据表的工具,看到了这个对象,如下图所示。
左侧可以看到数据的名称叫ACAD_DGNLINESTYLECOMP,从字面看就是AutoCAD中保存的DGN线型组件。从右侧可以看到里面的内容,从滚动条的滑块大小可以知道这些数据应该有几十甚至上百页,这就是那些在2007版下5MB多,但2000版下100多MB的数据。这张图中的数据还不算大,我曾经见过一张2010版DWG图中DGN数据有30多MB,而实际的图形只有几百K的图纸。
为什么2007版的DGN数据5MB多,而2000版却100MB,这个我也说不清楚,可能是DWG文件中对于DGN数据的描述方式有了很大变化,因为早期两家并没有交换数据格式,后期交换数据格式后,数据兼容更简单,描述简化了吧!
距网友说出现问题的原因是:从包含 DGN 线型的 DWG 复制和粘贴时会导致 DWG 文件增大,这些数据大部分为非必要数据。在将同一图形中的对象从一个文件复制/粘贴到另一个文件时,或者在将使用 DGN 线型的图形附着到其他文件作为外部参照时,出现的文件膨胀问题。 建筑总图绘制过程中很有可能会使用到MICROSTATION,而在互相参照复制的过程中,使得这些无用数据存在于DWG中并且不可见,这给清理和管理带来很大的困难。
遇到这种图纸比较好的解决办法就是将图形框选,CTRL+C,然后开一张新图,粘贴到新图中。但那位朋友提问时说复制到新图也不行,这张图中有专业软件创建的自定义对象,我也没有对应的软件或插件,这些对象被显示为代理对象,没有办法复制到剪贴版,我也无法印证。以前我遇到类似的图通过复制粘贴到新图是可以的。
如果大家能了解到产生数据的来源,从根本上杜绝这种数据的生成会是更有效的方法。
二、 海量的注释性比例
CAD增加注释性功能以后,感觉用注释性的人并不多,但见到那种因为海量注释性比例导致图纸异常大,打开和操作性能特慢的图纸已经多次了。正因为如此,在AutoCAD和浩辰CAD的高版本加上了一个注释性比例异常处理的功能,当注释性比例数量超过100个时,就会弹出如下图所示提示。
我见过一张20多MB的图纸,在重置比例列表后另存,文件变成了470K。20多MB全部都是注释性比例,可见有多少个比例。如果用低版本打开,想要显示这张图中的所有比例,32位CAD直接就内存不足退出了。
处理这种图纸在CAD高版本当然简单了,出现上述对话框的时候点“是”就可以了,不过20多MB的注释性比例CAD也要处理一会儿。这些多余的注释性比例,通常都是以外部参照比例出现的,如果用的是CAD低版本,可以通过状态栏的比例列表(取消勾选“隐藏外部参照的注释比例”)来检查一下图纸异常大是否是由注释性比例过多引起的。
如果常规操作,肯定不会产生如此多的注释性比例,肯定是工具软件或插件自动生成的,曾经听人说有类似的病毒,会在操作的过程中不断生成注释性比例。如果你用的是CAD低版本,又发现图中有大量多余的注释性比例,可以用命令进行重置,或者让用高版本的同事或朋友帮你处理一下。重置注释性比例列表的方法如下:
1、在菜单里选择:格式>比例缩放列表或输入salelistedit命令,回车。
2、在“编辑注释比例”对话框中点“重置”按钮即可。
3、 大量的图层过滤器
曾经见到这样的一张图纸,图纸保存成2000格式有5MB多,保存成2007版格式有2MB多,图并不算大,但跟实际的图形比起来,文件就已经非常大了。
在AUTOCAD 2011中打开这张图,查看图形没有任何异常,也没有可清理的多余数据,但点开图层管理器的时候会弹出提示。
选择“删除所有图层过滤器”,然后再存文件,文件变成了60KB。也就是说图中2MB多的数据全部都是图层过滤器。重新打开原图,在打开图层管理器时选择“保留所有图层过滤器”,等待了好长时间,图层管理器才弹出来,图层过滤器果然不是一般的多。
总共只有不到10个图层,但图层过滤器至少有几百种,这显然不是画图的人自己做出来的,很显然是某个弱智的工具软件和插件生成出来的。
上面是我遇到过的几种情况,当然还可能会有其他数据导致出现图纸异常大,如果大家遇到了类似图纸,但不是上面几种情况,可以一起研究一下。
遇到类似图纸异常大的图纸,怎么处理呢?我简单了总结了一下,希望对大家有帮助。大家第一个想到的肯定是:清理PU,清理确实可以解决一部分问题,比如图中保存了过多未使用的块定义,我见过一张图纸在清理后只有原来的十分之一,如果习惯良好的话不会有这种问题。然后,可以用核查AUDIT修复一下错误数据,检查图层过滤器列表、注释性比例列表这些CAD自身可修复的数据。最后一招:复制粘贴到新图中。复制粘贴的时候有时要注意,如果CTRL+A全选后复制粘贴不行,可以尝试从左往右框选图形后复制粘贴。
另外,2007版的图纸会比2000版的图纸小很多,存成更高版本的图纸不会小太多甚至可能变大。很多人将图纸保存2000版估计是为了保证兼容性,用不同版本CAD的人都可以打开。但我建议大家不要保存这么低的版本,不仅是文件大小的问题,还有兼容性的问题。CAD高版本不仅推出了不少低版本不支持的对象类型,而且AUTOCAD在2007年推出UNICODE版本,存成低版本图纸在CAD高版本打开时容易出现文字编码的问题,我就遇到过多张出现文字样式不识别或文字乱码的图纸,都是2000或2004版图纸。如果没有特殊需要,建议保存成2007版以上的DWG文件。
看似简单,但仔细研究后却发现并没有那么简单,产生这些数据的原因还是没有弄清楚,只是希望这篇文章能给大家一些帮助的启发,如果您发现了类似问题的原因和解决方法希望能分享给我。
3、DGN数据的清理方法
此外,在AUTOCAD 2015以上版本的清理功能增加了对孤立数据的清理,据说可以清理DGN数据。