基于建筑图纸的柱和墙自动识别方法
技术领域
本发明涉及建筑图纸中的建筑对象识别技术领域,尤其涉及一种基于建筑图纸的柱和墙自动识别方法。
背景技术
随着城市建设和计算机技术的快速发展,应用计算机完成建筑物的设计工作已经成为常用手段,并且从二维建筑图纸的设计逐渐转变为三维建筑模型的设计。
现有技术如翟锐的《AutoCAD建筑工程图的读取_识别与三维重建》、袁庆萍的《建筑图三维重建技术研究》、刘川的《基于ObjectARX与Google Earth的城市三维建模系统研究》和刘励静的《利用二维图形数据构建三维场景技术的研究》等,使用的技术方案基本一致,都是先读取建筑图纸,用计算机图像处理的算法识别图元,获取建筑对象的二维数据,再根据预先设置好的标高,输出到三维引擎生成建筑物的三维模型。
但是,现有技术在建筑图纸的识别过程中未能充分利用建筑图纸所包含的信息,识别对象过少,并且没有对建筑图纸的细节进行识别,导致建筑对象的识别效率低,识别精度低。
发明内容
本发明实施例所要解决的技术问题在于,提供一种基于建筑图纸的柱和墙自动识别方法,能够提高建筑对象柱和墙的识别效率及识别精度。
为了解决上述技术问题,本发明实施例采用如下技术方案:提供一种基于建筑图纸的柱和墙自动识别方法,包括以下步骤:
读取柱所在图层和墙所在图层的信息以获取所有所述图层中所有图元的属性信息以及端点的坐标数据;
根据所述柱所在图层中每一个表示柱的图元找出所有所述柱的柱线的端点的坐标数据对应写入一个柱点集;
根据所述墙所在图层中每一段墙线的属性信息以及端点的坐标数据对所有所述墙线进行处理得到所有新墙线;
根据所有所述新墙线的属性信息以及端点的坐标数据判断所有的闭合多边形墙线是否与柱相连,若不相连,则找出所述闭合多边形墙线的端点的坐标数据对应写入一个墙点集;若相连,则找出所述闭合多边形墙线和所述柱连接在一起形成的墙柱图元的端点的坐标数据对应写入一个墙柱点集;
将每一个所述柱点集中的所有端点按顺时针或逆时针顺序连接成一个柱轮廓线并输出,将每一个所述墙点集中的所有端点按找出的顺序依次连接成的封闭线段作为墙轮廓线输出,将每一个所述墙柱点集中的所有端点按找出的顺序依次连接成的封闭线段作为墙柱轮廓线输出。
所有的柱轮廓线、墙轮廓线以及墙柱轮廓线为本发明实施例提供的一种基于建筑图纸的柱和墙自动识别方法的识别结果,而通过基于建筑图纸的柱和墙自动识别方法处理得到所有的柱轮廓线、墙轮廓线以及墙柱轮廓线的端点坐标数据以用于建筑对象柱和墙的三维建模。
与现有技术相比,本发明实施例提供了一种基于建筑图纸的柱和墙自动识别方法,根据柱所在图层中每一个表示柱的图元的属性信息以及端点的坐标数据识别出所有柱的柱轮廓线,根据柱所在图层和墙所在图层中所有图元的属性信息以及端点的坐标数据识别出所有不与柱相连的闭合多边形墙线的墙轮廓线以及与柱相连的闭合多边形墙线和柱连接在一起形成的墙柱图元的墙柱轮廓线,充分利用了建筑图纸所包含的信息,并且将闭合多边形墙线和柱连接的情况结合在一起进行识别,可以解决现有技术在建筑图纸的识别过程中对建筑对象的识别效率低,识别精度低的问题,从而提高了建筑对象柱和墙的识别效率及识别精度。
进一步地,所述根据所述柱所在图层中每一个表示柱的图元找出所有所述柱的柱线的端点的坐标数据对应写入一个柱点集,对于每一个所述柱,具体包括:
根据表示所述柱的图元的属性信息以及端点的坐标数据判断所述柱为圆形还是矩形;
若所述柱为圆形,则求出所述圆形的内接正N边形并找出所述内接正N边形的顶点的坐标数据,将所述内接正N边形的顶点的坐标数据写入所述柱点集;其中,N不等于4;
若所述柱为矩形,则找出所述矩形的顶点的坐标数据,将所述矩形的顶点的坐标数据写入所述柱点集。
进一步地,所述根据所述墙所在图层中每一段墙线的属性信息以及端点的坐标数据对所有所述墙线进行处理得到所有新墙线,对于每一段所述墙线,通过以下步骤对所述墙线进行处理得到所述新墙线:
判断所有所述墙线中是否存在墙线与所述墙线相连且共线;
若不存在墙线与所述墙线相连且共线,则保留所述墙线作为所述新墙线;
若存在墙线与所述墙线相连且共线,则对相连且共线的墙线进行处理得到所述新墙线。
进一步地,所述若存在墙线与所述墙线相连且共线,则对相连且共线的墙线进行处理得到所述新墙线,具体包括:
判断相连且共线的墙线的起点的坐标数据是否相同;
当相连且共线的墙线的起点的坐标数据相同时,判断相连且共线的墙线的终点的坐标数据是否相同;
若相连且共线的墙线的终点的坐标数据相同,则保留相连且共线的墙线中的任意一段墙线作为所述新墙线;
若相连且共线的墙线的终点的坐标数据不相同,则计算相连且共线的墙线的长度,找出长度最大的墙线作为所述新墙线;
当相连且共线的墙线的起点的坐标数据不相同时,比较相连且共线的墙线的所有端点的横坐标的大小,由所有所述端点中横坐标最小的端点和横坐标最大的端点连接生成所述新墙线。
进一步地,所述若存在墙线与所述墙线相连且共线,则对相连且共线的墙线进行处理得到所述新墙线,还包括:
当相连且共线的墙线的起点的坐标数据不相同时,若相连且共线的墙线的所有端点的横坐标相同,则比较相连且共线的墙线的所有端点的纵坐标的大小,由所有所述端点中纵坐标最小的端点和纵坐标最大的端点连接生成所述新墙线。
进一步地,对于每一个与柱相连的闭合多边形墙线,在找出所述闭合多边形墙线和所述柱连接在一起形成的墙柱图元的端点的坐标数据对应写入一个墙柱点集之前,还包括对所述墙柱图元进行处理,具体包括:
当所述闭合多边形墙线的墙线与所述柱的柱线相交时,求出所述墙线和所述柱线的交点的坐标数据,由所述交点和所述墙线在所述柱外的端点连接生成新线段;
当所述闭合多边形墙线的墙线与所述柱的柱线共线时,比较共线的墙线和柱线的所有端点的横坐标或纵坐标的大小,由所有所述端点中横坐标最小的端点和横坐标最大的端点连接生成新线段或由所有所述端点中纵坐标最小的端点和纵坐标最大的端点连接生成新线段;
则所述墙柱图元由所述闭合多边形墙线的所有墙线中不与所述柱的柱线相交且不与所述柱的柱线共线的墙线、所述柱的所有柱线中不与所述闭合多边形墙线的墙线共线的柱线以及生成的新线段连接组成。
进一步地,所述当所述闭合多边形墙线的墙线与所述柱的柱线相交时,求出所述墙线和所述柱线的交点的坐标数据,由所述交点和所述墙线在所述柱外的端点连接生成新线段,具体包括:
判断所述交点的个数为1个还是2个;
若所述交点的个数为1个,则由所述交点和所述墙线在所述柱外的端点连接生成新线段;
若所述交点的个数为2个,则由所述墙线的一个端点与距离较小的交点连接生成新线段,由所述墙线的另一个端点与另一个交点连接生成新线段。
进一步地,对于每一个不与柱相连的闭合多边形墙线或所述墙柱图元,通过以下步骤找出所述闭合多边形墙线或所述墙柱图元的端点的坐标数据对应写入一个墙点集或墙柱点集:
S1411、找出所述闭合多边形墙线或所述墙柱图元的所有端点中横坐标或纵坐标最小或最大的端点设为初始起点,并将所述初始起点的坐标数据写入所述墙点集或所述墙柱点集;
S1412、以所述初始起点横坐标减X为横坐标,以所述初始起点纵坐标为纵坐标设一辅助点,以所述初始起点为中心点,控制连接所述初始起点和所述辅助点的线段绕中心点顺时针或逆时针旋转;其中,X为正数;
S1413、找出所述线段旋转角度最小或最大时与所述线段重合且与中心点相连的线段,并将找出的线段的端点的坐标数据写入所述墙点集或所述墙柱点集;
S1414、判断当前写入所述墙点集或所述墙柱点集的所述端点是否为所述初始起点;
S1415、若当前写入所述墙点集或所述墙柱点集的所述端点不为所述初始起点,则以当前写入所述墙点集或所述墙柱点集的所述端点为中心点,控制连接当前写入所述墙点集或所述墙柱点集的所述端点和前一个写入所述墙点集或所述墙柱点集的端点的线段绕中心点继续顺时针或逆时针旋转,并返回S1413;以及,
S1416、若当前写入所述墙点集或所述墙柱点集的所述端点为所述初始起点,则找出所述闭合多边形墙线或所述墙柱图元的端点的坐标数据写入所述墙点集或所述墙柱点集的过程结束。
进一步地,对于每一个所述柱点集,通过以下步骤将所述柱点集中的所有端点按顺时针或逆时针顺序连接成一个柱轮廓线并输出:
S1501、找出所述柱点集中横坐标或纵坐标最小或最大的端点并设为初始起点;
S1502、以所述初始起点横坐标减Y为横坐标,以所述初始起点纵坐标为纵坐标设一辅助点,控制以所述初始起点为起点并连接所述辅助点的射线绕所述初始起点顺时针或逆时针旋转;其中,Y为正数;
S1503、找出所述射线旋转角度最小或最大时与所述射线重合的端点;
S1504、判断当前找出的所述端点是否为所述初始起点;
S1505、若当前找出的所述端点不为所述初始起点,则控制以当前找出的所述端点为起点并连接前一个找出的端点的射线绕当前找出的所述端点继续顺时针或逆时针旋转,并返回S1503;以及,
S1506、若当前找出的所述端点为所述初始起点,则将所述柱点集中的所有端点按找出的顺序依次连接成的封闭线段作为所述柱轮廓线输出。
进一步地,所述初始起点为横坐标或纵坐标最小或最大的端点,若有多个端点横坐标或纵坐标相等且都最小或最大,则所述初始起点为横坐标或纵坐标相等且都最小或最大的多个端点中纵坐标或横坐标最小或最大的端点。
附图说明
图1A至图1B是本发明实施例提供的一种基于建筑图纸的柱和墙自动识别方法的关于线段的起点与终点的定义示意图;
图2是本发明实施例提供的一种基于建筑图纸的柱和墙自动识别方法的关于Envelope对象的定义示意图;
图3A至图3B是本发明实施例提供的一种基于建筑图纸的柱和墙自动识别方法的关于判断点是否在多边形内的说明示意图;
图4A至图4B是本发明实施例提供的一种基于建筑图纸的柱和墙自动识别方法的关于线段共线的说明示意图;
图5A至图5B是本发明实施例提供的一种基于建筑图纸的柱和墙自动识别方法的关于线段相交的说明示意图;
图6是本发明实施例提供的一种基于建筑图纸的柱和墙自动识别方法的关于判断点是否在线段上的说明示意图;
图7是本发明实施例提供的一种基于建筑图纸的柱和墙自动识别方法的关于具有共同端点的线段夹角的说明示意图;
图8是本发明提供的一种基于建筑图纸的柱和墙自动识别方法的一个优选实施例的方法流程图;
图9是本发明提供的一种基于建筑图纸的柱和墙自动识别方法的步骤S12的一个优选实施例的具体流程图;
图10A至图10C是本发明提供的一种基于建筑图纸的柱和墙自动识别方法的步骤S12的一个优选实施例的示意图;
图11是本发明提供的对相连且共线的墙线进行处理得到新墙线的一个优选实施例的具体流程图;
图12A至图12D是本发明提供的对相连且共线的墙线进行处理得到新墙线的一个优选实施例的示意图;
图13是本发明提供的对墙柱图元进行处理的一个优选实施例的具体流程图;
图14A至图14E是本发明提供的对墙柱图元进行处理的一个优选实施例的示意图;
图15是本发明提供的一种基于建筑图纸的柱和墙自动识别方法的步骤S14的一个优选实施例的具体流程图;
图16A至图16E是本发明提供的一种基于建筑图纸的柱和墙自动识别方法的步骤S14的一个优选实施例的示意图;
图17是本发明提供的将每一个柱点集中的所有端点按顺时针或逆时针顺序连接成一个柱轮廓线并输出的一个优选实施例的具体流程图;
图18A至图18B是本发明提供的将每一个柱点集中的所有端点按顺时针或逆时针顺序连接成一个柱轮廓线并输出的一个优选实施例的示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本技术领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为了使本发明实施例描述的更加清楚,首先对本发明实施例中使用的标准以及技术术语进行定义和说明。
1、制图标准
建筑图纸中各建筑对象的画法是有一定标准的,基于建筑图纸的屋顶自动识别技术也是基于这一标准而开发,本发明实施例采用的国家建筑制图标准为《建筑制图统一标准》(GB50104-2010)。
2、线段的起点与终点
参见图1A至图1B所示,是本发明实施例提供的一种基于建筑图纸的柱和墙自动识别方法的关于线段的起点与终点的定义示意图,分为两种情况:线段垂直于X轴和线段不垂直于X轴。
如图1A所示,线段AB垂直于X轴,端点为A和B,端点A和B的横坐标相同,比较端点A和B的纵坐标的大小,纵坐标较小的端点设定为线段的起点,纵坐标较大的端点设定为线段的终点,即端点B为起点,端点A为终点。
如图1B所示,线段A1B1和线段A2B2不垂直于X轴,端点分别为A1和B1、A2和B2,只需比较端点A1和B1、端点A2和B2的横坐标的大小,横坐标较小的端点设定为线段的起点,横坐标较大的端点设定为线段的终点,即线段A1B1的端点A1为起点,端点B1为终点,线段A2B2的端点B2为起点,端点A2为终点。
3、Envelope对象
参见图2所示,是本发明实施例提供的一种基于建筑图纸的柱和墙自动识别方法的关于Envelope对象的定义示意图,在本发明实施例中,每一个空间要素都对应一个Envelope对象,它定义了一个空间要素的空间范围,由(Xmin,Ymin)、(Xmin,Ymax)、(Xmax,Ymax)、(Xmax,Ymin)四个点构成,是每一个要素的最小外接矩形。
4、判断点是否在多边形内
从目标点出发引一条射线,若这条射线和多边形所有边的交点个数是奇数,则该目标点在多边形内部;若是偶数,则该目标点在多边形外部。
参见图3A至图3B所示,是本发明实施例提供的一种基于建筑图纸的柱和墙自动识别方法的关于判断点是否在多边形内的说明示意图,设目标点为A3(x,y),求出多边形的Envelope对象,从目标点A3(x,y)出发引一条射线与多边形的Envelope对象相交于点B3(Xmax,y),判断线段A3B3与多边形所有边的交点个数,若是奇数,则目标点A3(x,y)在多边形内部,如图3A所示;若是偶数,则目标点A3(x,y)在多边形外部,如图3B所示。
5、线段共线
共线是指两条线段在同一条直线上或平行的两条线段之间的距离在一定阈值之内。
参见图4A至图4B所示,是本发明实施例提供的一种基于建筑图纸的柱和墙自动识别方法的关于线段共线的说明示意图,线段A4B4端点为A4(x1,y1)和B4(x2,y2),线段A5B5端点为A5(x3,y3)和B5(x4,y4),端点A4(x1,y1)和B4(x2,y2)之间横坐标的差值的绝对值为d1=|x1-x2|,端点A5(x3,y3)和B5(x4,y4)之间横坐标的差值的绝对值为d2=|x3-x4|。
若d1和d2的值均小于或等于阈值0.0001m,则认为两条线段均垂直于X轴,如图4A所示,两条线段之间的距离为D=|x1-x3|。
若d1和d2的值均大于阈值0.0001m,则认为两条线段均不垂直于X轴,如图4B所示,计算出两条线段的斜率分别为
和
两条线段的截距分别为b1=y1-k1*x1和b2=y3-k2*x3,此时两条线段之间的距离即为线段A5B5的任一端点到线段A4B4的距离,即
若上述求得的距离D值小于阈值0.01m,且任意一条线段上的一点在另一条线段上,则认为两条线段共线。
6、线段相交
如果两条线段相交,则两条线段必然互相跨立,或两条线段中某条线段的某个端点正好落在另一条线段上。
参见图5A至图5B所示,是本发明实施例提供的一种基于建筑图纸的柱和墙自动识别方法的关于线段相交的说明示意图,线段A6B6端点为A6(x5,y5)和B6(x6,y6),线段A7B7端点为A7(x7,y7)和B7(x8,y8)。
如图5A所示,定义向量a为(x6-x5,y6-y5),向量b为(x7-x5,y7-y5),计算向量a与向量b的叉积a*b=(x6-x5)*(y7-y5)-(x7-x5)*(y6-y5),若a*b>0,则向量a在向量b的顺时针方向;若a*b<0,则向量a在向量b的逆时针方向;若a*b=0,则向量a与向量b共线。
同理,如图5B所示,定义向量a为(x6-x5,y6-y5),向量c为(x8-x5,y8-y5),计算向量a与向量c的叉积a*c,若a*c>0,则向量a在向量c的顺时针方向;若a*c<0,则向量a在向量c的逆时针方向;若a*c=0,则向量a与向量c共线。
计算向量a与向量b的叉积和向量a与向量c的叉积的乘积(a*b)*(a*c),则有:
若(a*b)*(a*c)>0,则向量b与向量c均在向量a的同一侧,即线段A7B7的两个端点在线段A6B6的同一侧;
若(a*b)*(a*c)<0,则向量b与向量c均在向量a的不同侧,即线段A7B7的两个端点在线段A6B6的不同侧;
若(a*b)*(a*c)=0,则向量b与向量c中至少有一个向量与向量a同向,即线段A7B7的两个端点中至少有一个端点在线段A6B6所在的直线上,需要进一步判断线段A7B7是否有端点正好落在线段A6B6上。
同理,判断线段A6B6的两个端点是否在线段A7B7的不同侧。
若任意一条线段的两个端点在另一条线段的不同侧,则两条线段互相跨立,认为两条线段相交。
若两条线段中某条线段的某个端点正好落在另一条线段上,则认为两条线段相交。
否则,认为两条线段不相交。
7、判断点是否在线段上
根据数学原理,已知直线的方程为A0*x+B0*y+C0=0,点A8坐标为(x9,y9),则点A8到直线的距离为
基于此判断点与线段的关系。
参见图6所示,是本发明实施例提供的一种基于建筑图纸的柱和墙自动识别方法的关于判断点是否在线段上的说明示意图,首先判断点A8(x9,y9)是否在线段的Envelope对象内,若点A8(x9,y9)在线段的Envelope对象内,则根据公式求出点A8(x9,y9)到线段的距离d值,若求得的距离d值小于阈值0.005m,则认为点A8(x9,y9)在线段上。
8、具有共同端点的线段夹角
参见图7所示,是本发明实施例提供的一种基于建筑图纸的柱和墙自动识别方法的关于具有共同端点的线段夹角的说明示意图,两条线段的端点分别为A9(x10,y10)和B91(x11,y11)、A9(x10,y10)和B92(x12,y12),具有共同端点A9(x10,y10),则两条线段的夹角为:
9、图元
图元是指建筑图纸中用于表示每一个建筑对象的图形。
10、属性信息
对于线段,其属性信息主要包括起点、终点和点数;对于弧线,其属性信息主要包括弧心、半径、起点和终点;对于圆,其属性信息主要包括圆心和半径。
10、点集
点集是指由具有坐标数据的点组成的集合。
定义并说明了上述标准以及技术术语后,下面对本发明实施例的技术方案进行具体介绍。
参见图8所示,是本发明提供的一种基于建筑图纸的柱和墙自动识别方法的一个优选实施例的方法流程图,包括步骤S11至步骤S15:
步骤S11、读取柱所在图层和墙所在图层的信息以获取所有所述图层中所有图元的属性信息以及端点的坐标数据;
步骤S12、根据所述柱所在图层中每一个表示柱的图元找出所有所述柱的柱线的端点的坐标数据对应写入一个柱点集;
步骤S13、根据所述墙所在图层中每一段墙线的属性信息以及端点的坐标数据对所有所述墙线进行处理得到所有新墙线;
步骤S14、根据所有所述新墙线的属性信息以及端点的坐标数据判断所有的闭合多边形墙线是否与柱相连,若不相连,则找出所述闭合多边形墙线的端点的坐标数据对应写入一个墙点集;若相连,则找出所述闭合多边形墙线和所述柱连接在一起形成的墙柱图元的端点的坐标数据对应写入一个墙柱点集;
步骤S15、将每一个所述柱点集中的所有端点按顺时针或逆时针顺序连接成一个柱轮廓线并输出,将每一个所述墙点集中的所有端点按找出的顺序依次连接成的封闭线段作为墙轮廓线输出,将每一个所述墙柱点集中的所有端点按找出的顺序依次连接成的封闭线段作为墙柱轮廓线输出。
具体的,步骤S11中图元的属性信息以及端点的坐标数据为组成图元的图形的属性信息以及端点的坐标数据,主要包括线段、弧线和圆的属性信息以及线段、弧线和圆的端点的坐标数据。
具体的,步骤S12根据表示柱的图元的属性信息判断柱的形状,根据表示柱的图元的端点的坐标数据找出组成柱的柱线的端点的坐标数据,将找出的不同柱的柱线的端点的坐标数据分别对应写入不同的柱点集。
具体的,步骤S13根据墙线的属性信息判断墙线的形状,根据墙线的端点的坐标数据判断是否有墙线相连且共线,从而对所有的墙线进行预处理得到新墙线。
具体的,步骤S14根据处理得到的新墙线的属性信息以及端点的坐标数据判断闭合多边形墙线是否与柱相连,对于不同的不与柱相连的闭合多边形墙线,按一定的顺序找出组成闭合多边形墙线的端点的坐标数据分别对应写入不同的墙点集,对于不同的与柱相连的闭合多边形墙线,将闭合多边形墙线和柱连接在一起形成的墙柱图元作为一个整体进行识别,按一定的顺序找出不同的墙柱图元的端点的坐标数据分别对应写入不同的墙柱点集。
具体的,步骤S15分别将根据不同的表示柱的图元得到的不同的柱点集中的所有端点按顺序依次连接生成不同的柱轮廓线并输出,分别将找出的不同的墙点集中的所有端点按顺序依次连接生成不同的墙轮廓线并输出,分别将找出的不同的墙柱点集中的所有端点按顺序依次连接生成不同的墙柱轮廓线并输出。
需要说明的是,所有的柱轮廓线、墙轮廓线以及墙柱轮廓线为本发明实施例提供的一种基于建筑图纸的柱和墙自动识别方法的识别结果,而通过基于建筑图纸的柱和墙自动识别方法处理得到所有的柱轮廓线、墙轮廓线以及墙柱轮廓线的端点坐标数据以用于建筑对象柱和墙的三维建模。
参见图9所示,是本发明提供的一种基于建筑图纸的柱和墙自动识别方法的步骤S12的一个优选实施例的具体流程图,所述根据所述柱所在图层中每一个表示柱的图元找出所有所述柱的柱线的端点的坐标数据对应写入一个柱点集,对于每一个所述柱,具体包括步骤S1201至步骤S1203:
步骤S1201、根据表示所述柱的图元的属性信息以及端点的坐标数据判断所述柱为圆形还是矩形;
步骤S1202、若所述柱为圆形,则求出所述圆形的内接正N边形并找出所述内接正N边形的顶点的坐标数据,将所述内接正N边形的顶点的坐标数据写入所述柱点集;其中,N不等于4;
步骤S1203、若所述柱为矩形,则找出所述矩形的顶点的坐标数据,将所述矩形的顶点的坐标数据写入所述柱点集。
具体的,步骤S1202中内接正N边形的顶点的坐标数据为表示圆形柱的柱线的端点的坐标数据,步骤S1203中矩形的顶点的坐标数据为表示矩形柱的柱线的端点的坐标数据。
需要说明的是,通过对每一个柱均执行步骤S1201至步骤S1203以找出所有柱的柱线的端点的坐标数据分别对应写入一个柱点集。
结合图10A至图10C所示,是本发明提供的一种基于建筑图纸的柱和墙自动识别方法的步骤S12的一个优选实施例的示意图,在建筑图纸中,柱的形状一般分为圆形和矩形两类。
对于圆形柱(如图10A所示),在识别时用多棱柱来表示,表示圆形柱的图元为圆形,首先需要求出圆形的内接正N边形,N的取值根据实际需要来确定,且N的取值越大,多棱柱与圆形柱的拟合程度越高,然后找出内接正N边形的顶点1~顶点N的坐标数据,则顶点1~顶点N的坐标数据为表示圆形柱的柱线的端点的坐标数据。
对于矩形柱,由于绘图方式不同,表示矩形柱的图元又可以分为多线段矩形和由四段首尾相连的线段组成的矩形,其中,多线段矩形(如图10B所示)的每两条边共用一个顶点,只需找出顶点1~顶点4的坐标数据,则顶点1~顶点4的坐标数据为表示矩形柱的柱线的端点的坐标数据;而由四段首尾相连的线段组成的矩形(如图10C所示)的每条边均有两个端点,但是这四条边可以通过端点2和端点3相连、端点4和端点5相连、端点6和端点7相连以及端点8和端点1相连组成矩形,因此需要找出端点2和端点3中的任意一个端点、端点4和端点5中的任意一个端点、端点6和端点7中的任意一个端点以及端点8和端点1中的任意一个端点的坐标数据,则端点2和端点3中的任意一个端点、端点4和端点5中的任意一个端点、端点6和端点7中的任意一个端点以及端点8和端点1中的任意一个端点的坐标数据为表示矩形柱的柱线的端点的坐标数据。
在一个优选实施例中,所述根据所述墙所在图层中每一段墙线的属性信息以及端点的坐标数据对所有所述墙线进行处理得到所有新墙线,对于每一段所述墙线,通过以下步骤对所述墙线进行处理得到所述新墙线:
判断所有所述墙线中是否存在墙线与所述墙线相连且共线;
若不存在墙线与所述墙线相连且共线,则保留所述墙线作为所述新墙线;
若存在墙线与所述墙线相连且共线,则对相连且共线的墙线进行处理得到所述新墙线。
具体的,根据墙线的端点的坐标数据判断是否有墙线相连且共线,对于不与其他墙线相连且共线的墙线,不作任何处理,直接保留原墙线作为新墙线,对于所有相连且共线的墙线,需要进行相应的处理以得到新墙线,并用新墙线相应代替原来相连且共线的墙线。
需要说明的是,通过对每一段墙线均执行上述步骤以对所有未处理的墙线进行处理得到新墙线。
参见图11所示,是本发明提供的对相连且共线的墙线进行处理得到新墙线的一个优选实施例的具体流程图,所述若存在墙线与所述墙线相连且共线,则对相连且共线的墙线进行处理得到所述新墙线,具体包括步骤S1311至步骤S1315:
步骤S1311、判断相连且共线的墙线的起点的坐标数据是否相同;
步骤S1312、当相连且共线的墙线的起点的坐标数据相同时,判断相连且共线的墙线的终点的坐标数据是否相同;
步骤S1313、若相连且共线的墙线的终点的坐标数据相同,则保留相连且共线的墙线中的任意一段墙线作为所述新墙线;
步骤S1314、若相连且共线的墙线的终点的坐标数据不相同,则计算相连且共线的墙线的长度,找出长度最大的墙线作为所述新墙线;
步骤S1315、当相连且共线的墙线的起点的坐标数据不相同时,比较相连且共线的墙线的所有端点的横坐标的大小,由所有所述端点中横坐标最小的端点和横坐标最大的端点连接生成所述新墙线。
在本实施例中,所述若存在墙线与所述墙线相连且共线,则对相连且共线的墙线进行处理得到所述新墙线,还包括:
当相连且共线的墙线的起点的坐标数据不相同时,若相连且共线的墙线的所有端点的横坐标相同,则比较相连且共线的墙线的所有端点的纵坐标的大小,由所有所述端点中纵坐标最小的端点和纵坐标最大的端点连接生成所述新墙线。
结合图12A至图12D所示,是本发明提供的对相连且共线的墙线进行处理得到新墙线的一个优选实施例的示意图,假设相连且共线的墙线有两段,当相连且共线的墙线超过两段时,处理方法相同,图中墙线L1和墙线L2相连且共线,为了表示清楚,墙线L1和墙线L2之间有一定的距离,其中,墙线L1的起点为端点1,终点为端点2,墙线L2的起点为端点3,终点为端点4。
当相连且共线的墙线的起点的坐标数据相同时,如图12A和图12B所示,端点1和端点3的坐标数据相同,则判断端点2和端点4的坐标数据是否相同,若端点2和端点4的坐标数据相同,如图12A所示,则保留墙线L1和墙线L2中的任意一段墙线作为新墙线,若保留墙线L1作为新墙线,则用新墙线L1代替共线的墙线L1和墙线L2;若端点2和端点4的坐标数据不同,如图12B所示,则计算墙线L1和墙线L2的长度,墙线L2的长度较大,则保留墙线L2作为新墙线,并用新墙线L2代替共线的墙线L1和墙线L2。
当相连且共线的墙线的起点的坐标数据不相同时,如图12C和图12D所示,端点1和端点3的坐标数据不相同,比较墙线L1和墙线L2的所有端点的横坐标的大小,由所有端点中横坐标最小的端点和横坐标最大的端点连接生成新墙线,如图12C所示,端点1~端点4中横坐标最小的端点为端点1,横坐标最大的端点为端点2,则由端点1和端点2连接生成新墙线12,并用新墙线12代替共线的墙线L1和墙线L2;如图12D所示,端点1~端点4中横坐标最小的端点为端点1,横坐标最大的端点为端点4,则由端点1和端点4连接生成新墙线14,并用新墙线14代替共线的墙线L1和墙线L2。
参见图13所示,是本发明提供的对墙柱图元进行处理的一个优选实施例的具体流程图,对于每一个与柱相连的闭合多边形墙线,在找出所述闭合多边形墙线和所述柱连接在一起形成的墙柱图元的端点的坐标数据对应写入一个墙柱点集之前,还包括对所述墙柱图元进行处理,具体包括步骤S1401至步骤S1403:
步骤S1401、当所述闭合多边形墙线的墙线与所述柱的柱线相交时,求出所述墙线和所述柱线的交点的坐标数据,由所述交点和所述墙线在所述柱外的端点连接生成新线段;
步骤S1402、当所述闭合多边形墙线的墙线与所述柱的柱线共线时,比较共线的墙线和柱线的所有端点的横坐标或纵坐标的大小,由所有所述端点中横坐标最小的端点和横坐标最大的端点连接生成新线段或由所有所述端点中纵坐标最小的端点和纵坐标最大的端点连接生成新线段;
步骤S1403、则所述墙柱图元由所述闭合多边形墙线的所有墙线中不与所述柱的柱线相交且不与所述柱的柱线共线的墙线、所述柱的所有柱线中不与所述闭合多边形墙线的墙线共线的柱线以及生成的新线段连接组成。
具体的,步骤S1401中生成的新线段用来相应代替闭合多边形墙线的所有墙线中与柱线相交的墙线,步骤S1402中生成的新线段用来相应代替共线的闭合多边形墙线的墙线与柱的柱线。
需要说明的是,通过对每一个墙柱图元均执行步骤S1401至步骤S1403以对所有未处理的墙柱图元进行处理。
在本实施例中,所述当所述闭合多边形墙线的墙线与所述柱的柱线相交时,求出所述墙线和所述柱线的交点的坐标数据,由所述交点和所述墙线在所述柱外的端点连接生成新线段,具体包括:
判断所述交点的个数为1个还是2个;
若所述交点的个数为1个,则由所述交点和所述墙线在所述柱外的端点连接生成新线段;
若所述交点的个数为2个,则由所述墙线的一个端点与距离较小的交点连接生成新线段,由所述墙线的另一个端点与另一个交点连接生成新线段。
结合图14A至图14E所示,是本发明提供的对墙柱图元进行处理的一个优选实施例的示意图,这里分别将闭合多边形墙线的所有墙线中与柱线相交或与柱线共线的墙线单独表示,如图14A和图14B所示,墙线L为闭合多边形墙线的所有墙线中与柱线相交的墙线,墙线L包括端点1和端点2,如图14C、图14D和图14E所示,墙线L为闭合多边形墙线的所有墙线中与柱线L0共线的墙线,墙线L包括端点1和端点2,柱线L0包括端点3和端点4,为了表示清楚,图中对与柱线共线的墙线加粗处理。
当闭合多边形墙线的墙线L与柱的柱线相交时,求出墙线L和柱线的交点的坐标数据,并判断交点的个数为1个还是2个,若交点的个数为1个,如图14A所示,墙线L和柱线的交点只有交点3,并且墙线L的端点1在柱内,端点2在柱外,则由交点3和墙线L在柱外的端点2连接生成新线段32,并用新线段32代替墙线L;若交点的个数为2个,如图14B所示,墙线L和柱线的交点包括交点4和交点5,并且交点4到墙线L的端点1的距离较小,交点5到墙线L的端点2的距离较小,则由墙线L的端点1与交点4连接生成新线段14,由墙线L的端点2与交点5连接生成新线段25,并用新线段14和新线段25代替墙线L。
当闭合多边形墙线的墙线L与柱的柱线L0共线时,包括三种共线情况,墙线L包含柱线L0、柱线L0包含墙线L以及墙线L和柱线L0部分重叠,不存在包含关系,比较墙线L和柱线L0的所有端点的横坐标(或纵坐标)的大小,由所有端点中横坐标最小的端点和横坐标最大的端点连接生成新线段(或由所有所述端点中纵坐标最小的端点和纵坐标最大的端点连接生成新线段),如图14C所示,墙线L包含柱线L0,端点1~端点4中横坐标最小的端点为端点1,横坐标最大的端点为端点2,则由端点1和端点2连接生成新线段12,并用新线段12代替共线的墙线L和柱线L0;如图14D所示,柱线L0包含墙线L,端点1~端点4中横坐标最小的端点为端点3,横坐标最大的端点为端点4,则由端点3和端点4连接生成新线段34,并用新线段34代替共线的墙线L和柱线L0;如图14E所示,墙线L和柱线L0部分重叠,不存在包含关系,端点1~端点4中横坐标最小的端点为端点3,横坐标最大的端点为端点2,则由端点3和端点2连接生成新线段32,并用新线段32代替共线的墙线L和柱线L0。
参见图15所示,是本发明提供的一种基于建筑图纸的柱和墙自动识别方法的步骤S14的一个优选实施例的具体流程图,对于每一个不与柱相连的闭合多边形墙线或所述墙柱图元,通过步骤S1411至步骤S1416找出所述闭合多边形墙线或所述墙柱图元的端点的坐标数据对应写入一个墙点集或墙柱点集:
步骤S1411、找出所述闭合多边形墙线或所述墙柱图元的所有端点中横坐标或纵坐标最小或最大的端点设为初始起点,并将所述初始起点的坐标数据写入所述墙点集或所述墙柱点集;
步骤S1412、以所述初始起点横坐标减X为横坐标,以所述初始起点纵坐标为纵坐标设一辅助点,以所述初始起点为中心点,控制连接所述初始起点和所述辅助点的线段绕中心点顺时针或逆时针旋转;其中,X为正数;
步骤S1413、找出所述线段旋转角度最小或最大时与所述线段重合且与中心点相连的线段,并将找出的线段的端点的坐标数据写入所述墙点集或所述墙柱点集;
步骤S1414、判断当前写入所述墙点集或所述墙柱点集的所述端点是否为所述初始起点;
步骤S1415、若当前写入所述墙点集或所述墙柱点集的所述端点不为所述初始起点,则以当前写入所述墙点集或所述墙柱点集的所述端点为中心点,控制连接当前写入所述墙点集或所述墙柱点集的所述端点和前一个写入所述墙点集或所述墙柱点集的端点的线段绕中心点继续顺时针或逆时针旋转,并返回步骤S1413;以及,
步骤S1416、若当前写入所述墙点集或所述墙柱点集的所述端点为所述初始起点,则找出所述闭合多边形墙线或所述墙柱图元的端点的坐标数据写入所述墙点集或所述墙柱点集的过程结束。
具体的,步骤S1412中若控制连接初始起点和辅助点的线段绕中心点顺时针旋转,则后续执行步骤S1415时均控制连接当前写入墙点集或墙柱点集的端点和前一个写入墙点集或墙柱点集的端点的线段绕中心点继续顺时针旋转;步骤S1412中若控制连接初始起点和辅助点的线段绕中心点逆时针旋转,则后续执行步骤S1415时均控制连接当前写入墙点集或墙柱点集的端点和前一个写入墙点集或墙柱点集的端点的线段绕中心点继续逆时针旋转。
具体的,步骤S1413中若找出线段旋转角度最小时与线段重合且与中心点相连的线段,则后续执行步骤1413时均找出线段旋转角度最小时与线段重合且与中心点相连的线段;步骤S1413中若找出线段旋转角度最大时与线段重合且与中心点相连的线段,则后续执行步骤1413时均找出线段旋转角度最大时与线段重合且与中心点相连的线段。
需要说明的是,步骤S1413中找出线段旋转角度最小或最大时与线段重合且与中心点相连的线段,这里寻找与旋转线段重合的线段不包括旋转线段本身;找出的线段与中心点相连具体指找出的线段的一个端点的坐标数据与中心点的坐标数据相同,则将找出的线段的另一个端点的坐标数据写入墙点集或墙柱点集。
具体的,步骤S1414根据当前写入墙点集或墙柱点集的端点的坐标数据和初始起点的坐标数据是否相同判断当前写入墙点集或墙柱点集的端点是否为初始起点。
在本实施例中,所述初始起点为横坐标或纵坐标最小或最大的端点,若有多个端点横坐标或纵坐标相等且都最小或最大,则所述初始起点为横坐标或纵坐标相等且都最小或最大的多个端点中纵坐标或横坐标最小或最大的端点。
需要说明的是,通过对每一个不与柱相连的闭合多边形墙线或墙柱图元均执行步骤S1411至步骤S1416以找出所有不与柱相连的闭合多边形墙线或墙柱图元的端点的坐标数据分别对应写入一个墙点集或墙柱点集。
结合图16A至图16E所示,是本发明提供的一种基于建筑图纸的柱和墙自动识别方法的步骤S14的一个优选实施例的示意图,这里以闭合多边形墙线和柱连接在一起形成的墙柱图元为例进行说明,如图16A所示,闭合多边形墙线由墙线12、墙线23、墙线34、墙线45、墙线56、墙线67、墙线78和墙线81依次连接组成,柱由柱线910、柱线1011、柱线1112和柱线129依次连接组成,其中,墙线45与柱线910和柱线1112相交,墙线67与柱线129共线。
对于与柱相连的闭合多边形墙线,在找出闭合多边形墙线和柱连接在一起形成的墙柱图元的端点的坐标数据对应写入墙柱点集之前,需要对墙柱图元进行处理,参考图13和图14A至图14E所提供的实施例,墙线45与柱线910和柱线1112的交点包括交点13和交点14,并且交点13到墙线45的端点4的距离较小,交点14到墙线45的端点5的距离较小,则由墙线45的端点4与交点13连接生成新线段413,由墙线45的端点5与交点14连接生成新线段514,并用新线段413和新线段514代替墙线45;墙线67包含柱线129,端点6、端点7、端点9和端点12(横坐标相同,比较纵坐标)中纵坐标最小的端点为端点6,纵坐标最大的端点为端点7,则由端点6和端点7连接生成新线段67,并用新线段67代替共线的墙线67和柱线129;处理后的墙柱图元由闭合多边形墙线的所有墙线中不与柱的柱线相交且不与柱的柱线共线的墙线12、墙线23、墙线34、墙线56、墙线78、墙线81、柱的所有柱线中不与闭合多边形墙线的墙线共线的柱线910、柱线1011、柱线1112以及生成的新线段413、新线段514、新线段67连接组成,如图16B所示。
处理后的墙柱图元包括端点1~端点8、端点10、端点11、端点13和端点14,首先找出横坐标最小(横坐标最大或纵坐标最小或纵坐标最大的情况同理)的端点设为初始起点,由于横坐标最小的端点有两个,分别为端点1和端点8,因此比较端点1和端点8的纵坐标,找出初始起点为纵坐标较小的端点8,将初始起点8的坐标数据写入对应的墙柱点集。
以初始起点8的横坐标减X为横坐标,以初始起点8的纵坐标为纵坐标设一辅助点P,X的取值根据实际需要来确定,以初始起点8为中心点,控制连接初始起点8和辅助点P的线段8P绕中心点8顺时针旋转(逆时针旋转的情况同理)。
找到与线段8P重合且与中心点8相连的线段包括线段81和线段78,并且线段8P在顺时针旋转过程中形成夹角∠P81和夹角∠P87,比较两个夹角的大小,夹角∠P81最小,则找出线段8P旋转角度最小时(最大时的情况同理)与线段8P重合且与中心点8相连的线段为线段81,将线段81的端点1的坐标数据写入墙柱点集,如图16C所示。
判断当前写入墙柱点集的端点1不为初始起点8,则以当前写入墙柱点集的端点1为中心点,控制连接当前写入墙柱点集的端点1和前一个写入墙柱点集的端点8的线段18绕中心点1继续顺时针旋转,找到与线段18重合且与中心点1相连的线段只有线段12,则找出线段18旋转角度最小时与线段18重合且与中心点1相连的线段为线段12,将线段12的端点2的坐标数据写入墙柱点集,如图16D所示。
判断当前写入墙柱点集的端点2是否为初始起点8,若不是,则按同样的方法继续寻找下一个符合条件的端点的坐标数据写入墙柱点集,并判断是否为初始起点8,直到当前写入墙柱点集的端点为初始起点8为止。
若当前写入墙柱点集的端点为初始起点8,则找出墙柱图元的端点的坐标数据写入墙柱点集的过程结束,找出的所有端点按顺序依次为端点8、端点1、端点2、端点3、端点4、端点13、端点10、端点11、端点14、端点5、端点6、端点7和端点8,如图16E所示。
同理,对于不同的不与柱相连的闭合多边形墙线,按一定的顺序找出组成闭合多边形墙线的端点的坐标数据分别对应写入不同的墙点集,最终将不同的墙点集中的所有端点按找出的顺序依次连接成的封闭线段作为不同的墙轮廓线输出,完成对所有的不与柱相连的闭合多边形墙线的识别;对于不同的与柱相连的闭合多边形墙线,将闭合多边形墙线和柱连接在一起形成的墙柱图元作为一个整体进行识别,按一定的顺序找出不同的墙柱图元的端点的坐标数据分别对应写入不同的墙柱点集,最终将不同的墙柱点集中的所有端点按找出的顺序依次连接成的封闭线段作为不同的墙柱轮廓线输出,完成对所有的与柱相连的闭合多边形墙线的识别。
参见图17所示,是本发明提供的将每一个柱点集中的所有端点按顺时针或逆时针顺序连接成一个柱轮廓线并输出的一个优选实施例的具体流程图,对于每一个所述柱点集,通过步骤S1501至步骤S1506将所述柱点集中的所有端点按顺时针或逆时针顺序连接成一个柱轮廓线并输出:
步骤S1501、找出所述柱点集中横坐标或纵坐标最小或最大的端点并设为初始起点;
步骤S1502、以所述初始起点横坐标减Y为横坐标,以所述初始起点纵坐标为纵坐标设一辅助点,控制以所述初始起点为起点并连接所述辅助点的射线绕所述初始起点顺时针或逆时针旋转;其中,Y为正数;
步骤S1503、找出所述射线旋转角度最小或最大时与所述射线重合的端点;
步骤S1504、判断当前找出的所述端点是否为所述初始起点;
步骤S1505、若当前找出的所述端点不为所述初始起点,则控制以当前找出的所述端点为起点并连接前一个找出的端点的射线绕当前找出的所述端点继续顺时针或逆时针旋转,并返回步骤S1503;以及,
步骤S1506、若当前找出的所述端点为所述初始起点,则将所述柱点集中的所有端点按找出的顺序依次连接成的封闭线段作为所述柱轮廓线输出。
具体的,步骤S1502中若控制以初始起点为起点并连接辅助点的射线绕初始起点顺时针旋转,则后续执行步骤S1505时均控制以当前找出的端点为起点并连接前一个找出的端点的射线绕当前找出的端点继续顺时针旋转;步骤S1502中若控制以初始起点为起点并连接辅助点的射线绕初始起点逆时针旋转,则后续执行步骤S1505时均控制以当前找出的端点为起点并连接前一个找出的端点的射线绕当前找出的端点继续逆时针旋转。
具体的,步骤S1503中若找出射线旋转角度最小时与射线重合的端点,则后续执行步骤1503时均找出射线旋转角度最小时与射线重合的端点;步骤S1503中若找出射线旋转角度最大时与射线重合的端点,则后续执行步骤1503时均找出射线旋转角度最大时与射线重合的端点。
需要说明的是,步骤S1503中找出射线旋转角度最小或最大时与射线重合的端点,这里寻找与旋转射线重合的端点不包括在旋转射线上的端点。
具体的,步骤S1504根据当前找出的端点的坐标数据和初始起点的坐标数据是否相同判断当前找出的端点是否为初始起点。
在本实施例中,所述初始起点为横坐标或纵坐标最小或最大的端点,若有多个端点横坐标或纵坐标相等且都最小或最大,则所述初始起点为横坐标或纵坐标相等且都最小或最大的多个端点中纵坐标或横坐标最小或最大的端点。
需要说明的是,通过对每一个柱点集均执行步骤S1501至步骤S1506以将所有柱点集中的端点按顺时针或逆时针顺序对应连接成一个柱轮廓线并输出。
结合图18A至图18B所示,是本发明提供的将每一个柱点集中的所有端点按顺时针或逆时针顺序连接成一个柱轮廓线并输出的一个优选实施例的示意图,这里以将柱点集中的所有端点按顺时针顺序连接成一个柱轮廓线并输出为例进行说明,按逆时针顺序连接并输出的方法同理。
如图18A所示,柱点集中的所有端点为端点1~端点4,首先找出横坐标最小(横坐标最大或纵坐标最小或纵坐标最大的情况同理)的端点并设为初始起点,由于横坐标最小的端点有两个,分别为端点1和端点4,因此比较端点1和端点4的纵坐标,找出初始起点为纵坐标较小的端点4。
以初始起点4的横坐标减Y为横坐标,以初始起点4的纵坐标为纵坐标设一辅助点Q,Y的取值根据实际需要来确定,控制以初始起点4为起点并连接辅助点Q的射线4Q绕初始起点4顺时针旋转。
找到与射线4Q重合的端点有端点1、端点2和端点3,并且射线4Q在顺时针旋转过程中形成夹角∠Q41、夹角∠Q42和夹角∠Q43,比较三个夹角的大小,夹角∠Q41最小,则找出射线4Q旋转角度最小时(最大时的情况同理)与射线4Q重合的端点为端点1,如图18A所示。
判断当前找出的端点1不为初始起点4,则控制以当前找出的端点1为起点并连接前一个找出的端点4的射线14绕当前找出的端点1继续顺时针旋转,找到与射线14重合的端点有端点2和端点3,并且射线14在顺时针旋转过程中形成夹角∠412和夹角∠413,比较两个夹角的大小,夹角∠412最小,则找出射线14旋转角度最小时与射线14重合的端点为端点2,如图18B所示。
判断当前找出的端点2是否为初始起点4,若不是,则按同样的方法继续寻找下一个符合条件的端点,并判断是否为初始起点4,直到当前找出的端点为初始起点4为止。
若当前找出的端点为初始起点4,则将柱点集中的所有端点按找出的顺序依次连接成的封闭线段作为柱轮廓线输出,所有端点按找出的顺序依次为端点4、端点1、端点2、端点3和端点4,则以端点1~端点4为顶点的矩形1234为该柱点集输出的柱轮廓线。
同理,将根据不同的表示柱的图元得到的不同的柱点集中的所有端点按顺时针或逆时针顺序连接成不同的柱轮廓线并输出,完成对所有的柱的识别。
综上,本发明实施例所提供的一种基于建筑图纸的柱和墙自动识别方法,根据柱所在图层中每一个表示柱的图元的属性信息以及端点的坐标数据识别出所有柱的柱轮廓线,根据柱所在图层和墙所在图层中所有图元的属性信息以及端点的坐标数据识别出所有不与柱相连的闭合多边形墙线的墙轮廓线以及与柱相连的闭合多边形墙线和柱连接在一起形成的墙柱图元的墙柱轮廓线,充分利用了建筑图纸所包含的信息,并且将闭合多边形墙线和柱连接的情况结合在一起进行识别,解决了现有技术在建筑图纸的识别过程中对建筑对象的识别效率低,识别精度低的问题,从而提高了建筑对象柱和墙的识别效率及识别精度。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。