梁识别方法、计算机设备及可读存储介质与流程

    专利查询2022-09-19  92



    1.本技术涉及建筑设计技术领域,具体涉及一种梁识别方法、计算机设备及可读存储介质。


    背景技术:

    2.在建筑涉及领域,用cad等设计软件进行施工图纸设计是非常普遍的情况。在工程预算、施工等阶段,技术人员分析图纸信息进行算量、检查等工作,这就需要在设计图纸中识别出不同的图例,根据图例进行后续的算量等操作。尤其是设计图纸中梁信息的准确性,在后续的算量、施工等操作中尤为重要,传统的处理方式通常都需要人工对设计图纸中的梁进行的核对,判断图纸中梁元素是否与标注信息相匹配。由于梁在设计的时候可以以两端的墙或柱作为支座,也可以一端以墙或柱子为支座,另一端以其他的梁作为支座等等,对于人工识别核对而言,不仅效率低下而且非常容易出错。随着信息技术发展,越来越多的人期望能够摆脱人工处理方式,利用计算机的运算能力快速的进行图纸中梁数据的识别,以提升工作效率和生活质量。


    技术实现要素:

    3.本发明的目的之一在于克服以上缺点,提供一种准确快速地识别出梁的识别方法。
    4.为了解决上述技术问题,本发明提供了一种梁识别方法,包括以下步骤:
    5.从图纸中获取所需的梁图层以及支座元素;所述支座元素包括墙和柱;
    6.从所述梁图层中识别出所有的主梁;所述主梁对应有唯一的名称标注信息;
    7.根据所述主梁将所述梁图层中的所有梁线分成多个梁组;所述梁组中包含至少一个所述主梁;
    8.根据所述支座元素以及所述主梁对应的名称标注信息确定出每个梁组中的识别梁。
    9.进一步地,所述从梁图层中识别出所有的主梁,包括以下步骤:
    10.获取所述梁图层中的所有梁名称标注信息;
    11.根据所述梁名称标注信息依次找到其对应的所有牵引线;
    12.根据末段牵引线获取所述梁名称标注信息对应的第一梁线;
    13.通过所述第一梁线获取所述梁名称标注信息对应的第二梁线。
    14.进一步地,所述根据末段牵引线获取所述梁名称标注信息对应的第一梁线,具体为:
    15.获取与所述末段牵引线垂直相交且方向与标注方向相同的梁线作为所述梁名称标注信息对应的第一梁线;若不存在,则获取与所述末段牵引线垂直相交的梁线作为所述梁名称标注信息对应的第一梁线;若仍不存在,则获取与所述末段牵引线相交的梁线作为所述梁名称标注信息对应的第一梁线。
    16.进一步地,通过所述第一梁线获取所述梁名称标注信息对应的第二梁线,具体为:
    17.获取与所述第一梁线平行、并且两者可以投影相交、并且两者距离与所述梁名称标注信息中宽度相同的梁线,作为所述梁名称标注信息对应的第二梁线。
    18.进一步地,所述根据主梁将所述梁图层中的所有梁线分成多个梁组,包括以下步骤:
    19.步骤501、根据所述主梁梁线的方向将所述主梁划分到不同的集合;
    20.步骤502、选取当前未分组的主梁数最多的集合中梁跨数最大的主梁加入新的梁组并作为参考梁;
    21.步骤503、从所述梁图层中找出与所述参考梁的梁线的夹角在角度阈值范围内,且端点与所述参考梁的梁线端点间的最小距离在距离阈值范围内或与所述参考梁连接共同支座的梁线,得到梁线集合;
    22.步骤504、将所述梁线集合中相互平行的梁线划分到同一个梁线组中,从而得到多个梁线组;
    23.步骤505、判断是否存在未处理的梁线组,若存在执行步骤506,否则执行步骤510;
    24.步骤506、取一个未处理的梁线组;
    25.步骤507、判断当前梁线组中的梁线是否与所述参考梁的梁线平行,若平行,则执行步骤508,若不平行,则执行步骤509;
    26.步骤508、从当前梁线组中找出可由两条投影相交的梁线组成的所有梁,再从中找出梁截面与所述参考梁截面可以投影相交,并且沿梁线方向中心线与所述参考梁沿梁线方向中心线距离最近的那个梁,作为组合梁;跳转至步骤505继续执行;
    27.步骤509、从当前梁线组中找出可由两条投影相交的梁线组成的所有梁,再从中找出宽度与所述参考梁宽度最接近的梁,作为组合梁;跳转至步骤505继续执行;
    28.步骤510、根据所述组合梁与所述参考梁的位置方向将所有组合梁划分为至多两个组合梁组;
    29.步骤511、判断是否存在未处理的组合梁组,若存在,执行步骤512,否则执行步骤515;
    30.步骤512、取一个未处理的组合梁组;
    31.步骤513、判断当前梁组中是否存在与当前组合梁组的位置方向相同的其他组合梁,若没有则执行步骤514,否则执行步骤511;
    32.判断514、从当前的组合梁组中取出与所述参考梁夹角最大、且与所述参考梁距离最近的一个组合梁,加入到当前梁组中;
    33.步骤515、判断当前梁组中是否有未作为参考梁处理的梁,若有执行步骤516,否则执行517;
    34.步骤516、从当前梁组中选取一个未处理的梁作为参考梁,跳至步骤503继续执行;
    35.步骤517、判断是否还有未分组的主梁,若是则跳至步骤502继续执行,否则执行步骤518;
    36.步骤518、分组完成。
    37.进一步地,所述根据支座元素以及主梁对应的名称标注信息确定出每个梁组中的识别梁,包括以下步骤:
    38.步骤601、将每个所述梁组中两条梁线都在同一直线上的两个梁进行连接;
    39.步骤602、获取每个所述梁组中的每个梁线的原位尺寸标注;
    40.步骤603、根据所述支座元素将每个所述梁组中的梁划分为多个分段;
    41.步骤604、判断是否还有未进行识别的梁组,若有则执行步骤605,否则执行步骤699;
    42.步骤605、取一个未进行识别的梁组作为当前识别梁组;
    43.步骤606、根据当前识别梁组中所有主梁对应的名称标注信息得到当前识别梁组的总跨数;
    44.步骤607、若当前识别梁组的分段数大于或者等于总跨数,则执行步骤608,否则执行步骤614;
    45.步骤608、判断当前识别梁组是否还有未处理的主梁,若有则执行步骤609,否则执行613;
    46.步骤609、获取一个未处理的主梁作为当前处理主梁,并获取其对应的跨数;
    47.步骤610、将当前处理主梁作为识别梁,将已识别梁数置为一,并将识别梁两端的支座加入共用支座集合;
    48.步骤611、判断已识别梁数是否小于跨数,若是则执行步骤612,否则执行步骤608;
    49.步骤612、按照查找位置规则从当前识别梁组中找到第一个采用了共用支座集合中的支座作为一端支座的分段,将其作为新的识别梁,加入识别梁集合;将已识别梁数加一;同时将新的识别梁两端的支座加入共用支座集合;跳至步骤611继续执行;
    50.步骤613、将当前识别梁组标识为识别成功,跳至步骤604继续执行;
    51.步骤614、将每个梁组以及识别梁集合中两端均为支座元素的跨作为新增加的支座,根据新增加的支座以及所述支座元素,重新对当前识别梁组进行分段;
    52.步骤615、若当前识别梁组的分段数大于或者等于总跨数,则执行步骤616,否则执行步骤622;
    53.步骤616、判断当前识别梁组是否还有未处理的主梁,若有则执行步骤617,否则执行621;
    54.步骤617、获取一个未处理的主梁作为当前处理主梁,并获取其对应的跨数;
    55.步骤618、将当前处理主梁作为识别梁,将已识别梁数置为一,并将识别梁两端的支座加入共用支座集合;
    56.步骤619、判断已识别梁数是否小于跨数,若是则执行步骤620,否则执行步骤616;
    57.步骤620、按照查找位置规则从当前识别梁组中找到第一个采用了共用支座集合中的支座作为一端支座的分段,将其作为新的识别梁,加入识别梁集合;将已识别梁数加一;同时将新的识别梁两端的支座加入共用支座集合;跳至步骤619继续执行;
    58.步骤621、将当前识别梁组标识为识别成功,跳至步骤604继续执行;
    59.步骤622、将每个梁组以及识别梁集合中只有一端为所述支座元素的跨作为新增加的支座,根据新增加的支座以及所述支座元素,重新对当前识别梁组进行分段;
    60.步骤623、若当前识别梁组的分段数大于或者等于总跨数,则执行步骤624,否则执行步骤630;
    61.步骤624、判断当前识别梁组是否还有未处理的主梁,若有则执行步骤625,否则执
    行629;
    62.步骤625、获取一个未处理的主梁作为当前处理主梁,并获取其对应的跨数;
    63.步骤626、将当前处理主梁作为识别梁,将已识别梁数置为一,并将识别梁两端的支座加入共用支座集合;
    64.步骤627、判断已识别梁数是否小于跨数,若是则执行步骤628,否则执行步骤624;
    65.步骤628、按照查找位置规则从当前识别梁组中找到第一个采用了共用支座集合中的支座作为一端支座的分段,将其作为新的识别梁,加入识别梁集合;将已识别梁数加一;同时将新的识别梁两端的支座加入共用支座集合;跳至步骤627继续执行;
    66.步骤629、将当前识别梁组标识为识别成功,跳至步骤604继续执行;
    67.步骤630、将每个梁组以及识别梁集合中高度大于或等于当前识别梁组中主梁高度的梁跨为新增加的支座,根据新增加的支座以及所述支座元素,重新对当前识别梁组进行分段;
    68.步骤631、若当前识别梁组的分段数大于或者等于总跨数,则执行步骤632,否则执行步骤638;
    69.步骤632、判断当前识别梁组是否还有未处理的主梁,若有则执行步骤633,否则执行637;
    70.步骤633、获取一个未处理的主梁作为当前处理主梁,并获取其对应的跨数;
    71.步骤634、将当前处理主梁作为识别梁,将已识别梁数置为一,并将识别梁两端的支座加入共用支座集合;
    72.步骤635、判断已识别梁数是否小于跨数,若是则执行步骤636,否则执行步骤632;
    73.步骤636、按照查找位置规则从当前识别梁组中找到第一个采用了共用支座集合中的支座作为一端支座的分段,将其作为新的识别梁,加入识别梁集合;将已识别梁数加一;同时将新的识别梁两端的支座加入共用支座集合;跳至步骤635继续执行;
    74.步骤637、将当前识别梁组标识为识别成功,跳至步骤604继续执行;
    75.步骤638、将当前识别梁组标识为识别失败,跳至步骤604继续执行;
    76.步骤699、返回识别梁集合。
    77.相应地,本技术还提供了一种计算机设备,所述计算机设备包括:存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述权利要求任一项所述梁识别方法的步骤。
    78.相应地,本技术还提供了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现上述权利要求任一项所述梁识别方法的步骤。
    79.本技术的的技术方案,通过从图纸中获取所需的梁图层以及支座元素,再从所述梁图层中识别出所有的主梁,并将可能连接的梁线分成多个梁组后,在根据标注信息从每个梁组中识别出对应的梁信息,可解决通过人工方式对建筑图纸中梁信息进行识别核对效率低下且容易出错的问题,适用于市面上大部分的设计图纸,识别率较高,识别速度较快,简化了用户操作流程,提高了工作效率。
    附图说明
    80.图1是本发明一种梁识别方法的步骤流程图。
    81.图2是本发明从梁图层中识别出所有的主梁的步骤流程图。
    82.图3是本发明根据梁名称标注信息找牵引线示意图一。
    83.图4是本发明根据梁名称标注信息找牵引线示意图二。
    84.图5是本发明根据牵引线获取主梁的示意图。
    85.图6是本发明从梁图层中识别出的主梁示意图。
    86.图7是本发明根据主梁将梁图层中的所有梁线分成多个梁组的步骤流程图。
    87.图8是本发明从梁图层中得到梁线集合示意图一。
    88.图9是本发明从梁图层中得到梁线集合示意图二。
    89.图10是本发明识别组合梁示意图。
    90.图11是本发明单名称梁示意图。
    91.图12是本发明多名称梁示意图。
    92.图13是本发明确定出每个梁组中的识别梁的步骤流程图。
    93.图14是本发明对两个梁进行连接前示意图。
    94.图15是本发明对两个梁进行连接后示意图。
    95.图16是本发明获取原位尺寸标注示意图。
    96.图17是本发明对梁组中的梁分段示意图一。
    97.图18是本发明对梁组中的梁分段示意图二。
    98.图19是本发明识别梁判断示意图。
    99.图20是本发明梁组重新分段示意图一。
    100.图21是本发明梁组重新分段示意图二。
    101.图22是本发明梁组重新分段示意图三。
    具体实施方式
    102.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
    103.实施例一
    104.如图1所示,是本技术一种梁识别方法的步骤流程图,包括以下步骤:
    105.步骤1、从图纸中获取所需的梁图层以及支座元素;所述支座元素包括墙和柱。
    106.需要说明的是,在建筑设计技术领域的设计图纸中,通常不同的图例元素都会被设计在不同的图层,例如梁图层只包含梁相关的信息,包括梁的名称标注信息,牵引线,梁线等等,又如钢筋图层只包含钢筋的相关数据信息,支座元素也有单独的图层。本方案中,由于只进行梁的识别,因此只需要设计图纸中梁的图层以及支座元素即可,其他图例元素均不需要。其中,所述的支座元素指的是可以作为梁承载的墙或柱,例如砼墙,墙柱或框架柱。
    107.步骤2、从所述梁图层中识别出所有的主梁;所述主梁对应有唯一的名称标注信息。
    108.在设计图纸中,一个梁可以有好几个跨,其中通过牵引线与梁名称标注信息关联
    的那一跨称为主梁。如图2所示,是本技术从梁图层中识别出所有的主梁的步骤流程图,包括以下步骤:
    109.步骤21、获取所述梁图层中的所有梁名称标注信息。由于梁的名称标注信息具有统一标准的格式,所以通过对所有梁图层中所有文本内容进行正则匹配的方式得到所有梁名称标注信息,同时可以得到梁名称标注信息在设计图纸中的位置信息。
    110.步骤22、根据所述梁名称标注信息依次找到其对应的所有牵引线。
    111.在前一步骤找到一个梁名称标注信息后,接下来就要找到和它对应的牵引线。通常的方式是优先在图层中找与梁名称标注信息文字方向垂直的线段,若没有找到与梁名称标注信息文字方向垂直的线段,再找平行的线段。在实际场景中,可能会找到多条线段,这时候再通过判断梁名称标注信息文本框左下角的顶点可以投影到牵引线上且标注与牵引线的距离最近,来找到梁名称标注信息对应的第一根牵引线,如图3所示。需要说明的是,在实际的图纸中,可能存在还有其他牵引线与第一根牵引线头尾相连或者其中一条线的端点在另一条线上的情况,这时候需要把相连的多段牵引线全部找到,如图4所示。
    112.步骤23、根据末段牵引线获取所述梁名称标注信息对应的第一梁线。具体处理优先级为:获取与末段牵引线垂直相交且方向与标注方向相同的梁线作为所述梁名称标注信息对应的第一梁线;若不存在,则获取与所述末段牵引线垂直相交的梁线作为所述梁名称标注信息对应的第一梁线;若仍不存在,则获取与所述末段牵引线相交的梁线作为所述梁名称标注信息对应的第一梁线。如图5中所示,与牵引线垂直相交的线段即为该主梁的第一梁线。
    113.步骤24、通过所述第一梁线获取所述梁名称标注信息对应的第二梁线。具体方式为:获取与所述第一梁线平行、并且两者可以投影相交、并且两者距离与所述梁名称标注信息中宽度相同的梁线,作为所述梁名称标注信息对应的第二梁线。需要说明的是,本技术所述的第一梁线和第二梁线可以投影相交,指的是可以在第一梁线上找到一小段的线段,该线段的两个端点均可以投影至第二梁线上,反之,也可以在第二梁线上找到一小段的线段,该线段的两个端点均可以投影至第一梁线。另外,平行线之间的距离指的是两者之间公垂线线段的长度。通过上述方式,就可以将图纸中平行但是并没有投影相交的线段排除,同时也将宽度与标注信息不同的排除组合。如图5中所示,第二梁线虽然与第一梁线长度不一样,但是两者有投影相交的部分,而且两者之间的宽度与名称标注信息上的宽度(200)相等。
    114.重复上述步骤21-24,就可以将图层中的所有主梁识别出来,如图6所示。
    115.步骤3、根据所述主梁将所述梁图层中的所有梁线分成多个梁组;所述梁组中包含至少一个所述主梁。
    116.本方法的前述步骤将梁图层中所有的带有名称标注信息的主梁都找到,除此之外,图层中还有其他不带标注信息的梁,它们可能与其中某一个主梁是同属于一个梁中的不同跨,因此这时候就需要将这些不带标注信息的梁和主梁进行分组。如图7所示,是本技术根据所述主梁将所述梁图层中的所有梁线分成多个梁组的步骤流程图,包括以下步骤:
    117.步骤501、根据所述主梁梁线的方向将所述主梁划分到不同的集合。即每个集合中的所有主梁的梁线都是同一方向且平行的,例如,将所有梁线是水平方向的主梁分在一个集合,将所有梁线是垂直方向的主梁在一个集合。
    118.步骤502、选取当前未分组的主梁数最多的集合中梁跨数最大的主梁加入新的梁组并作为参考梁;
    119.步骤503、从所述梁图层中找出与所述参考梁的梁线的夹角在角度阈值范围内,且端点与所述参考梁的梁线端点间的最小距离在距离阈值范围内或与所述参考梁连接共同支座的梁线,得到梁线集合。这里需要说明的是,两条梁线夹角的含义为:1、两个梁线或者其延长线相交之后,所产生的较小的那个夹角;2、若两个梁线不相交(即平行)或者在同一直线上,夹角为180度。优选地,所述角度阈值范围为大于或等于135度,且小于或等于180度,所述距离阈值范围为1000mm。如图8中所示,根据参考梁对应的两个梁线(c101)中的任意一个,均可以找到与其连接有共同支座,且夹角为144度的两条梁线(c103),加入梁线集合中。又如图9所示,根据参考梁对应的两个梁线(c101)中的任意一个,均可以找到与其端点间距离在1000mm以内,且夹角为180度的两条梁线(c103),加入梁线集合中。
    120.步骤504、将所述梁线集合中相互平行的梁线划分到同一个梁线组中,从而得到多个梁线组。由于梁线集合中包含了与参考梁不同角度的所有梁线,且不平行的两条梁线是不可能组成梁的,因此就要把相互平行的梁线先分到一组中,再从同一组中找到最满足条件的两条梁线组成所需的梁。
    121.步骤505、判断是否存在未处理的梁线组,若存在执行步骤506,否则执行步骤510;
    122.步骤506、取一个未处理的梁线组;
    123.步骤507、判断当前梁线组中的梁线是否与所述参考梁的梁线平行,若平行,则执行步骤508,若不平行,则执行步骤509;
    124.步骤508、从当前梁线组中找出可由两条投影相交的梁线组成的所有梁,再从中找出梁垂直横截面与所述参考梁垂直横截面可以投影相交,并且沿梁线方向中心线与所述参考梁沿梁线方向中心线之间公垂线段距离最近的那个梁,作为组合梁;跳转至步骤505继续执行。
    125.在一具体的实施例中,如图10中所示,右侧为两条梁线组成的参考梁,其梁中心线为cl1,垂直于梁中心线的横截面为section1,此时可找到与参考梁梁线平行的三条梁线line1、line2、line3,其中由line1和line2可以组成一个梁,中心线为cl2,垂直于cl2的横截面为section2,由line3和line2又可以组成一个梁,中心线为cl3,垂直于cl3的横截面为section3。由于截面section2和section3均与参考梁的截面section1投影相交,则继续判断中心线cl1与cl2、cl3中哪一条中心线的距离更近,即判断cl1分别到cl2和cl3的公垂线段哪个更短。由于图中cl1与cl2距离更近,则选取line1、line2组成的梁作为组合梁组。
    126.步骤509、从当前梁线组中找出可由两条投影相交的梁线组成的所有梁,再从中找出宽度与所述参考梁宽度最接近的梁,作为组合梁;跳转至步骤505继续执行。
    127.步骤510、根据所述组合梁与所述参考梁的位置方向将所有组合梁划分为至多两个组合梁组。由于梁线集合可以分成若干个梁线组,因此每个梁线组都可能找到一个组合梁,就有多个的组合梁,但是对于参考梁而言,在同一个位置方向上至多只有一个组合梁。因此就还要根据位置方向进行分组,再从每组中选取最接近的组合梁。所述的组合梁与参考梁的位置方向可以是左右,也可以是上下。例如,将所有在参考梁左边的组合梁归为一组,将所有在参考梁右边的组合梁归为一组;又如,将所有在参考梁上边的组合梁归为一组,将所有在参考梁下边的组合梁归为一组。另外,组合梁并不一定能划分为两个组合梁
    组,若所有的组合梁都是在参考梁的左边,那就只划分为一组。
    128.步骤511、判断是否存在未处理的组合梁组,若存在,执行步骤512,否则执行步骤515;
    129.步骤512、取一个未处理的组合梁组;
    130.步骤513、判断当前梁组中是否存在与当前组合梁组的位置方向相同的其他组合梁,若没有则执行步骤514,否则执行步骤511。对于参考梁而言,在同一个位置方向上至多只有一个最接近的组合梁,因此若当前梁组中已经存在与当前组合梁组的位置方向相同的其他组合梁,就不能再加入当前梁组。
    131.判断514、从当前的组合梁组中取出与所述参考梁夹角最大、且与所述参考梁距离最近的一个组合梁,加入到当前梁组中;
    132.步骤515、判断当前梁组中是否有未作为参考梁处理的梁,若有执行步骤516,否则执行517;
    133.步骤516、从当前梁组中选取一个未处理的梁作为参考梁,跳至步骤503继续执行;
    134.步骤517、判断是否还有未分组的主梁,若是则跳至步骤502继续执行,否则执行步骤518;
    135.步骤518、分组完成。
    136.需要说明的是,分组完成之后的每个梁组中,可以包含一个主梁,称为单名称梁,如图11所示,也可以包含多个主梁,称为多名称梁,如图12所示。
    137.步骤4、根据所述支座元素以及所述主梁对应的名称标注信息确定出每个梁组中的识别梁。将所有的梁进行分组之后,就要对每一组的梁进行识别,把每一组里面的名称标注信息中的对应跨总数的梁都找到才算识别成功。如图13所示,是本技术根据支座元素以及主梁对应的名称标注信息确定出每个梁组中的识别梁的步骤流程图,包括以下步骤:
    138.步骤601、将每个所述梁组中两条梁线都在同一直线上的两个梁进行连接。若只有一条梁线在同一直线上或没有梁线在同一直线上,则不进行连接。连接前后的示意图如图14、15所示。
    139.步骤602、获取每个所述梁组中的每个梁线的原位尺寸标注。具体方式为:针对每个梁线,去找方向与梁线方向相同且标注文本框左下角的点能投影到梁线上并且距离是最近的原位尺寸标注,作为该梁线的原位尺寸标注,如图16所示,若没找到则忽略。
    140.步骤603、根据所述支座元素将每个所述梁组中的梁划分为多个分段。如图17所示,该梁被支座元素划分为了4个段。又如图18所示,该梁被支座划分为3个段。需要说明的是,每个段两端可以有支座,也可以只有一端有支座,也可以两端都没支座。
    141.步骤604、判断是否还有未进行识别的梁组,若有则执行步骤605,否则执行步骤699;
    142.步骤605、取一个未进行识别的梁组作为当前识别梁组;
    143.步骤606、根据当前识别梁组中所有主梁对应的名称标注信息得到当前识别梁组的总跨数。每个梁名称标注信息中括号中的数字就对应该梁的跨数,所有梁名称标注信息中跨数的和即为总跨数。
    144.步骤607、若当前识别梁组的分段数大于或者等于总跨数,则执行步骤608,否则说明分段还有问题,则执行步骤614;
    145.步骤608、判断当前识别梁组是否还有未处理的主梁,若有则执行步骤609,否则执行613;
    146.步骤609、获取一个未处理的主梁作为当前处理主梁,并获取其对应的跨数;
    147.步骤610、将当前处理主梁作为识别梁,将已识别梁数置为一,并将识别梁两端的支座加入共用支座集合;
    148.步骤611、判断已识别梁数是否小于跨数,若是则执行步骤612,否则执行步骤608;
    149.步骤612、按照查找位置规则从当前识别梁组中找到第一个采用了共用支座集合中的支座作为一端支座的分段,将其作为新的识别梁,加入识别梁集合;将已识别梁数加一;同时将新的识别梁两端的支座加入共用支座集合;跳至步骤611继续执行。所述查找位置规则指的是从左到右,从下到上。如图19所示,当前处理主梁作为默认的识别梁,其两端的支座a、b加入初始共用支座集合,这时按照从左到右的顺序,不存在与识别梁共用支座a的段,而有与识别梁共用支座b的段2,这时候段2即为第二个识别梁,再把支座c加入到共用支座集合中。
    150.步骤613、将当前识别梁组标识为识别成功,跳至步骤604继续执行;
    151.步骤614、将每个梁组以及识别梁集合中两端均为支座元素的跨作为新增加的支座,根据新增加的支座以及所述支座元素,重新对当前识别梁组进行分段。如图20所示,d101是两端均为支座元素的跨,其可以是梁组中划分的段,也可以是识别出来的梁。通过将d101也作为图中1l-18(5)梁新的支座,可以将该梁进一步分成多个段,即段1、段2和段3。对当前识别梁组重新进行分段后,进入第二轮识别。
    152.步骤615、若当前识别梁组的分段数大于或者等于总跨数,则执行步骤616,否则执行步骤622;
    153.步骤616、判断当前识别梁组是否还有未处理的主梁,若有则执行步骤617,否则执行621;
    154.步骤617、获取一个未处理的主梁作为当前处理主梁,并获取其对应的跨数;
    155.步骤618、将当前处理主梁作为识别梁,将已识别梁数置为一,并将识别梁两端的支座加入共用支座集合;
    156.步骤619、判断已识别梁数是否小于跨数,若是则执行步骤620,否则执行步骤616;
    157.步骤620、按照查找位置规则从当前识别梁组中找到第一个采用了共用支座集合中的支座作为一端支座的分段,将其作为新的识别梁,加入识别梁集合;将已识别梁数加一;同时将新的识别梁两端的支座加入共用支座集合;跳至步骤619继续执行;
    158.步骤621、将当前识别梁组标识为识别成功,跳至步骤604继续执行;
    159.步骤622、将每个梁组以及识别梁集合中只有一端为所述支座元素的跨作为新增加的支座,根据新增加的支座以及所述支座元素,重新对当前识别梁组进行分段。如图21所示,d102是只有一端为支座元素的跨,其可能是梁组中划分的段,也可能是前面步骤已经识别出来的梁。通过将d102也作为图中1kl-25(5)梁新的支座,可以将该梁进一步分成多个段,即段1、段2和段3。对当前识别梁组重新进行分段后,进入第三轮识别。
    160.步骤623、若当前识别梁组的分段数大于或者等于总跨数,则执行步骤624,否则执行步骤630;
    161.步骤624、判断当前识别梁组是否还有未处理的主梁,若有则执行步骤625,否则执
    行629;
    162.步骤625、获取一个未处理的主梁作为当前处理主梁,并获取其对应的跨数;
    163.步骤626、将当前处理主梁作为识别梁,将已识别梁数置为一,并将识别梁两端的支座加入共用支座集合;
    164.步骤627、判断已识别梁数是否小于跨数,若是则执行步骤628,否则执行步骤624;
    165.步骤628、按照查找位置规则从当前识别梁组中找到第一个采用了共用支座集合中的支座作为一端支座的分段,将其作为新的识别梁,加入识别梁集合;将已识别梁数加一;同时将新的识别梁两端的支座加入共用支座集合;跳至步骤627继续执行;
    166.步骤629、将当前识别梁组标识为识别成功,跳至步骤604继续执行;
    167.步骤630、将每个梁组以及识别梁集合中高度大于或等于当前识别梁组中主梁高度的梁跨为新增加的支座,根据新增加的支座以及所述支座元素,重新对当前识别梁组进行分段。如图22所示,d103的高度为500,等于当前识别梁组中主梁1l-11(2)的高度,其可能是梁组中划分的段,也可能是前面步骤已经识别出来的梁。通过将d102也作为图中1l-11(2)梁新的支座,可以将该梁进一步分成多个段,即段1、段2。对当前识别梁组重新进行分段后,进入第四轮识别。
    168.步骤631、若当前识别梁组的分段数大于或者等于总跨数,则执行步骤632,否则执行步骤638;
    169.步骤632、判断当前识别梁组是否还有未处理的主梁,若有则执行步骤633,否则执行637;
    170.步骤633、获取一个未处理的主梁作为当前处理主梁,并获取其对应的跨数;
    171.步骤634、将当前处理主梁作为识别梁,将已识别梁数置为一,并将识别梁两端的支座加入共用支座集合;
    172.步骤635、判断已识别梁数是否小于跨数,若是则执行步骤636,否则执行步骤632;
    173.步骤636、按照查找位置规则从当前识别梁组中找到第一个采用了共用支座集合中的支座作为一端支座的分段,将其作为新的识别梁,加入识别梁集合;将已识别梁数加一;同时将新的识别梁两端的支座加入共用支座集合;跳至步骤635继续执行;
    174.步骤637、将当前识别梁组标识为识别成功,跳至步骤604继续执行;
    175.步骤638、将当前识别梁组标识为识别失败,跳至步骤604继续执行;
    176.步骤699、返回识别梁集合。
    177.本技术的的技术方案,通过从图纸中获取所需的梁图层以及支座元素,再从所述梁图层中识别出所有的主梁,并根据主梁将可能连接的梁线分成多个梁组后,在根据标注信息从每个梁组中识别出对应的梁信息。在对每个梁组的识别过程中,若存在分段数小于跨数的情况,本技术会依次进行三轮支座更新并重新分段再识别的过程,总共进行4轮的识别,确保梁信息的准确识别,解决通过人工方式对建筑图纸中梁信息进行识别核对效率低下且容易出错的问题,适用于市面上大部分的设计图纸,识别率较高,识别速度较快,简化了用户操作流程,提高了工作效率。
    178.实施例二
    179.本实施例还提供一种计算机设备,如可以执行程序的智能手机、平板电脑、笔记本电脑、台式计算机、机架式服务器、刀片式服务器、塔式服务器或机柜式服务器(包括独立的
    服务器,或者多个服务器所组成的服务器集群)等。本实施例的计算机设备至少包括但不限于:可通过系统总线相互通信连接的存储器、处理器。在一些实施例中,存储器可以是计算机设备的内部存储单元,例如该计算机设备的硬盘或内存,也可以是计算机设备的外部存储设备,例如该计算机设备上配备的插接式硬盘,智能存储卡等。处理器在可以是中央处理器(central processing unit,cpu)、控制器、微控制器、微处理器、或其他数据处理芯片,用于控制计算机设备的总体操作。具体的,在本实施例中,处理器用于运行存储在所述存储器上计算机程序,所述处理器执行所述计算机程序时实现上述任一项梁识别方法的步骤。
    180.实施例三
    181.本实施例还提供了一种计算机可读存储介质,如闪存、硬盘、多媒体卡、卡型存储器,(例如,sd或dx存储器等)、随机访问存储器(ram)、静态随机访问存储器(sram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、可编程只读存储器(prom)、磁性存储器、磁盘、光盘、服务器、app应用商城等等其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如上述任一项所述梁识别方法的步骤。
    182.上述具体实施方式只是对本发明的技术方案进行详细解释,本发明并不只仅仅局限于上述实施例,凡是依据本发明原理的任何改进或替换,均应在本发明的保护范围之内。

    技术特征:
    1.一种梁识别方法,其特征在于,包括以下步骤:从图纸中获取所需的梁图层以及支座元素;所述支座元素包括墙和柱;从所述梁图层中识别出所有的主梁;所述主梁对应有唯一的名称标注信息;根据所述主梁将所述梁图层中的所有梁线分成多个梁组;所述梁组中包含至少一个所述主梁;根据所述支座元素以及所述主梁对应的名称标注信息确定出每个梁组中的识别梁。2.如权利要求1所述的梁识别方法,其特征在于,所述从梁图层中识别出所有的主梁,包括以下步骤:获取所述梁图层中的所有梁名称标注信息;根据所述梁名称标注信息依次找到其对应的所有牵引线;根据末段牵引线获取所述梁名称标注信息对应的第一梁线;通过所述第一梁线获取所述梁名称标注信息对应的第二梁线。3.如权利要求2所述的梁识别方法,其特征在于,所述根据末段牵引线获取所述梁名称标注信息对应的第一梁线,具体为:获取与所述末段牵引线垂直相交且方向与标注方向相同的梁线作为所述梁名称标注信息对应的第一梁线;若不存在,则获取与所述末段牵引线垂直相交的梁线作为所述梁名称标注信息对应的第一梁线;若仍不存在,则获取与所述末段牵引线相交的梁线作为所述梁名称标注信息对应的第一梁线。4.如权利要求2所述的梁识别方法,其特征在于,通过所述第一梁线获取所述梁名称标注信息对应的第二梁线,具体为:获取与所述第一梁线平行、并且两者可以投影相交、并且两者距离与所述梁名称标注信息中宽度相同的梁线,作为所述梁名称标注信息对应的第二梁线。5.如权利要求1所述的梁识别方法,其特征在于,所述根据主梁将所述梁图层中的所有梁线分成多个梁组,包括以下步骤:步骤501、根据所述主梁梁线的方向将所述主梁划分到不同的集合;步骤502、选取当前未分组的主梁数最多的集合中梁跨数最大的主梁加入新的梁组并作为参考梁;步骤503、从所述梁图层中找出与所述参考梁的梁线的夹角在角度阈值范围内,且端点与所述参考梁的梁线端点间的最小距离在距离阈值范围内或与所述参考梁连接共同支座的梁线,得到梁线集合;步骤504、将所述梁线集合中相互平行的梁线划分到同一个梁线组中,从而得到多个梁线组;步骤505、判断是否存在未处理的梁线组,若存在执行步骤506,否则执行步骤510;步骤506、取一个未处理的梁线组;步骤507、判断当前梁线组中的梁线是否与所述参考梁的梁线平行,若平行,则执行步骤508,若不平行,则执行步骤509;步骤508、从当前梁线组中找出可由两条投影相交的梁线组成的所有梁,再从中找出梁截面与所述参考梁截面可以投影相交,并且沿梁线方向中心线与所述参考梁沿梁线方向中心线距离最近的那个梁,作为组合梁;跳转至步骤505继续执行;
    步骤509、从当前梁线组中找出可由两条投影相交的梁线组成的所有梁,再从中找出宽度与所述参考梁宽度最接近的梁,作为组合梁;跳转至步骤505继续执行;步骤510、根据所述组合梁与所述参考梁的位置方向将所有组合梁划分为至多两个组合梁组;步骤511、判断是否存在未处理的组合梁组,若存在,执行步骤512,否则执行步骤515;步骤512、取一个未处理的组合梁组;步骤513、判断当前梁组中是否存在与当前组合梁组的位置方向相同的其他组合梁,若没有则执行步骤514,否则执行步骤511;判断514、从当前的组合梁组中取出与所述参考梁夹角最大、且与所述参考梁距离最近的一个组合梁,加入到当前梁组中;步骤515、判断当前梁组中是否有未作为参考梁处理的梁,若有执行步骤516,否则执行517;步骤516、从当前梁组中选取一个未处理的梁作为参考梁,跳至步骤503继续执行;步骤517、判断是否还有未分组的主梁,若是则跳至步骤502继续执行,否则执行步骤518;步骤518、分组完成。6.如权利要求1所述的梁识别方法,其特征在于,所述根据支座元素以及主梁对应的名称标注信息确定出每个梁组中的识别梁,包括以下步骤:步骤601、将每个所述梁组中两条梁线都在同一直线上的两个梁进行连接;步骤602、获取每个所述梁组中的每个梁线的原位尺寸标注;步骤603、根据所述支座元素将每个所述梁组中的梁划分为多个分段;步骤604、判断是否还有未进行识别的梁组,若有则执行步骤605,否则执行步骤699;步骤605、取一个未进行识别的梁组作为当前识别梁组;步骤606、根据当前识别梁组中所有主梁对应的名称标注信息得到当前识别梁组的总跨数;步骤607、若当前识别梁组的分段数大于或者等于总跨数,则执行步骤608,否则执行步骤614;步骤608、判断当前识别梁组是否还有未处理的主梁,若有则执行步骤609,否则执行613;步骤609、获取一个未处理的主梁作为当前处理主梁,并获取其对应的跨数;步骤610、将当前处理主梁作为识别梁,将已识别梁数置为一,并将识别梁两端的支座加入共用支座集合;步骤611、判断已识别梁数是否小于跨数,若是则执行步骤612,否则执行步骤608;步骤612、按照查找位置规则从当前识别梁组中找到第一个采用了共用支座集合中的支座作为一端支座的分段,将其作为新的识别梁,加入识别梁集合;将已识别梁数加一;同时将新的识别梁两端的支座加入共用支座集合;跳至步骤611继续执行;步骤613、将当前识别梁组标识为识别成功,跳至步骤604继续执行;步骤614、将每个梁组以及识别梁集合中两端均为支座元素的跨作为新增加的支座,根据新增加的支座以及所述支座元素,重新对当前识别梁组进行分段;
    步骤615、若当前识别梁组的分段数大于或者等于总跨数,则执行步骤616,否则执行步骤622;步骤616、判断当前识别梁组是否还有未处理的主梁,若有则执行步骤617,否则执行621;步骤617、获取一个未处理的主梁作为当前处理主梁,并获取其对应的跨数;步骤618、将当前处理主梁作为识别梁,将已识别梁数置为一,并将识别梁两端的支座加入共用支座集合;步骤619、判断已识别梁数是否小于跨数,若是则执行步骤620,否则执行步骤616;步骤620、按照查找位置规则从当前识别梁组中找到第一个采用了共用支座集合中的支座作为一端支座的分段,将其作为新的识别梁,加入识别梁集合;将已识别梁数加一;同时将新的识别梁两端的支座加入共用支座集合;跳至步骤619继续执行;步骤621、将当前识别梁组标识为识别成功,跳至步骤604继续执行;步骤622、将每个梁组以及识别梁集合中只有一端为所述支座元素的跨作为新增加的支座,根据新增加的支座以及所述支座元素,重新对当前识别梁组进行分段;步骤623、若当前识别梁组的分段数大于或者等于总跨数,则执行步骤624,否则执行步骤630;步骤624、判断当前识别梁组是否还有未处理的主梁,若有则执行步骤625,否则执行629;步骤625、获取一个未处理的主梁作为当前处理主梁,并获取其对应的跨数;步骤626、将当前处理主梁作为识别梁,将已识别梁数置为一,并将识别梁两端的支座加入共用支座集合;步骤627、判断已识别梁数是否小于跨数,若是则执行步骤628,否则执行步骤624;步骤628、按照查找位置规则从当前识别梁组中找到第一个采用了共用支座集合中的支座作为一端支座的分段,将其作为新的识别梁,加入识别梁集合;将已识别梁数加一;同时将新的识别梁两端的支座加入共用支座集合;跳至步骤627继续执行;步骤629、将当前识别梁组标识为识别成功,跳至步骤604继续执行;步骤630、将每个梁组以及识别梁集合中高度大于或等于当前识别梁组中主梁高度的梁跨为新增加的支座,根据新增加的支座以及所述支座元素,重新对当前识别梁组进行分段;步骤631、若当前识别梁组的分段数大于或者等于总跨数,则执行步骤632,否则执行步骤638;步骤632、判断当前识别梁组是否还有未处理的主梁,若有则执行步骤633,否则执行637;步骤633、获取一个未处理的主梁作为当前处理主梁,并获取其对应的跨数;步骤634、将当前处理主梁作为识别梁,将已识别梁数置为一,并将识别梁两端的支座加入共用支座集合;步骤635、判断已识别梁数是否小于跨数,若是则执行步骤636,否则执行步骤632;步骤636、按照查找位置规则从当前识别梁组中找到第一个采用了共用支座集合中的支座作为一端支座的分段,将其作为新的识别梁,加入识别梁集合;将已识别梁数加一;同
    时将新的识别梁两端的支座加入共用支座集合;跳至步骤635继续执行;步骤637、将当前识别梁组标识为识别成功,跳至步骤604继续执行;步骤638、将当前识别梁组标识为识别失败,跳至步骤604继续执行;步骤699、返回识别梁集合。7.一种计算机设备,所述计算机设备包括:存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至6中任一项所述梁识别方法的步骤。8.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1至权利要求6任一项所述梁识别方法的步骤。

    技术总结
    本申请涉及建筑设计技术领域,具体涉及一种梁识别方法、计算机设备及可读存储介质。本申请的方法包括以下步骤:从图纸中获取所需的梁图层以及支座元素;所述支座元素包括墙和柱;从所述梁图层中识别出所有的主梁;所述主梁对应有唯一的名称标注信息;根据所述主梁将所述梁图层中的所有梁线分成多个梁组;所述梁组中包含至少一个所述主梁;根据所述支座元素以及所述主梁对应的名称标注信息确定出每个梁组中的识别梁。本方案通过自动化手段可以快速高效地从建筑图纸中精准地识别出梁,摆脱人工处理方式,简化工作流程以提升工作效率。简化工作流程以提升工作效率。简化工作流程以提升工作效率。


    技术研发人员:曾开发 吴煜孝
    受保护的技术使用者:福建晨曦信息科技集团股份有限公司
    技术研发日:2022.03.22
    技术公布日:2022/5/25
    转载请注明原文地址:https://tc.8miu.com/read-13089.html

    最新回复(0)