前几天就有看到有人问类似的问题:多段线怎么就只有一个夹点,当时我以为多段线被做成了图块,对方确认对象类型确实是多段线,我觉得很奇怪,这怎么可能,由于对方无法把图发过来,因此也就不了了之。
今天在微信公众号里又有人问类似的问题,这位朋友把图纸发过来,不仅多段线只有一个夹点、直线、视口、文字、视口等都只有一个夹点,这回终于知道是什么原因,怎么解决了,这里给大家分享一下。
分析问题的原因
这位朋友发过来的图纸有160多MB,但打开图纸,切换到模型空间,发现主体图形并不多,图形不应该有这么大。
双击鼠标中键,发现图形就消失了。
看到这种现象我并不觉得奇怪,因为上周刚有人在微信上发过一张类似的图纸。也就是在主体图形以外很远的地方有图形。其实以前也遇到过类似的图纸,但那些图形的坐标还没有这么离谱,也就是10的十几次方数量级,缩放还可以看清楚远处到底是什么图形。上周发过来的图纸全图缩放后视图尺寸的数量级是10的七十多次方,这张图纸更厉害,是10的八十多次方。
不选择任何对象,按CTRL+1,打开特性面板,观察视图的中心坐标和宽度和高度,如图所示。
这种状态下按CTRL+A,可以看到在视图的边缘处有蓝色的点,表示有图形被选中,但我们现在无法知道哪个是我们要删除的图形,我曾尝试用窗口缩放或对象缩放来查看其中一处图形都没有成功。
这些距离坐标原点以外的图形可能是导致文件异常大的原因,但之前看到类似的图纸时并没有发现只显示一个夹点的现象,因此可能还有其他原因。
只能按CTRL+Z回退到打开图纸时的初始状态,我们用滚轮适当缩放图纸,让主体图形全部显示,然后按CTRL+A全选,按住SHIFT键,从右往左框选要保留的图形,按DELETE键或输入E后回车,将选中的多余图形删除,然后再双击鼠标中键全图显示,这回视图尺寸正常了。
虽然图形偏离原点有一定距离,但还在可接受范围内。此时如果保存图纸,图纸只剩不到10MB,可见那些垃圾图形占用了150多MB,他们不仅给后续操作带来了麻烦,而且会导致操作性能大幅下降。
但这些仍不是只显示一个夹点的原因,我们选中其中一条直线,发现仍是一个夹点,我们仔细观察特性面板,会发现另外一个异常数据:Z坐标,
在属性框中将起点和端点Z坐标都改成0,我们再看直线,这次夹点显示正常了。如图所示。
通过上面的分析我们知道了原来是因为这些图形的Z坐标异常所以导致只显示一个夹点,我们再看图中的其他图形,多段线、直线、文字、填充等都是如此,我们必须想办法将这些图形的Z坐标变成0才能彻底解决问题。
将Z坐标改为0的方法
大家想到的最简单的方法就是选择所有图形,然后到特性面板里去改Z坐标。如果只有少数几个同类图形有这样的问题,是可以的,如果Z坐标异常的图形有多种,这样显然不行,因为当选择所有对象后,特性面板里只显示公共属性,特性面板里并没有显示Z坐标。我们可以利用快速选择来进行分类选择后进行修改。
输入QSELECT命令后回车或直接在特性面板中单击快速选择按钮,打开快速选择对话框,选择应用到整个图形,在对象类型中选择直线,在运算符里选择“选择全部”,单击"确定"按钮,将所有直线选择出来。
在特性面板找到起点和终点Z坐标,无论显示的是3.0000E+99还是多种,直接输入0,将所有直线的起点和终点的Z坐标都改为0。
用快速选择依次将其他类型的图形选出来,再特性面板中改Z坐标,圆和弧需要修改圆心坐标,多段线、填充、文字、图块有的是标高,有的是位置Z坐标,总之是找到可修改的异常Z坐标,将他们都该成0,还要切换到布局空间,将视口和图纸空间的图形也要处理一遍。
总之这样人工处理太麻烦了,可以到网上找找改Z坐标的插件,我记得有些软件里有这样的工具,例如浩辰CAD的扩展工具里有改Z坐标的工具(ChangeZ),可以框选所有对象进行处理,模型空间和布局空间各处理一次就够了。
但并不是所有图形这种改Z坐标的工具都可以处理,处理完会提示有一些图形处理失败,如果我们用到的图形没有异常,就可以不管了。
小结
今天比较高兴的是我通过这张图纸知道了一个问题的答案:图形只显示一个夹点是因为Z坐标异常。
但让我更疑惑的是,这种图纸是怎么出来的呢?为什么会有这么多类似的图形?这一周就遇到两张了,其实2016年6月在网站里就发过类似的文章:CAD图纸打开看不到内容是怎么回事?
当时图纸的数量级还是10的35次方,上周是10的75次,这次视图尺寸达到了10的84次方,而Z坐标直接达到了10的99次方,这是什么概念,应该比人类已知的宇宙边界都要大了。
不仅遇到过这样的图纸,还有一些图纸的视图尺寸相对正常,但切换到左视图会发现图形高低错落,很多图形没在XY平面上,关键是有一些图块内部的图形也Z坐标不统一,这类图形用改Z坐标的工具或AUTOCAD的FLATTEN命令都无法处理。
我现在希望大家能帮我一个忙,有谁能告诉我,这种图纸是怎么产生的,遇到过这类图纸的朋友下回留心一点,下次出现这种情况时回忆回忆,看看做过什么操作。