基于RevitAPI和Dynamo的预制构件BIM模型点云生成方法

文档序号:30963258发布日期:2022-07-30 15:02阅读:2265来源:国知局
基于RevitAPI和Dynamo的预制构件BIM模型点云生成方法
基于revit api和dynamo的预制构件bim模型点云生成方法
技术领域
1.本技术涉及建筑信息化技术,特别是公开基于revit api和dynamo的预制构件bim模型点云生成方法,属于计算、推算或计数的技术领域。


背景技术:

2.装配式建筑是目前广为采用的建造工艺,构件在工厂批量生产预制后运送至施工现场,在施工现场将预制构件与现浇构件拼装完成整体建造。批量生产后的预制构件的几何尺寸,以及预应力张拉、运输、存梁过程中发生的弯曲、扭转等几何形态变化,都是检测制作构件质量的重要关注点。
3.点云数据是通过三维激光扫描仪或机器视觉技术获取的高精度、高密度、全数字化的目标物表面坐标数据,代表目标物的实际几何形态。已有众多研究将点云模型与目标物设计模型对比,以获得目标物实际形态与设计形态的差异,这一思想在土木工程构件、工业零件的尺寸检测中已有广泛应用。
4.bim(building information modeling,建筑信息模型)技术是一种应用于工程设计、建造、管理的数据化工具。装配式建筑常采用bim技术进行模拟拼装和信息存储。revit是常用的bim建模软件,其辅助编程工具dynamo常作为revit与其它软件数据沟通的桥梁,可将bim模型携带的信息转化为其它形式的数据,但dynamo几何对象与revit有所不同,在数据交互时需转换几何对象类型。
5.目前,相关研究多是将三维激光扫描获得的点云与其bim三维模型精确拟合对齐,然后对比二者偏差,这一过程通常依赖于专业点云处理软件。然而,各软件所擅长的功能不同,如部分软件无法实现建筑物垂直度检测功能,且多数软件不能满足用户对某些特殊功能的需求;在三维模型文件导入时,各软件所支持的文件格式也有所不同,常需要做文件类型转换,其过程较为繁琐。


技术实现要素:

6.本发明的发明目的是针对上述背景技术的不足,提供基于revit api和dynamo的预制构件bim模型点云生成方法,得到存储设计点云位置坐标的txt格式文本文件,实现不同点云处理软件对设计点云位置坐标的读取,为点云拟合对齐、构件类型识别等提供数据支持,解决不同点云处理软件不能兼容bim三维模型以及部分点云处理软件不能满足所有构件检测需求的技术问题。
7.本发明为实现上述发明目的采用如下技术方案:基于revit api和dynamo的预制构件bim模型点云生成方法,依托autodesk revit平台建立预制构件bim模型族文件;在revit二次开发程序框架下构造元素收集器并创建元素过滤器,所述元素收集器收集bim模型族文件储存文档中的所有元素,所述元素过滤器对元素收集器收集的信息进行过滤以保留目标预制构件bim模型的族实例;从目标预制构件bim模型的族实例中获取实体类型的几何对象,从实体类型的几何对象中获取面类型和边
类型的几何对象;将面类型的几何对象转换为dynamo支持的面类型几何对象,将边类型的几何对象转换为dynamo支持的线类型几何对象;利用dynamo内置的几何运算方法将其支持的面类型几何对象、线类型几何对象离散为点集。
8.进一步地,基于revit api和dynamo的预制构件bim模型点云生成方法,从目标预制构件bim模型的族实例中获取实体类型的几何对象的具体方法为:访问目标预制构件bim模型的族实例的几何元素,依次访问几何元素所包含的几何对象,将实体类型的几何对象转换为实体类型的子类型。
9.进一步地,基于revit api和dynamo的预制构件bim模型点云生成方法,将面类型的几何对象转换为dynamo支持的面类型几何对象的具体方法为:在revit api中应用三角化方法将面类型的几何对象转化为三角网格类型,获取所述三角网格模型的角点坐标;通过dynamo中point.bycoordinates方法调用所述三角网格模型的角点坐标,创建dynamo支持的角点;通过dynamo中polycurve.bypoints方法,将同一个面上的角点连接为一条闭合曲线;再通过dynamo中surface.bypatch方法,以闭合曲线为边界创建平面,获得dynamo支持的面类型几何对象。
10.进一步地,基于revit api和dynamo的预制构件bim模型点云生成方法,将边类型的几何对象转换为dynamo支持的线类型几何对象的具体方法为:在revit api中应用ascurve方法将边类型的几何对象转化为线类型的几何对象,获取线类型几何对象的两端点坐标;通过dynamo中point.bycoordinates方法调用所述线类型几何对象的两端点坐标创建端点;通过dynamo中line.bystartpointendpoint方法连接端点创建线段,获得dynamo支持的线类型几何对象。
[0011] 进一步地,基于revit api和dynamo的预制构件bim模型点云生成方法,利用dynamo内置的几何运算方法将其支持的面类型几何对象、线类型几何对象离散为点集的具体方法为:通过dynamo中surface.pointatparameter方法,随机生成uv参数对,在面类型几何对象上提取uv参数处的点的坐标,通过geometry.distanceto方法剔除面轮廓外的噪点;通过dynamo中curve.pointatparameter方法,提取线类型几何对象上指定参数处的点的坐标。
[0012]
进一步地,基于revit api和dynamo的预制构件bim模型点云生成方法,利用dynamo内置的几何运算方法将其支持的面类型几何对象、线类型几何对象离散为点集后,将离散后的点集输出为.txt格式文件。
[0013]
进一步地,基于revit api和dynamo的预制构件bim模型点云生成方法, revit二次开发程序框架依托.net框架,通过基于c#语言的外部命令接口搭建。
[0014]
一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述基于revit api和dynamo的预制构件bim模型点云生成方法。
[0015]
一种预制构件识别方法,采用上述基于revit api和dynamo的预制构件bim模型点云生成方法获得预制构件的点云模型,通过预制构件的扫描点云与设计点云拟合对齐,识别构件类型并获得尺寸检测结果。
[0016]
本发明采用上述技术方案,具有以下有益效果:(1)本发明依托autodesk revit平台,在revit二次开发程序框架下提取预制构件bim模型的实体类几何对象,通过dynamo调用revit api将revit中的几何对象转换为
dynamo支持的几何对象,获得可兼容于不同点云处理软件的设计点云,为点云对齐、构件识别提供设计点云数据,不同点云处理软件调用txt格式文件的点云文件时无需进行文件类型的转换,提高点云数据的使用效率。
[0017]
(2)采用本发明生成的设计点云以txt格式文件存储,将txt格式文件的设计点云导入matlab、python等数据处理软件后,用户可根据实际需求对其进行修改或增减以满足特殊检测功能的要求。
附图说明
[0018]
图1为本发明生成bim模型点云的总流程图。
[0019]
图2为本发明一个实施例中预制箱梁的bim模型。
[0020]
图3为本发明一个实施例中预制箱梁bim模型梁端平面离散后的点云。
[0021]
图4为本发明一个实施例中预制箱梁bim模型梁端边线离散后的点云。
[0022]
图5为本发明一个实施例中预制箱梁bim模型梁端离散后的点云。
[0023]
图6为本发明一个实施例中预制箱梁bim模型整体离散后的点云。
具体实施方式
[0024]
为了使本技术的发明目的、技术方案及技术效果更加清楚明白,以下结合附图及实施例,对本技术进行进一步的详细说明。应当理解,此处描述的具体实施例仅用以解释本技术,并不用于限定本技术。
[0025]
以一个预制混凝土箱梁为实施例,生成预制混凝土箱梁bim模型点云的流程图如图1所示,包括如下八个步骤。
[0026]
步骤一、依托autodesk revit平台,根据设计图纸建立预制混凝土箱梁构件bim模型.rfa族文件基于revit内置“公制轮廓”族文件,制作混凝土箱梁截面轮廓族、横系梁截面的参数化轮廓族文件。基于revit内置“公制轮廓-梁和支撑”族文件,通过轮廓族放样建立混凝土箱梁bim模型族文件,生成的混凝土箱梁bim模型如图2所示。
[0027]
步骤二,依托.net框架,使用c#语言,通过外部命令接口搭建revit二次开发程序框架在visual studio新建类库项目,为项目添加revit api.dll和revit apiui.dll引用文件,添加revit常用命名空间,除此之外还需添加dynamo几何相关命名空间;在名为execute的方法中编写功能代码。
[0028]
步骤三,构造元素收集器,利用元素收集器储存文档中所有元素,元素收集器包含了元素的类型(familysymbol)和实例(familyinstance),进一步创建元素过滤器,元素过滤器对元素收集器收集的信息进行过滤并保留需要的特定族实例。
[0029]
对于族类型为sweep的混凝土箱梁,元素收集器从混凝土箱梁bim模型族文件中收集并储存所有元素,元素过滤器对元素收集器中储存的元素进行过滤保留类型为sweep的实例。
[0030]
步骤四,访问族实例的几何元素(geometryelement),再访问几何元素所包含的几何对象(geometryobject),从中获取实体(solid)类型的几何对象
访问族实例的几何元素(geometryelement),几何元素包含了模型所含有的点(point)、线(curve)、边(edge)、面(face)、实体(solid)等,统称为模型的几何对象(geometryobject)。依次访问几何元素所包含的几何对象,判断其是否为实体类型,如果是则将该几何对象强制转换为其子类型——实体(solid)类型,后续步骤均在子类型,也就是实体类型几何对象的基础上操作。例如,对于步骤三获得的类型为sweep的实例,访问类型为sweep的族实例的几何元素,再访问类型为sweep的族实例的几何元素中的每一类几何对象,判断几何对象的类型,获取实体(solid)类型的几何对象。
[0031]
步骤五,访问实体(solid)类型几何对象的属性,获取面(face)类型几何对象和边(edge)类型几何对象步骤六,借助revit附加模块dynamo内置的几何图形创建方法,将revit中的面类型和线类型几何对象转化为dynamo支持的几何对象,在dynamo中创建面(surface)和线(line)对于面类型的几何对象,在revit api中应用三角化(triangulate)方法,将面转化为三角网格(mesh)类型,访问三角网格的顶点(vertices)属性,最终获取面的角点坐标xyz。分别提取角点的三个坐标数据,通过dynamo中point.bycoordinates方法创建角点,即完成了dynamo支持的点类型几何对象的创建。
[0032]
通过dynamo中polycurve.bypoints方法,将同一个面上的角点连接为一条闭合曲线,再通过surface.bypatch方法,以闭合曲线为边界创建平面,即完成了revit支持的面类型几何对象向dynamo支持的面类型几何对象的转化对于边类型的几何对象,在revit api中应用ascurve方法,将边转化为线(line)类型,获取线的两端点坐标xyz。提取端点的三个坐标数据,通过dynamo中point.bycoordinates方法创建端点,即完成了dynamo支持的点类型几何对象的创建通过dynamo中line.bystartpointendpoint方法创建线段,即完成了revit支持的边类型几何对象向dynamo支持的线类型几何对象的转化。
[0033]
步骤七,基于dynamo中创建的几何对象,调用dynamo内置的几何运算方法,将线、面离散化为点集通过dynamo中surface.pointatparameter方法,随机生成uv参数对,参数需大于0小于1,在面上提取uv参数处的点的坐标,当面的形状不规则时,随机生成的点可能位于面轮廓外而成为噪点,这时还需通过geometry.distanceto方法判断点与面轮廓的位置关系,剔除轮廓外的噪点,图3所示为预制混凝土箱梁bim模型梁端平面离散后的点云。
[0034]
通过curve.pointatparameter方法,提取线上指定参数处的点的坐标,参数需大于0小于1,图4所示为预制混凝土箱梁bim模型梁端边线离散后的点云。
[0035]
将各平面和边线上提取的点合并,即为该实体离散后的点集,图5所示为预制混凝土箱梁bim模型梁端离散后的点云。
[0036]
步骤八,将离散后的点集densepoints输出为.txt格式文件,图6所示为预制混凝土箱梁bim模型整体离散化后的点云。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1