基于建筑图纸的门和窗自动识别方法与流程

文档序号:14911775发布日期:2018-07-10 23:37阅读:384来源:国知局

本发明涉及建筑图纸中的建筑对象识别技术领域,尤其涉及一种基于建筑图纸的门和窗自动识别方法。



背景技术:

随着城市建设和计算机技术的快速发展,应用计算机完成建筑物的设计工作已经成为常用手段,并且从二维建筑图纸的设计逐渐转变为三维建筑模型的设计。

现有技术如翟锐的《AutoCAD建筑工程图的读取_识别与三维重建》、袁庆萍的《建筑图三维重建技术研究》、刘川的《基于ObjectARX与Google Earth的城市三维建模系统研究》和刘励静的《利用二维图形数据构建三维场景技术的研究》等,使用的技术方案基本一致,都是先读取建筑图纸,用计算机图像处理的算法识别图元,获取建筑对象的二维数据,再根据预先设置好的标高,输出到三维引擎生成建筑物的三维模型。

但是,现有技术在建筑图纸的识别过程中未能充分利用建筑图纸所包含的信息,识别对象过少,并且没有对建筑图纸的细节进行识别,导致建筑对象的识别效率低,识别精度低。



技术实现要素:

本发明实施例所要解决的技术问题在于,提供一种基于建筑图纸的门和窗自动识别方法,能够提高建筑对象门和窗的识别效率及识别精度。

为了解决上述技术问题,本发明实施例提供了一种基于建筑图纸的门和窗自动识别方法,包括以下步骤:

读取门和窗所在图层的信息以获取所述门和窗所在图层中所有图元的属性信息以及端点的坐标数据;

根据所有所述图元的属性信息以及端点的坐标数据找出所有表示门或表示窗的图元;

读取墙所在图层的信息以获取所述墙所在图层中所有墙线的属性信息以及端点的坐标数据;

根据每一个表示所述门的图元和所有所述墙线的属性信息以及端点的坐标数据找出所有所述门的门线,并找出组成所述门的门墙的端点的坐标数据对应写入一个门墙点集;

根据每一个表示所述窗的图元和所有所述墙线的属性信息以及端点的坐标数据找出所有所述窗的窗线,并找出组成所述窗的窗墙的端点的坐标数据对应写入一个窗墙点集;

根据每一个所述门墙点集对应生成一个门墙轮廓线并输出,根据每一个所述窗墙点集对应生成一个窗墙轮廓线并输出。

由于建筑图纸中所有的门墙和窗墙都是由墙组成的,因此,本发明实施例提供的一种基于建筑图纸的门和窗自动识别方法是以识别后的墙为基础对门墙和窗墙进行识别。

所有的门线、窗线、门墙轮廓线以及窗墙轮廓线为本发明实施例提供的一种基于建筑图纸的门和窗自动识别方法的识别结果,而通过基于建筑图纸的门和窗自动识别方法处理得到所有的门线、窗线、门墙轮廓线以及窗墙轮廓线的端点的坐标数据以用于建筑对象门和窗的三维建模。

与现有技术相比,本发明实施例提供了一种基于建筑图纸的门和窗自动识别方法,通过读取门和窗所在图层的信息以找出所有表示门或表示窗的图元,通过读取墙所在图层的信息以根据每一个表示门的图元找出所有门的门线,并找出组成门的门墙的端点的坐标数据对应写入一个门墙点集,以及根据每一个表示窗的图元找出所有窗的窗线,并找出组成窗的窗墙的端点的坐标数据对应写入一个窗墙点集,最后根据每一个门墙点集对应生成一个门墙轮廓线并输出,根据每一个窗墙点集对应生成一个窗墙轮廓线并输出,可以解决现有技术在建筑图纸的识别过程中对建筑对象的识别效率低,识别精度低的问题,从而提高了建筑对象门和窗的识别效率及识别精度。

进一步地,所述门包括扇形门、人防门和推拉门,所述窗包括直形窗、弧形窗和飘窗;其中,所述飘窗包括第一类飘窗和第二类飘窗;

则所述根据所有所述图元的属性信息以及端点的坐标数据找出所有表示门或表示窗的图元,具体包括:

对于所述扇形门,找出所有所述图元中包括弧线且弧线的一端与线段相连的图元作为表示所述扇形门的图元;

对于所述人防门,找出所有所述图元中包括两对或三对平行线段且任意一对平行线段中的一条线段不与任何线段相连而另一条线段与另一对平行线段或另两对平行线段中的线段相连的图元作为表示所述人防门的图元;

对于所述推拉门,找出所有所述图元中包括两个矩形且不包括弧线的图元作为表示所述推拉门的图元;

对于所述直形窗,找出所有所述图元中包括三条或四条相互平行的线段且任意一条线段不与任何线段相连的图元作为表示所述直形窗的图元;

对于所述弧形窗,找出所有所述图元中包括三条或四条弧心相同、起始角度相同且终止角度相同的弧线的图元作为表示所述弧形窗的图元;

对于所述第一类飘窗,找出所有所述图元中包括四条相互平行的长度相等的线段且其中一条线段到其他线段的距离的最小值在预设的第一距离阈值之内的图元作为表示所述第一类飘窗的图元;

对于所述第二类飘窗,找出所有所述图元中分别包括三条和四条相互平行的长度不相等的两组线段且其中一组线段中的三条线段分别与另一组线段中的三条线段对应相连组成三条折线段的图元作为表示所述第二类飘窗的图元。

进一步地,所述根据每一个表示所述门的图元和所有所述墙线的属性信息以及端点的坐标数据找出所有所述门的门线,并找出组成所述门的门墙的端点的坐标数据对应写入一个门墙点集,对于每一个所述扇形门,具体包括:

判断表示所述扇形门的图元中包括几条弧线;

若包括一条弧线,则判断与弧线的一端相连的线段为一条还是两条,若为一条,则以连接弧线不与线段相连的一端和线段不与弧线相连的一端的线段作为所述扇形门的初始门线;若为两条,则计算与弧线的一端相连的两条线段的长度,以连接弧线不与线段相连的一端和长度较大的线段不与弧线相连的一端的线段作为所述扇形门的初始门线;

若包括两条弧线,判断与每一条弧线的一端相连的线段为一条还是两条,若均为一条,则以连接两条线段不与弧线相连的一端的线段作为所述扇形门的初始门线;若均为两条,则计算与弧线的一端相连的四条线段的长度,以连接两条长度较大的线段不与弧线相连的一端的线段作为所述扇形门的初始门线;

若包括四条弧线,则找出表示所述扇形门的图元中两端分别与弧线相连的两条线段并求出两条线段的中点,以连接两个所述中点的线段作为所述扇形门的初始门线;

找出所有所述墙线中与所述初始门线垂直且分别与所述初始门线的两端的距离最小的两段墙线;

当所述初始门线的两端分别与距离最小的墙线的距离小于预设的第二距离阈值时,将所述初始门线延长至与找出的所述两段墙线相交并求出两个交点,以连接两个所述交点的线段作为所述扇形门的门线;

将找出的所述两段墙线的端点的坐标数据写入所述扇形门的门墙点集。

进一步地,所述根据每一个表示所述门的图元和所有所述墙线的属性信息以及端点的坐标数据找出所有所述门的门线,并找出组成所述门的门墙的端点的坐标数据对应写入一个门墙点集,对于每一个所述人防门,具体包括:

判断表示所述人防门的图元中包括几对平行线段;

若包括两对平行线段,则找出所述两对平行线段中与线段相连且与距离最小的墙线形成的角度为直角或平角的一条线段作为所述人防门的初始门线;

若包括三对平行线段,则找出所述三对平行线段中两端分别与线段相连的一条线段作为所述人防门的初始门线;

找出所有所述墙线中与所述初始门线垂直且分别与所述初始门线的两端的距离最小的两段墙线;

当所述初始门线的两端分别与距离最小的墙线的距离小于预设的第二距离阈值时,求出找出的所述两段墙线的中点,以连接两个所述中点的线段作为所述人防门的门线;

将找出的所述两段墙线的端点的坐标数据写入所述人防门的门墙点集。

进一步地,所述根据每一个表示所述门的图元和所有所述墙线的属性信息以及端点的坐标数据找出所有所述门的门线,并找出组成所述门的门墙的端点的坐标数据对应写入一个门墙点集,对于每一个所述推拉门,具体包括:

判断表示所述推拉门的图元中的两个矩形是否有共线边且相连且与墙线相交;

若两个矩形有共线边且相连且与墙线相交,则求出两个矩形与墙线的所有交点,以连接两个矩形的共线边与墙线的交点的线段作为所述推拉门的门线;

若两个矩形有共线边且不相连且与墙线相交,则求出两个矩形与墙线的所有交点,以连接两个矩形长度较大的边与墙线的交点的线段作为所述推拉门的门线;

若两个矩形有共线边且相连且不与墙线相交,则找出表示所述推拉门的图元中与两个矩形的共线边平行且与两个矩形的距离最小值小于预设的第二距离阈值的一条线段,找出所有所述墙线中与所述线段垂直且分别与所述线段的两端的距离最小的两段墙线,当所述线段的两端分别与距离最小的墙线的距离小于预设的第三距离阈值时,将所述线段延长至与找出的所述两段墙线相交并求出两个交点,以连接两个所述交点的线段作为所述推拉门的门线;

若两个矩形无共线边且不相连且与墙线相交,则求出分别与两个矩形相交的两段墙线的中点,以连接两个所述中点的线段作为所述推拉门的门线;

将所述推拉门的门线的两端所在的两段墙线的端点的坐标数据写入所述推拉门的门墙点集。

进一步地,所述根据每一个表示所述窗的图元和所有所述墙线的属性信息以及端点的坐标数据找出所有所述窗的窗线,并找出组成所述窗的窗墙的端点的坐标数据对应写入一个窗墙点集,对于每一个所述直形窗,具体包括:

找出表示所述直形窗的图元中的任意一条线段作为所述直形窗的初始窗线;

找出所有所述墙线中与所述初始窗线垂直且分别与所述初始窗线的两端的距离最小的两段墙线;

当所述初始窗线的两端分别与距离最小的墙线的距离小于预设的第二距离阈值时,将所述初始窗线延长至与找出的所述两段墙线相交并求出两个交点,以连接两个所述交点的线段作为所述直形窗的窗线;

将找出的所述两段墙线的端点的坐标数据写入所述直形窗的窗墙点集。

进一步地,所述根据每一个表示所述窗的图元和所有所述墙线的属性信息以及端点的坐标数据找出所有所述窗的窗线,并找出组成所述窗的窗墙的端点的坐标数据对应写入一个窗墙点集,对于每一个所述弧形窗,具体包括:

找出表示所述弧形窗的图元中的任意一条弧线作为所述弧形窗的初始窗线;

找出所有所述墙线中与表示所述弧形窗的图元中的所有弧线的两端分别连接形成的线段平行且距离最小的两段墙线;

当所述初始窗线的两端分别与距离最小的墙线的距离小于预设的第二距离阈值时,将所述初始窗线延长至与找出的所述两段墙线相交并求出两个交点,以所述初始窗线的两端分别延长至两个所述交点后的弧线作为所述弧形窗的窗线;

将表示所述弧形窗的图元中半径最大的弧线和半径最小的弧线的两端分别延长至与距离最小的墙线相交并求出四个交点;

将所述半径最大的弧线和所述半径最小的弧线分别转换成多线段并求出多线段的所有顶点;

将求出的四个交点以及多线段的所有顶点的坐标数据写入所述弧形窗的窗墙点集。

进一步地,所述根据每一个表示所述窗的图元和所有所述墙线的属性信息以及端点的坐标数据找出所有所述窗的窗线,并找出组成所述窗的窗墙的端点的坐标数据对应写入一个窗墙点集,对于每一个所述第一类飘窗,具体包括:

找出表示所述第一类飘窗的图元中到其他线段的距离的最小值在所述第一距离阈值之内的线段作为基准线段,以到所述基准线段的距离最大的线段作为所述第一类飘窗的初始窗线;

找出所有所述墙线中与所述初始窗线垂直且分别与所述初始窗线的两端的距离最小的两段墙线;

当所述初始窗线的两端分别与距离最小的墙线的距离小于预设的第二距离阈值时,将所述初始窗线延长至与找出的所述两段墙线相交并求出两个交点,以连接两个所述交点的线段作为所述第一类飘窗的窗线;

将所述基准线段的两端分别延长至与距离最小的柱线或墙线相交并求出两个交点;

将求出的所有交点的坐标数据写入所述第一类飘窗的窗墙点集。

进一步地,所述根据每一个表示所述窗的图元和所有所述墙线的属性信息以及端点的坐标数据找出所有所述窗的窗线,并找出组成所述窗的窗墙的端点的坐标数据对应写入一个窗墙点集,对于每一个所述第二类飘窗,具体包括:

找出表示所述第二类飘窗的图元的三条折线段中长度最大的折线段作为所述第二类飘窗的初始窗线;

找出所有所述墙线中与所述初始窗线的两条线段分别垂直且分别与所述初始窗线的两端的距离最小的两段墙线;

当所述初始窗线的两端分别与距离最小的墙线的距离小于预设的第二距离阈值时,将所述初始窗线的两端分别延长至与找出的所述两段墙线相交并求出两个交点,以所述初始窗线的两端分别延长至两个所述交点后的折线段作为所述第二类飘窗的窗线;

将表示所述第二类飘窗的图元的包括四条线段的一组线段中不与另一组线段相连的线段的两端分别延长至与距离最小的柱线或墙线相交并求出第一组交点;

将表示所述第二类飘窗的图元的三条折线段中长度最小的折线段的两端分别延长至与距离最小的柱线或墙线相交并求出第二组交点;

将所述第二类飘窗的窗线的顶点、所述第一组交点和所述第二组交点的坐标数据写入所述第二类飘窗的窗墙点集。

进一步地,所述根据每一个所述门墙点集对应生成一个门墙轮廓线并输出,根据每一个所述窗墙点集对应生成一个窗墙轮廓线并输出,具体包括:

将每一个所述门墙点集中的所有端点按顺时针或逆时针顺序连接成一个门墙轮廓线并输出;

将每一个所述窗墙点集中的所有端点按顺时针或逆时针顺序连接成一个窗墙轮廓线并输出。

附图说明

图1是本发明实施例提供的一种基于建筑图纸的门和窗自动识别方法的关于Envelope对象的定义示意图;

图2是本发明实施例提供的一种基于建筑图纸的门和窗自动识别方法的关于判断点是否在线段上的说明示意图;

图3A至图3B是本发明实施例提供的一种基于建筑图纸的门和窗自动识别方法的关于线段相交的说明示意图;

图4A至图4B是本发明实施例提供的一种基于建筑图纸的门和窗自动识别方法的关于线段共线的说明示意图;

图5是本发明实施例提供的一种基于建筑图纸的门和窗自动识别方法的关于具有共同端点的线段夹角的说明示意图;

图6是本发明实施例1提供的一种基于建筑图纸的门和窗自动识别方法的方法流程图;

图7是本发明实施例2提供的一种基于建筑图纸的门和窗自动识别方法的步骤S12的具体流程图;

图8是本发明实施例3提供的一种基于建筑图纸的门和窗自动识别方法的步骤S14的具体流程图;

图9A至图9D是本发明实施例3提供的一种基于建筑图纸的门和窗自动识别方法的步骤S14的示意图;

图10是本发明实施例4提供的一种基于建筑图纸的门和窗自动识别方法的步骤S14的具体流程图;

图11A至图11B是本发明实施例4提供的一种基于建筑图纸的门和窗自动识别方法的步骤S14的示意图;

图12是本发明实施例5提供的一种基于建筑图纸的门和窗自动识别方法的步骤S14的具体流程图;

图13A至图13D是本发明实施例5提供的一种基于建筑图纸的门和窗自动识别方法的步骤S14的示意图;

图14是本发明实施例6提供的一种基于建筑图纸的门和窗自动识别方法的步骤S15的具体流程图;

图15是本发明实施例6提供的一种基于建筑图纸的门和窗自动识别方法的步骤S15的示意图;

图16是本发明实施例7提供的一种基于建筑图纸的门和窗自动识别方法的步骤S15的具体流程图;

图17是本发明实施例7提供的一种基于建筑图纸的门和窗自动识别方法的步骤S15的示意图;

图18是本发明实施例8提供的一种基于建筑图纸的门和窗自动识别方法的步骤S15的具体流程图;

图19是本发明实施例8提供的一种基于建筑图纸的门和窗自动识别方法的步骤S15的示意图;

图20是本发明实施例9提供的一种基于建筑图纸的门和窗自动识别方法的步骤S15的具体流程图;

图21是本发明实施例9提供的一种基于建筑图纸的门和窗自动识别方法的步骤S15的示意图;

图22A至图22B是本发明实施例10提供的一种基于建筑图纸的门和窗自动识别方法的步骤S16的示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本技术领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

为了使本发明实施例描述的更加清楚,首先对本发明实施例中使用的标准以及技术术语进行定义和说明。

1、制图标准

建筑图纸中各建筑对象的画法是有一定标准的,基于建筑图纸的屋顶自动识别技术也是基于这一标准而开发,本发明实施例采用的国家建筑制图标准为《建筑制图统一标准》(GB50104-2010)。

2、Envelope对象

参见图1所示,是本发明实施例提供的一种基于建筑图纸的门和窗自动识别方法的关于Envelope对象的定义示意图,在本发明实施例中,每一个空间要素都对应一个Envelope对象,它定义了一个空间要素的空间范围,由(Xmin,Ymin)、(Xmin,Ymax)、(Xmax,Ymax)、(Xmax,Ymin)四个点构成,是每一个要素的最小外接矩形。

3、判断点是否在线段上

根据数学原理,已知直线的方程为A*x+B*y+C=0,点A坐标为(x,y),则点A到直线的距离为基于此判断点与线段的关系。

参见图2所示,是本发明实施例提供的一种基于建筑图纸的门和窗自动识别方法的关于判断点是否在线段上的说明示意图,首先判断点A(x,y)是否在线段的Envelope对象内,若点A(x,y)在线段的Envelope对象内,则根据公式求出点A1(x,y)到线段的距离d值,若求得的距离d值小于阈值0.005m,则认为点A(x,y)在线段上。

4、线段相交

如果两条线段相交,则两条线段必然互相跨立,或两条线段中某条线段的某个端点正好落在另一条线段上。

参见图3A至图3B所示,是本发明实施例提供的一种基于建筑图纸的门和窗自动识别方法的关于线段相交的说明示意图,线段A1B1端点为A1(x1,y1)和B1(x2,y2),线段A2B2端点为A2(x3,y3)和B2(x4,y4)。

如图3A所示,定义向量a为(x2-x1,y2-y1),向量b为(x3-x1,y3-y1),计算向量a与向量b的叉积a*b=(x2-x1)*(y3-y1)-(x3-x1)*(y2-y1),若a*b>0,则向量a在向量b的顺时针方向;若a*b<0,则向量a在向量b的逆时针方向;若a*b=0,则向量a与向量b共线。

同理,如图3B所示,定义向量a为(x2-x1,y2-y1),向量c为(x4-x1,y4-y1),计算向量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的同一侧,即线段A2B2的两个端点在线段A1B1的同一侧;

若(a*b)*(a*c)<0,则向量b与向量c均在向量a的不同侧,即线段A2B2的两个端点在线段A1B1的不同侧;

若(a*b)*(a*c)=0,则向量b与向量c中至少有一个向量与向量a同向,即线段A2B2的两个端点中至少有一个端点在线段A1B1所在的直线上,需要进一步判断线段A2B2是否有端点正好落在线段A1B1上。

同理,判断线段A1B1的两个端点是否在线段A2B2的不同侧。

若任意一条线段的两个端点在另一条线段的不同侧,则两条线段互相跨立,认为两条线段相交。

若两条线段中某条线段的某个端点正好落在另一条线段上,则认为两条线段相交。

否则,认为两条线段不相交。

5、线段共线

共线是指两条线段在同一条直线上或平行的两条线段之间的距离在一定阈值之内。

参见图4A至图4B所示,是本发明实施例提供的一种基于建筑图纸的门和窗自动识别方法的关于线段共线的说明示意图,线段A3B3端点为A3(x5,y5)和B3(x6,y6),线段A4B4端点为A4(x7,y7)和B4(x8,y8),端点A3(x5,y5)和B3(x6,y6)之间横坐标的差值的绝对值为d1=|x5-x6|,端点A4(x7,y7)和B4(x8,y8)之间横坐标的差值的绝对值为d2=|x7-x8|。

若d1和d2的值均小于或等于阈值0.0001m,则认为两条线段均垂直于X轴,如图4A所示,两条线段之间的距离为D=|x5-x7|。

若d1和d2的值均大于阈值0.0001m,则认为两条线段均不垂直于X轴,如图4B所示,计算出两条线段的斜率分别为k1=(y6-y5)/(x6-x5)和k2=(y8-y7)/(x8-x7),两条线段的截距分别为b1=y5-k1*x5和b2=y7-k2*x7,此时两条线段之间的距离即为线段A4B4的任一端点到线段A3B3的距离,即

若上述求得的距离D值小于阈值0.01m,且任意一条线段上的一点在另一条线段上,则认为两条线段共线。

6、具有共同端点的线段夹角

参见图5所示,是本发明实施例提供的一种基于建筑图纸的门和窗自动识别方法的关于具有共同端点的线段夹角的说明示意图,两条线段的端点分别为A5(x9,y9)和B51(x10,y10)、A5(x9,y9)和B52(x11,y11),具有共同端点A5(x9,y9),则两条线段的夹角为:

7、图元

图元是指建筑图纸中用于表示每一个建筑对象的图形。

8、属性信息

对于线段,其属性信息主要包括起点、终点和点数;对于弧线,其属性信息主要包括弧心、半径、起点和终点;对于圆,其属性信息主要包括圆心和半径。

9、点集

点集是指由具有坐标数据的点组成的集合。

定义并说明了上述标准以及技术术语后,下面对本发明实施例的技术方案进行具体介绍。

参见图6所示,是本发明实施例1提供的一种基于建筑图纸的门和窗自动识别方法的方法流程图,包括步骤S11至步骤S16:

步骤S11、读取门和窗所在图层的信息以获取所述门和窗所在图层中所有图元的属性信息以及端点的坐标数据;

步骤S12、根据所有所述图元的属性信息以及端点的坐标数据找出所有表示门或表示窗的图元;

步骤S13、读取墙所在图层的信息以获取所述墙所在图层中所有墙线的属性信息以及端点的坐标数据;

步骤S14、根据每一个表示所述门的图元和所有所述墙线的属性信息以及端点的坐标数据找出所有所述门的门线,并找出组成所述门的门墙的端点的坐标数据对应写入一个门墙点集;

步骤S15、根据每一个表示所述窗的图元和所有所述墙线的属性信息以及端点的坐标数据找出所有所述窗的窗线,并找出组成所述窗的窗墙的端点的坐标数据对应写入一个窗墙点集;

步骤S16、根据每一个所述门墙点集对应生成一个门墙轮廓线并输出,根据每一个所述窗墙点集对应生成一个窗墙轮廓线并输出。

具体的,步骤S11中图元的属性信息以及端点的坐标数据为组成图元的图形的属性信息以及端点的坐标数据,主要包括线段、弧线和圆的属性信息以及线段、弧线和圆的端点的坐标数据。

具体的,步骤S12根据每一个图元的属性信息判断组成图元的图形的形状,根据每一个图元的端点的坐标数据判断组成图元的图形是否相连,从而找出所有表示门的图元或所有表示窗的图元。

具体的,步骤S14根据不同的表示门的图元找出不同的门的门线,并找出组成不同的门的门墙的端点的坐标数据分别对应写入不同的门墙点集,从而找出所有的门对应的门线和门墙点集。

具体的,步骤S15根据不同的表示窗的图元找出不同的窗的窗线,并找出组成不同的窗的窗墙的端点的坐标数据分别对应写入不同的窗墙点集,从而找出所有的窗对应的窗线和窗墙点集。

具体的,步骤S16分别根据不同的表示门的图元得到的不同的门墙点集对应生成不同的门墙轮廓线并输出,分别根据不同的表示窗的图元得到的不同的窗墙点集对应生成不同的窗墙轮廓线并输出。

需要说明的是,由于建筑图纸中所有的门墙和窗墙都是由墙组成的,因此,本发明实施例提供的一种基于建筑图纸的门和窗自动识别方法是以识别后的墙为基础对门墙和窗墙进行识别。

需要说明的是,所有的门线、窗线、门墙轮廓线以及窗墙轮廓线为本发明实施例提供的一种基于建筑图纸的门和窗自动识别方法的识别结果,而通过基于建筑图纸的门和窗自动识别方法处理得到所有的门线、窗线、门墙轮廓线以及窗墙轮廓线的端点的坐标数据以用于建筑对象门和窗的三维建模。

参见图7所示,是本发明实施例2提供的一种基于建筑图纸的门和窗自动识别方法的步骤S12的具体流程图,所述门包括扇形门、人防门和推拉门,所述窗包括直形窗、弧形窗和飘窗;其中,所述飘窗包括第一类飘窗和第二类飘窗;

则所述根据所有所述图元的属性信息以及端点的坐标数据找出所有表示门或表示窗的图元,具体包括步骤S1201至步骤S1207:

步骤S1201、对于所述扇形门,找出所有所述图元中包括弧线且弧线的一端与线段相连的图元作为表示所述扇形门的图元;

步骤S1202、对于所述人防门,找出所有所述图元中包括两对或三对平行线段且任意一对平行线段中的一条线段不与任何线段相连而另一条线段与另一对平行线段或另两对平行线段中的线段相连的图元作为表示所述人防门的图元;

步骤S1203、对于所述推拉门,找出所有所述图元中包括两个矩形且不包括弧线的图元作为表示所述推拉门的图元;

步骤S1204、对于所述直形窗,找出所有所述图元中包括三条或四条相互平行的线段且任意一条线段不与任何线段相连的图元作为表示所述直形窗的图元;

步骤S1205、对于所述弧形窗,找出所有所述图元中包括三条或四条弧心相同、起始角度相同且终止角度相同的弧线的图元作为表示所述弧形窗的图元;

步骤S1206、对于所述第一类飘窗,找出所有所述图元中包括四条相互平行的长度相等的线段且其中一条线段到其他线段的距离的最小值在预设的第一距离阈值之内的图元作为表示所述第一类飘窗的图元;

步骤S1207、对于所述第二类飘窗,找出所有所述图元中分别包括三条和四条相互平行的长度不相等的两组线段且其中一组线段中的三条线段分别与另一组线段中的三条线段对应相连组成三条折线段的图元作为表示所述第二类飘窗的图元。

具体的,步骤S1201中表示扇形门的图元由弧线和线段(或者弧线和矩形)组成,弧线的一端与线段相连具体指所有弧线的一个端点的坐标数据与线段的一个端点的坐标数据相同。

具体的,步骤S1202中表示人防门的图元由两对或三对平行线段组成,另一条线段与另一对平行线段或另两对平行线段中的线段相连具体指另一条线段的端点的坐标数据与另一对平行线段或另两对平行线段中的线段的端点的坐标数据相同,并且相连的两条线段形成的夹角小于90度或大于270度。

具体的,步骤S1203中表示推拉门的图元由两个矩形或由两个矩形和一条线段组成,不包括弧线,并且矩形的长度较大的边减去长度较小的边所得的差值大于长度较长的边长的一半。

具体的,步骤S1204中表示直形窗的图元由三条或四条相互平行的线段组成,并且相邻线段的间距相近。

具体的,步骤S1205中表示弧形窗的图元由三条或四条弧线组成,并且所有弧线的半径相近。

具体的,步骤S1206中表示第一类飘窗的图元由四条相互平行的长度相等的线段组成,其中三条线段间的距离相近,第四条线段与这三条线段的距离的最小值在预设的第一距离阈值之内,并且四条线段的两端分别在同一直线上。

具体的,步骤S1207中表示第二类飘窗的图元由两组线段组成,其中一组线段包括三条相互平行且长度不相等的线段,另一组线段包括四条相互平行且长度不相等的线段,两组线段中的三条线段分别对应相连组成三条对应平行且长度不相等的折线段。

需要说明的是,根据图元的属性信息以及端点的坐标数据判断图元符合扇形门、人防门、推拉门、直形窗、弧形窗、第一类飘窗和第二类飘窗中表示哪一个建筑对象的图元的特点,从而确定图元为表示扇形门、人防门、推拉门、直形窗、弧形窗、第一类飘窗或第二类飘窗的图元,对所有的图元进行同样的判断从而找出所有表示门或表示窗的图元。

结合图8和图9A至图9D所示,其中,图8是本发明实施例3提供的一种基于建筑图纸的门和窗自动识别方法的步骤S14的具体流程图,图9A至图9D是本发明实施例3提供的一种基于建筑图纸的门和窗自动识别方法的步骤S14的示意图,所述根据每一个表示所述门的图元和所有所述墙线的属性信息以及端点的坐标数据找出所有所述门的门线,并找出组成所述门的门墙的端点的坐标数据对应写入一个门墙点集,对于每一个所述扇形门,具体包括步骤S1411至步骤S1417:

步骤S1411、判断表示所述扇形门的图元中包括几条弧线;

步骤S1412、若包括一条弧线,则判断与弧线的一端相连的线段为一条还是两条,若为一条,则以连接弧线不与线段相连的一端和线段不与弧线相连的一端的线段作为所述扇形门的初始门线;若为两条,则计算与弧线的一端相连的两条线段的长度,以连接弧线不与线段相连的一端和长度较大的线段不与弧线相连的一端的线段作为所述扇形门的初始门线;

步骤S1413、若包括两条弧线,判断与每一条弧线的一端相连的线段为一条还是两条,若均为一条,则以连接两条线段不与弧线相连的一端的线段作为所述扇形门的初始门线;若均为两条,则计算与弧线的一端相连的四条线段的长度,以连接两条长度较大的线段不与弧线相连的一端的线段作为所述扇形门的初始门线;

步骤S1414、若包括四条弧线,则找出表示所述扇形门的图元中两端分别与弧线相连的两条线段并求出两条线段的中点,以连接两个所述中点的线段作为所述扇形门的初始门线;

步骤S1415、找出所有所述墙线中与所述初始门线垂直且分别与所述初始门线的两端的距离最小的两段墙线;

步骤S1416、当所述初始门线的两端分别与距离最小的墙线的距离小于预设的第二距离阈值时,将所述初始门线延长至与找出的所述两段墙线相交并求出两个交点,以连接两个所述交点的线段作为所述扇形门的门线;

步骤S1417、将找出的所述两段墙线的端点的坐标数据写入所述扇形门的门墙点集。

具体的,步骤S1412若表示扇形门的图元中包括一条弧线,则扇形门为单开扇形门;若与弧线的一端相连的线段为一条,则表示扇形门的图元由弧线和线段组成,如图9A所示,表示扇形门的图元由弧线12和线段13组成,弧线12的端点1与线段13的端点1相连,则以连接弧线12不与线段13相连的端点2和线段13不与弧线12相连的端点3的线段23作为扇形门的初始门线;若与弧线的一端相连的线段为两条,则表示所述扇形门的图元由弧线和矩形组成,如图9B所示,表示扇形门的图元由弧线12和矩形1354组成,弧线12的端点1与线段13的端点1以及线段14的端点1相连,则计算与弧线13的端点1相连的线段13和线段14的长度,线段13长度较大,以连接弧线12不与线段相连的端点2和长度较大的线段13不与弧线12相连的端点3的线段23作为扇形门的初始门线。

具体的,步骤S1413若表示扇形门的图元中包括两条弧线,则扇形门为对开扇形门;若与每一条弧线的一端相连的线段均为一条,则表示扇形门的图元由两条弧线和两条线段组成,如图9C所示,表示扇形门的图元由弧线12、弧线24、线段13和线段45组成,弧线12的端点1与线段13的端点1相连,弧线24的端点4与线段45的端点4相连,则以连接线段13和线段45不与弧线相连的端点3和端点5的线段35作为扇形门的初始门线;若与每一条弧线的一端相连的线段均为两条,则表示扇形门的图元由两条弧线和两个矩形组成,同理,计算与弧线的一端相连的四条线段的长度,以连接两条长度较大的线段不与弧线相连的一端的线段作为扇形门的初始门线。

具体的,步骤S1414若表示扇形门的图元中包括四条弧线,则扇形门为双向对开扇形门;如图9D所示,表示扇形门的图元由四条弧线和四条线段组成,弧线12的端点1与线段13的端点1相连,弧线24的端点4与线段45的端点4相连,弧线26的端点6与线段36的端点6相连,弧线27的端点7与线段57的端点7相连,则找出两端分别与弧线相连的两条线段为线段16和线段47,求出两条线段的中点分别为点3和点5,以连接点3和点5的线段35作为扇形门的初始门线;扇形门由四条弧线和四个矩形组成的情况同理,这里不再赘述。

具体的,步骤S1415首先找出所有墙线中与初始门线垂直的墙线,然后分别计算初始门线的两端到与初始门线垂直的所有墙线的距离,找出分别与初始门线的两端的距离最小的两段墙线,如图9所示,找出的两段墙线分别为墙线W1W2和墙线W3W4,墙线W1W2和墙线W3W4与初始门线垂直且分别与初始门线的两端的距离最小。

具体的,步骤S1416判断初始门线的两端分别与距离最小的墙线的距离是否小于预设的第二距离阈值,若小于,则将初始门线延长至与找出的两段墙线相交并求出两个交点,以连接两个交点的线段作为扇形门的门线;若不小于,则返回错误消息,说明画图有误应修改;如图9A所示,若初始门线23的端点2到墙线W3W4的距离和端点3到墙线W1W2的距离小于预设的第二距离阈值(一般设置为0.1m),则将初始门线23延长至与墙线W1W2和墙线W3W4相交并求出两个交点分别为交点4和交点5,以连接交点4和交点5的线段45作为扇形门的门线;同理,图9B中以连接交点6和交点7的线段67作为扇形门的门线,图9C中以连接交点6和交点7的线段67作为扇形门的门线,图9D中以连接交点8和交点9的线段89作为扇形门的门线。

具体的,步骤S1417将找出的墙线W1W2和墙线W3W4的端点W1至端点W4的坐标数据写入扇形门的门墙点集。

需要说明的是,步骤S1411首先判断表示扇形门的图元中包括几条弧线,步骤S1412、步骤S1413和步骤S1414则分别对包括一条弧线、两条弧线和四条弧线的情况进行相应处理,其他情况则返回错误消息,说明画图有误应修改。

需要说明的是,通过对每一个表示扇形门的图元均执行步骤S1411至步骤S1417以找出所有扇形门的门线和所有组成扇形门的门墙的端点的坐标数据分别对应写入不同的扇形门的门墙点集。

结合图10和图11A至图11B所示,其中,图10是本发明实施例4提供的一种基于建筑图纸的门和窗自动识别方法的步骤S14的具体流程图,图11A至图11B是本发明实施例4提供的一种基于建筑图纸的门和窗自动识别方法的步骤S14的示意图,所述根据每一个表示所述门的图元和所有所述墙线的属性信息以及端点的坐标数据找出所有所述门的门线,并找出组成所述门的门墙的端点的坐标数据对应写入一个门墙点集,对于每一个所述人防门,具体包括步骤S1421至步骤S1426:

步骤S1421、判断表示所述人防门的图元中包括几对平行线段;

步骤S1422、若包括两对平行线段,则找出所述两对平行线段中与线段相连且与距离最小的墙线形成的角度为直角或平角的一条线段作为所述人防门的初始门线;

步骤S1423、若包括三对平行线段,则找出所述三对平行线段中两端分别与线段相连的一条线段作为所述人防门的初始门线;

步骤S1424、找出所有所述墙线中与所述初始门线垂直且分别与所述初始门线的两端的距离最小的两段墙线;

步骤S1425、当所述初始门线的两端分别与距离最小的墙线的距离小于预设的第二距离阈值时,求出找出的所述两段墙线的中点,以连接两个所述中点的线段作为所述人防门的门线;

步骤S1426、将找出的所述两段墙线的端点的坐标数据写入所述人防门的门墙点集。

具体的,步骤S1422若表示人防门的图元中包括两对平行线段,则人防门为单开人防门,如图11A所示,表示人防门的图元由两对平行线段组成,分别为线段D1和D2、线段D3和D4,其中,线段D1和D2中的线段D1不与任何线段相连而线段D2与线段D3和D4中的线段D3相连,线段D3和D4中的线段D4不与任何线段相连而线段D3与线段D1和D2中的线段D2相连,并且线段D2和线段D3相连形成的夹角a小于90度,则两对平行线段中与线段相连的线段为线段D2和线段D3,与线段D2和线段D3距离最小的墙线为墙线W1W2,与距离最小的墙线W1W2形成的角度为直角的一条线段为线段D2,以线段D2作为人防门的初始门线。

具体的,步骤S1423若表示人防门的图元中包括三对平行线段,则人防门为对开人防门,如图11B所示,表示人防门的图元由三对平行线段组成,分别为线段D1和D2、线段D3和D4、线段D5和D6,其中,线段D1和D2中的线段D1不与任何线段相连而线段D2与线段D3和D4中的线段D3以及线段D5和D6中的线段D5相连,线段D3和D4中的线段D4不与任何线段相连而线段D3与线段D1和D2中的线段D2相连,线段D5和D6中的线段D6不与任何线段相连而线段D5与线段D1和D2中的线段D2相连,并且线段D2和线段D3相连形成的夹角a以及线段D2和线段D5相连形成的夹角b都小于90度,则三对平行线段中两端分别与线段相连的一条线段为线段D2,以线段D2作为人防门的初始门线。

具体的,步骤S1424首先找出所有墙线中与初始门线垂直的墙线,然后分别计算初始门线的两端到与初始门线垂直的所有墙线的距离,找出分别与初始门线的两端的距离最小的两段墙线,如图11所示,找出的两段墙线分别为墙线W1W2和墙线W3W4,墙线W1W2和墙线W3W4与初始门线垂直且分别与初始门线的两端的距离最小。

具体的,步骤S1425判断初始门线的两端分别与距离最小的墙线的距离是否小于预设的第二距离阈值,若小于,则求出找出的两段墙线的中点,以连接两个中点的线段作为人防门的门线;若不小于,则返回错误消息,说明画图有误应修改;如图11A所示,若初始门线D2的两端分别到墙线W1W2和墙线W3W4的距离小于预设的第二距离阈值(一般设置为0.1m),则求出找出的墙线W1W2和墙线W3W4的中点分别为点1和点2,以连接点1和点2的线段12作为人防门的门线;同理,图11B中以连接点3和点4的线段34作为人防门的门线。

具体的,步骤S1426将找出的墙线W1W2和墙线W3W4的端点W1至端点W4的坐标数据写入人防门的门墙点集。

需要说明的是,步骤S1421首先判断表示人防门的图元中包括几对平行线段,步骤S1422和步骤S1423则分别对包括两对平行线段和三对平行线段的情况进行相应处理,其他情况则返回错误消息,说明画图有误应修改。

需要说明的是,通过对每一个表示人防门的图元均执行步骤S1421至步骤S1426以找出所有人防门的门线和所有组成人防门的门墙的端点的坐标数据对应写入不同的人防门的门墙点集。

结合图12和图13A至图13D所示,其中,图12是本发明实施例5提供的一种基于建筑图纸的门和窗自动识别方法的步骤S14的具体流程图,图13A至图13D是本发明实施例5提供的一种基于建筑图纸的门和窗自动识别方法的步骤S14的示意图,所述根据每一个表示所述门的图元和所有所述墙线的属性信息以及端点的坐标数据找出所有所述门的门线,并找出组成所述门的门墙的端点的坐标数据对应写入一个门墙点集,对于每一个所述推拉门,具体包括步骤S1431至步骤S1436:

步骤S1431、判断表示所述推拉门的图元中的两个矩形是否有共线边且相连且与墙线相交;

步骤S1432、若两个矩形有共线边且相连且与墙线相交,则求出两个矩形与墙线的所有交点,以连接两个矩形的共线边与墙线的交点的线段作为所述推拉门的门线;

步骤S1433、若两个矩形有共线边且不相连且与墙线相交,则求出两个矩形与墙线的所有交点,以连接两个矩形长度较大的边与墙线的交点的线段作为所述推拉门的门线;

步骤S1434、若两个矩形有共线边且相连且不与墙线相交,则找出表示所述推拉门的图元中与两个矩形的共线边平行且与两个矩形的距离最小值小于预设的第二距离阈值的一条线段,找出所有所述墙线中与所述线段垂直且分别与所述线段的两端的距离最小的两段墙线,当所述线段的两端分别与距离最小的墙线的距离小于预设的第三距离阈值时,将所述线段延长至与找出的所述两段墙线相交并求出两个交点,以连接两个所述交点的线段作为所述推拉门的门线;

步骤S1435、若两个矩形无共线边且不相连且与墙线相交,则求出分别与两个矩形相交的两段墙线的中点,以连接两个所述中点的线段作为所述推拉门的门线;

步骤S1436、将所述推拉门的门线的两端所在的两段墙线的端点的坐标数据写入所述推拉门的门墙点集。

具体的,步骤S1432若表示推拉门的图元中的两个矩形有共线边且相连且与墙线相交,则推拉门的形式如图13A所示,矩形1234的边23和矩形5678的边58共线,且两个矩形相连,矩形1234与墙线W1W2相交,矩形5678与墙线W3W4相交,求出两个矩形与墙线的所有交点分别为交点1、交点2、交点5和交点6,两个矩形的共线边与墙线W1W2和墙线W3W4的交点分别为交点2和交点5,则以连接交点2和交点5的线段25作为推拉门的门线。

具体的,步骤S1433若表示推拉门的图元中的两个矩形有共线边且不相连且与墙线相交,则推拉门的形式如图13B所示,矩形1234的边14和矩形5678的边58、矩形1234的边23和矩形5678的边67共线,且两个矩形不相连,矩形1234与墙线W1W2相交,矩形5678与墙线W3W4相交,求出两个矩形与墙线的所有交点分别为交点9、交点10、交点11和交点12,两个矩形长度较大的边与墙线的交点分别为交点10和交点12,则以连接交点10和交点12的线段1012作为推拉门的门线。

具体的,步骤S1434若表示推拉门的图元中的两个矩形有共线边且相连且不与墙线相交,则推拉门的形式如图13C所示,矩形1234的边23和矩形5678的边58共线,且两个矩形相连,但不与墙线相交,找出与两个矩形的共线边平行且与两个矩形的距离最小值小于预设的第二距离阈值(一般设置为0.1m)的一条线段,则找出的线段为线段D1,找出所有墙线中与线段D1垂直且分别与线段D1的两端的距离最小的两段墙线分别为墙线W1W2和墙线W3W4,若线段D1的两端分别到墙线W1W2和墙线W3W4的距离小于预设的第三距离阈值(一般设置为0.1m),则将线段D1延长至与墙线W1W2和墙线W3W4相交并求出两个交点分别为交点9和交点10,以连接交点9和交点10的线段910作为推拉门的门线;若线段D1的两端分别到墙线W1W2和墙线W3W4的距离不小于预设的第三距离阈值,则返回错误消息,说明画图有误应修改。

具体的,步骤S1435若表示推拉门的图元中的两个矩形无共线边且不相连且与墙线相交,则推拉门的形式如图13D所示,矩形1234和矩形5678无共线边且不相连,矩形1234与墙线W1W2相交,矩形5678与墙线W3W4相交,则求出墙线W1W2和墙线W3W4的中的分别为点9和点10,以连接点9和点10的线段910作为推拉门的门线。

具体的,步骤S1436将推拉门的门线的两端所在的墙线W1W2和墙线W3W4的端点W1至端点W4的坐标数据写入推拉门的门墙点集。

需要说明的是,步骤S1431首先判断表示推拉门的图元中的两个矩形是否有共线边且相连且与墙线相交,步骤S1432、步骤S1433、步骤S1434和步骤S1435则分别对两个矩形有共线边且相连且与墙线相交、有共线边且不相连且与墙线相交、有共线边且相连且不与墙线相交和无共线边且不相连且与墙线相交的情况进行相应处理,其他情况则返回错误消息,说明画图有误应修改。

需要说明的是,通过对每一个表示推拉门的图元均执行步骤S1431至步骤S1436以找出所有推拉门的门线和所有组成推拉门的门墙的端点的坐标数据分别对应写入不同的推拉门的门墙点集。

结合图14和图15所示,其中,图14是本发明实施例6提供的一种基于建筑图纸的门和窗自动识别方法的步骤S15的具体流程图,图15是本发明实施例6提供的一种基于建筑图纸的门和窗自动识别方法的步骤S15的示意图,所述根据每一个表示所述窗的图元和所有所述墙线的属性信息以及端点的坐标数据找出所有所述窗的窗线,并找出组成所述窗的窗墙的端点的坐标数据对应写入一个窗墙点集,对于每一个所述直形窗,具体包括步骤S1511至步骤S1514:

步骤S1511、找出表示所述直形窗的图元中的任意一条线段作为所述直形窗的初始窗线;

步骤S1512、找出所有所述墙线中与所述初始窗线垂直且分别与所述初始窗线的两端的距离最小的两段墙线;

步骤S1513、当所述初始窗线的两端分别与距离最小的墙线的距离小于预设的第二距离阈值时,将所述初始窗线延长至与找出的所述两段墙线相交并求出两个交点,以连接两个所述交点的线段作为所述直形窗的窗线;

步骤S1514、将找出的所述两段墙线的端点的坐标数据写入所述直形窗的窗墙点集。

具体的,步骤S1511找出表示直形窗的图元中的任意一条线段作为直形窗的初始窗线,如图15所示,表示直形窗的图元包括四条线段,分别为线段D1、线段D2、线段D3和线段D4,这里以线段D3作为直形窗的初始窗线,以其他线段作为初始窗线的情况同理。

具体的,步骤S1512首先找出所有墙线中与初始窗线D3垂直的墙线,然后分别计算初始窗线D3的两端到与初始窗线D3垂直的所有墙线的距离,找出分别与初始窗线D3的两端的距离最小的两段墙线,则找出的两段墙线分别为墙线L1和墙线L2。

具体的,步骤S1513判断初始窗线D3的两端分别与距离最小的墙线的距离是否小于预设的第二距离阈值(一般设置为0.1m),若初始窗线D3的两端分别到墙线L1和墙线L2的距离小于预设的第二距离阈值,则将初始窗线D3延长至与墙线L1和墙线L2相交并求出两个交点分别为交点1和交点2,以连接交点1和交点2的线段12作为直形窗的窗线;若初始窗线D3的两端分别到墙线L1和墙线L2的距离不小于预设的第二距离阈值,则返回错误消息,说明画图有误应修改。

具体的,步骤S1514将找出的墙L1和墙线L2的端点W1至端点W4的坐标数据写入直形窗的窗墙点集。

需要说明的是,直形窗的初始窗线为表示直形窗的图元中的任意一条线段,具体选择哪一条线段可以根据实际需要来确定,由于基于初始窗线找出的窗线的端点的坐标数据会用于对建筑对象直形窗的三维建模,为了统一建模标准,若任意一个直形窗选择表示该直形窗的图元中的某一条线段作为初始窗线,其他所有的直形窗也选择表示对应直形窗的图元中相应位置的线段作为初始窗线。

需要说明的是,若直形窗位于建筑图纸所表示的建筑物整体的最外侧,则找出表示直形窗的图元中最外侧的线段作为直形窗的初始窗线;直形窗位于建筑图纸所表示的建筑物整体的最外侧具体指建筑物具有表示整体形状的轮廓线,直形窗位于建筑物整体的轮廓线上,当任意一个直形窗位于建筑图纸所表示的建筑物整体的最外侧时,就找出表示该直形窗的图元的中与建筑物整体的轮廓线重合的线段作为该直形窗的初始窗线,与建筑物整体的轮廓线重合的线段为表示该直形窗的图元中最外侧的线段。

需要说明的是,通过对每一个表示直形窗的图元均执行步骤S1511至步骤S1514以找出所有直形窗的窗线和所有组成直形窗的窗墙的端点的坐标数据分别对应写入不同的直形窗的窗墙点集。

结合图16和图17所示,其中,图16是本发明实施例7提供的一种基于建筑图纸的门和窗自动识别方法的步骤S15的具体流程图,图17是本发明实施例7提供的一种基于建筑图纸的门和窗自动识别方法的步骤S15的示意图,所述根据每一个表示所述窗的图元和所有所述墙线的属性信息以及端点的坐标数据找出所有所述窗的窗线,并找出组成所述窗的窗墙的端点的坐标数据对应写入一个窗墙点集,对于每一个所述弧形窗,具体包括步骤S1521至步骤S1526:

步骤S1521、找出表示所述弧形窗的图元中的任意一条弧线作为所述弧形窗的初始窗线;

步骤S1522、找出所有所述墙线中与表示所述弧形窗的图元中的所有弧线的两端分别连接形成的线段平行且距离最小的两段墙线;

步骤S1523、当所述初始窗线的两端分别与距离最小的墙线的距离小于预设的第二距离阈值时,将所述初始窗线延长至与找出的所述两段墙线相交并求出两个交点,以所述初始窗线的两端分别延长至两个所述交点后的弧线作为所述弧形窗的窗线;

步骤S1524、将表示所述弧形窗的图元中半径最大的弧线和半径最小的弧线的两端分别延长至与距离最小的墙线相交并求出四个交点;

步骤S1525、将所述半径最大的弧线和所述半径最小的弧线分别转换成多线段并求出多线段的所有顶点;

步骤S1526、将求出的四个交点以及多线段的所有顶点的坐标数据写入所述弧形窗的窗墙点集。

具体的,步骤S1521找出表示弧形窗的图元中的任意一条弧线作为弧形窗的初始窗线,如图17所示,表示弧形窗的图元包括四条弧线,分别为弧线D1、弧线D2、弧线D3和弧线D4,这里以弧线D2作为弧形窗的初始窗线,以其他弧线作为初始窗线的情况同理。

具体的,步骤S1522首先找出所有墙线中与表示弧形窗的图元中的所有弧线的两端分别连接形成的线段平行的墙线,然后分别计算初始窗线D2的两端到找出的所有墙线的距离,找出分别与初始窗线D2的两端的距离最小的两段墙线,分别为墙线L1和墙线L2。

具体的,步骤S1523判断初始窗线D2的两端分别与距离最小的墙线的距离是否小于预设的第二距离阈值(一般设置为0.1m),若初始窗线D2的两端分别到墙线L1和墙线L2的距离小于预设的第二距离阈值,则将初始窗线D2延长至与墙线L1和墙线L2相交并求出两个交点分别为交点1和交点2,以初始窗线D2的两端分别延长至两个交点后的弧线12作为弧形窗的窗线;若初始窗线D2的两端分别到墙线L1和墙线L2的距离不小于预设的第二距离阈值,则返回错误消息,说明画图有误应修改。

具体的,步骤S1524首先找出分别与表示弧形窗的图元中半径最大的弧线D4的两端距离最小的两段墙线,分别为墙线L1和墙线L2,然后将半径最大的弧线D4延长至与墙线L1和墙线L2相交,并求出两个交点分别为交点3和交点4;同理,求出半径最小的弧线D1所对应的两个交点分别为交点5和交点6。

具体的,步骤S1525首先将半径最大的弧线D4和半径最小的弧线D1分别用多线段的形式进行表示,其中,多线段的顶点个数根据实际情况来确定,并且个数越多,多线段与弧线越相似,然后求出两条多线段的所有顶点。

具体的,步骤S1526将求出的交点3至交点6的坐标数据和多线段的所有顶点的坐标数据写入弧形窗的窗墙点集。

需要说明的是,弧形窗的初始窗线为表示弧形窗的图元中的任意一条弧线,具体选择哪一条弧线可以根据实际需要来确定,由于基于初始窗线找出的窗线会用于对建筑对象弧形窗的三维建模,为了统一建模标准,若任意一个弧形窗选择表示该弧形窗的图元中的某一条弧线作为初始窗线,其他所有的弧形窗也选择表示对应弧形窗的图元中相应位置的弧线作为初始窗线。

需要说明的是,若弧形窗位于建筑图纸所表示的建筑物整体的最外侧,则找出表示弧形窗的图元中半径最大的弧线作为弧形窗的初始窗线;弧形窗位于建筑图纸所表示的建筑物整体的最外侧具体指建筑物具有表示整体形状的轮廓线,弧形窗位于建筑物整体的轮廓线上,当任意一个弧形窗位于建筑图纸所表示的建筑物整体的最外侧时,就找出表示该弧形窗的图元的中半径最大的弧线作为该弧形窗的初始窗线。

需要说明的是,通过对每一个表示弧形窗的图元均执行步骤S1521至步骤S1526以找出所有弧形窗的窗线和所有组成弧形窗的窗墙的端点的坐标数据分别对应写入不同的弧形窗的窗墙点集。

结合图18和图19所示,其中,图18是本发明实施例8提供的一种基于建筑图纸的门和窗自动识别方法的步骤S15的具体流程图,图19是本发明实施例8提供的一种基于建筑图纸的门和窗自动识别方法的步骤S15的示意图,所述根据每一个表示所述窗的图元和所有所述墙线的属性信息以及端点的坐标数据找出所有所述窗的窗线,并找出组成所述窗的窗墙的端点的坐标数据对应写入一个窗墙点集,对于每一个所述第一类飘窗,具体包括步骤S1531至步骤S1535:

步骤S1531、找出表示所述第一类飘窗的图元中到其他线段的距离的最小值在所述第一距离阈值之内的线段作为基准线段,以到所述基准线段的距离最大的线段作为所述第一类飘窗的初始窗线;

步骤S1532、找出所有所述墙线中与所述初始窗线垂直且分别与所述初始窗线的两端的距离最小的两段墙线;

步骤S1533、当所述初始窗线的两端分别与距离最小的墙线的距离小于预设的第二距离阈值时,将所述初始窗线延长至与找出的所述两段墙线相交并求出两个交点,以连接两个所述交点的线段作为所述第一类飘窗的窗线;

步骤S1534、将所述基准线段的两端分别延长至与距离最小的柱线或墙线相交并求出两个交点;

步骤S1535、将求出的所有交点的坐标数据写入所述第一类飘窗的窗墙点集。

具体的,步骤S1531找出表示第一类飘窗的图元中到其他线段的距离的最小值在第一距离阈值(一般设置为0.4m至1m)之内的线段作为基准线段,如图19所示,表示第一类飘窗的图元包括四条线段,分别为线段D1、线段D2、线段D3和线段D4,分别计算每一条线段到其他线段的距离,找出距离的最小值在0.4m至1m之内的线段为线段D1,则线段D1为基准线段,到基准线段D1的距离最大的线段为线段D4,则线段D4为第一类飘窗的初始窗线。

具体的,步骤S1532首先找出所有墙线中与初始窗线D4垂直的墙线,然后分别计算初始窗线D4的两端到与初始窗线D4垂直的所有墙线的距离,找出分别与初始窗线D4的两端的距离最小的两段墙线,则找出的两段墙线分别为墙线L1和墙线L2。

具体的,步骤S1533判断初始窗线D4的两端分别与距离最小的墙线的距离是否小于预设的第二距离阈值(一般设置为0.1m),若初始窗线D4的两端分别到墙线L1和墙线L2的距离小于预设的第二距离阈值,则将初始窗线D4延长至与墙线L1和墙线L2相交并求出两个交点分别为交点1和交点2,以连接交点1和交点2的线段12作为第一类飘窗的窗线;若初始窗线D4的两端分别到墙线L1和墙线L2的距离不小于预设的第二距离阈值,则返回错误消息,说明画图有误应修改。

具体的,步骤S1534找出分别与基准线段D1的两端距离最小的两段墙线分别为墙线L1和墙线L2,则将基准线段D1的两端分别延长至与墙线L1和墙线L2相交并求出两个交点分别为交点3和交点4。

具体的,步骤S1535将求出的所有交点包括交点1至交点4的坐标数据写入第一类飘窗的窗墙点集。

需要说明的是,通过对每一个表示第一类飘窗的图元均执行步骤S1531至步骤S1535以找出所有第一类飘窗的窗线和所有组成第一类飘窗的窗墙的端点的坐标数据分别对应写入不同的第一类飘窗的窗墙点集。

结合20和图21所示,其中,图20是本发明实施例9提供的一种基于建筑图纸的门和窗自动识别方法的步骤S15的具体流程图,图21是本发明实施例9提供的一种基于建筑图纸的门和窗自动识别方法的步骤S15的示意图,所述根据每一个表示所述窗的图元和所有所述墙线的属性信息以及端点的坐标数据找出所有所述窗的窗线,并找出组成所述窗的窗墙的端点的坐标数据对应写入一个窗墙点集,对于每一个所述第二类飘窗,具体包括步骤S1541至步骤S1546:

步骤S1541、找出表示所述第二类飘窗的图元的三条折线段中长度最大的折线段作为所述第二类飘窗的初始窗线;

步骤S1542、找出所有所述墙线中与所述初始窗线的两条线段分别垂直且分别与所述初始窗线的两端的距离最小的两段墙线;

步骤S1543、当所述初始窗线的两端分别与距离最小的墙线的距离小于预设的第二距离阈值时,将所述初始窗线的两端分别延长至与找出的所述两段墙线相交并求出两个交点,以所述初始窗线的两端分别延长至两个所述交点后的折线段作为所述第二类飘窗的窗线;

步骤S1544将表示所述第二类飘窗的图元的包括四条线段的一组线段中不与另一组线段相连的线段的两端分别延长至与距离最小的柱线或墙线相交并求出第一组交点;

步骤S1545、将表示所述第二类飘窗的图元的三条折线段中长度最小的折线段的两端分别延长至与距离最小的柱线或墙线相交并求出第二组交点;

步骤S1546、将所述第二类飘窗的窗线的顶点、所述第一组交点和所述第二组交点的坐标数据写入所述第二类飘窗的窗墙点集。

具体的,步骤S1541找出表示第二类飘窗的图元的三条折线段中长度最大的折线段作为第二类飘窗的初始窗线,如图21所示,表示第二类飘窗的图元包括两组线段,第一组线段包括线段D1、线段D2、线段D3和线段D4,第二组线段包括线段D5、线段D6和线段D7,其中,线段D2和线段D5连接于点1组成折线段D2D5,线段D3和线段D6连接于点2组成折线段D3D6,线段D4和线段D7连接于点3组成折线段D4D7,分别计算三条折线段的长度,长度最大的为折线段D4D7,则折线段D4D7为第二类飘窗的初始窗线。

具体的,步骤S1542首先找出所有墙线中与初始窗线D4D7的两条线段D4和D7分别垂直的墙线,然后分别计算初始窗线D4D7的两条线段D4和D7不相连的一端到找出的所有墙线的距离,找出分别与线段D4和线段D7不相连的一端的距离最小的两段墙线,则找出的两段墙线分别为墙线L1和墙线L2。

具体的,步骤S1543判断初始窗线D4D7的两端分别与距离最小的墙线的距离是否小于预设的第二距离阈值(一般设置为0.1m),若初始窗线D4D7的两端分别到墙线L1和墙线L2的距离小于预设的第二距离阈值,则将初始窗线D4D7的两端分别延长至与墙线L1和墙线L2相交并求出两个交点分别为交点4和交点5,以初始窗线D4D7的两端分别延长至交点4和交点5后的折线段435作为第二类飘窗的窗线;若初始窗线D4D7的两端分别到墙线L1和墙线L2的距离不小于预设的第二距离阈值,则返回错误消息,说明画图有误应修改。

具体的,步骤S1544首先找出表示第二类飘窗的图元的第一组线段中不与第二组线段相连的线段为线段D1,然后找出分别与线段D1的两端距离最小的两段墙线分别为墙线L1和墙线L3,则将线段D1的两端分别延长至与墙线L1和墙线L3相交并求出两个交点分别为交点6和交点7。

具体的,步骤S1545首先找出表示第二类飘窗的图元的三条折线段中长度最小的折线段为折线段D2D5,然后找出与折线段D2D5的两端距离最小的两段墙线分别为墙线L1和墙线L2,则将折线段D2D5的两端分别延长至与墙线L1和墙线L2相交并求出两个交点分别为交点8和交点9。

具体的,步骤S1546将第二类飘窗的窗线435的顶点、第一组交点和第二组交点的坐标数据写入第二类飘窗的窗墙点集,包括顶点4、顶点3、顶点5、交点6、交点7、交点8和交点9。

需要说明的是,通过对每一个表示第二类飘窗的图元均执行步骤S1541至步骤S1546以找出所有第二类飘窗的窗线和所有组成第二类飘窗的窗墙的端点的坐标数据分别对应写入不同的第二类飘窗的窗墙点集。

在一个优选实施例中,所述根据每一个所述门墙点集对应生成一个门墙轮廓线并输出,根据每一个所述窗墙点集对应生成一个窗墙轮廓线并输出,具体包括:

将每一个所述门墙点集中的所有端点按顺时针或逆时针顺序连接成一个门墙轮廓线并输出;

将每一个所述窗墙点集中的所有端点按顺时针或逆时针顺序连接成一个窗墙轮廓线并输出。

具体的,分别将根据不同的表示门的图元得到的不同的门墙点集中的所有端点按照顺时针顺序或逆时针顺序连接生成不同的门墙轮廓线并输出;分别将根据不同的表示窗的图元得到的不同的窗墙点集中的所有端点按照顺时针顺序或逆时针顺序连接生成不同的窗墙轮廓线并输出。

需要说明的是,通过对每一个门墙点集或每一个窗墙点集分别都执行上述步骤,以将不同的门墙点集或窗墙点集中的所有端点对应连接成不同的门墙轮廓线或窗墙轮廓线并输出,从而完成对所有门的门墙以及所有窗的窗墙的识别。

结合图22A至图22B所示,是本发明实施例10提供的一种基于建筑图纸的门和窗自动识别方法的步骤S16的示意图,这里以将一个单开扇形门的门墙点集中的所有端点按顺时针顺序(逆时针顺序的情况同理)连接成一个扇形门的门墙轮廓线并输出为例进行说明。

如图22所示,扇形门的门墙点集中的所有端点为端点W1至端点W4,首先找出横坐标最小(横坐标最大或纵坐标最小或纵坐标最大的情况同理)的端点并设为初始起点,由于横坐标最小的端点有两个,分别为端点W1和端点W2,因此比较端点W1和端点W2的纵坐标,则找出初始起点为纵坐标较小的端点W2。

以初始起点W2的横坐标减X为横坐标,以初始起点W2的纵坐标为纵坐标设一辅助点P,X的取值根据实际需要来确定,控制以初始起点W2为起点并连接辅助点P的射线W2P绕初始起点W2顺时针旋转。

找到与射线W2P重合的端点有端点W1、端点W3和端点W4,并且射线W2P在顺时针旋转过程中形成夹角∠PW2W1、夹角∠PW2W3和夹角∠PW2W4,比较三个夹角的大小,夹角∠PW2W1最小,则射线W2P旋转角度最小时(最大时的情况同理)与射线W2P重合的端点为端点W1,如图22A所示。

判断当前找出的端点W1不为初始起点W2,则控制以当前找出的端点W1为起点并连接前一个找出的端点W2的射线W1W2绕端点W1继续顺时针旋转,找到与射线W1W2重合的端点有端点W3和端点W4,并且射线W1W2在顺时针旋转过程中形成夹角∠W2W1W3和夹角∠W2W1W4,比较两个夹角的大小,夹角∠W2W1W3较小,则射线W1W2旋转角度最小时与射线W1W2重合的端点为端点W3,如图22B所示。

判断当前找出的端点W3是否为初始起点W2,若不是,则按同样的方法继续寻找下一个符合条件的端点,并判断是否为初始起点W2,直到当前找出的端点为初始起点W2为止。

若当前找出的端点为初始起点W2,则将所有找出的端点按找出的顺序依次连接成的封闭线段作为扇形门的门墙轮廓线输出,所有端点按找出的顺序依次为端点W2、端点W1、端点W3、端点W4和端点W2,则以端点W1至端点W4为顶点的矩形W2W1W3W4为该扇形门的门墙点集输出的扇形门的门墙轮廓线。

同理,将根据不同的表示门的图元或不同的表示窗的图元得到的不同的门墙点集或不同的窗墙点集中的所有端点按顺时针顺序或逆时针顺序连接成不同的门墙轮廓线或窗墙轮廓线并输出,完成对所有门的门墙、所有窗的窗墙的识别。

综上,本发明实施例所提供的一种基于建筑图纸的门和窗自动识别方法,通过读取门和窗所在图层的信息以找出所有表示门或表示窗的图元,通过读取墙所在图层的信息以根据每一个表示门的图元找出所有门的门线,并找出组成门的门墙的端点的坐标数据对应写入一个门墙点集,以及根据每一个表示窗的图元找出所有窗的窗线,并找出组成窗的窗墙的端点的坐标数据对应写入一个窗墙点集,最后将每一个门墙点集中的所有端点对应连接成一个门墙轮廓线并输出,将每一个窗墙点集中的所有端点对应连接成一个窗墙轮廓线并输出,解决了现有技术在建筑图纸的识别过程中对建筑对象的识别效率低,识别精度低的问题,从而提高了建筑对象门和窗的识别效率及识别精度。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1