一种基于Revit API的栏杆构件轻量化方法
文献发布时间:2023-06-19 19:30:30
技术领域
本发明涉及一种BIM模型轻量化方法,具体涉及为一种Revit API的栏杆构件轻量化方法。
背景技术
在当前,BIM技术已经广泛的应用到建筑、环保、消防、交通、测绘、地理信息、数字城市等多个领域。在这些应用中,建筑物模型起到了至关重要的作用。但BIM模型携带的数据信息较多:例如管道线路的布设,门窗结构的细节构造等,单个建筑模型数据量往往达到百兆级别。若在城市级别场景中加载成千上万个这样的模型,将使得系统变得异常卡顿。
一个单体建筑的BIM模型中,栏杆作为楼梯、阳台的附属构件,在建筑物中大量存在,且具有较多的几何细节,占了较大一部分存储空间。而在大多数实际的应用场景中(例如室内疏散路径规划、日照分析、气流运动等),根本无需关注栏杆的复杂几何细节,只需关注栏杆的位置和简单的几何轮廓。因此亟待采取某种方法,在确保计算分析顺利进行的情况下对栏杆构件进行轻量化以提高运行效率。
发明内容
针对上述现有技术存在的问题,本发明提供一种基于Revit API的栏杆构件轻量化方法,从而解决上述技术问题。
为了实现上述目的,本发明采用的技术方案是:一种基于Revit API的栏杆构件轻量化方法,包括以下步骤:
步骤S1:新建一个BIM模型P,编辑其中自带的栏杆族,将其进行简化,生成简化的栏杆族类型R,并将该模型保存为路径Path;
步骤S2:打开一个待简化的BIM模型M,并进行系统环境初始化;
步骤S3:将P中简化的栏杆族类型R传递到模型M中;
步骤S4:从模型M中查找到简化的栏杆族类型R;
步骤S5:将模型M中所有的栏杆对象的族类型替换为R。
进一步的,所述步骤S1具体步骤为:
S11:新建一个建筑样板项目;
S12:选中栏杆扶手的默认族类型“900mm圆管”,并转步骤S13进行编辑;
S13:点击复制按钮,新建一个族类型R,并将其命名为“900mm方管”;
S14:对族类型R的“扶栏结构”参数进行编辑,在“轮廓”这一列,将其默认值“圆形扶手:30mm”改为“矩形扶手:20mm”;
S15:对族类型R的“栏杆位置”参数进行编辑,分别在“主样式”和“支柱”中,将“栏杆族”这一列的默认值“栏杆-圆形:25mm”改为“栏杆-正方形:25mm”;
S16:对族类型R的“顶部扶栏”这一参数集合的参数“类型”进行编辑,将其属性“轮廓”的默认值“圆形扶手:40mm”改为“矩形扶手:20mm”;
S17:将该项目保存为模型P,路径设为Path。
进一步的,所述步骤S2中系统环境初始化具体方法为:
S21:从commandData对象中获取类型为UIApplication的对象uiApp;
S22:从uiApp对象中获取类型为Document的对象doc。
进一步的,所述步骤S2中采用Execute方法,其包含三个参数,分别为类型为ExternalCommandData的对象commandData,类型为string的对象message,以及类型为ElementSet的对象elements。
进一步的,所述步骤S3栏杆族类型传递的具体操作为:
S31:打开路径为Path的模型P;
S32:过滤出P中所有的栏杆族类型,并存储到类型为ICollection
S33:定义一个类型为ICollection
S34:遍历railingsEles中所有的栏杆族类型,如果该族类型为R,则将它的编号(“Id”属性值)加入到集合transIDs中;
S35:定义并启动一个事务T;
S36:将transIDs从模型P复制到模型M中;
S37:提交事务T;
S38:关闭模型P。
进一步的,所述步骤S4中的具体操作为:
S41:定义一个类型为FamilySymbol的族类型对象symbol;
S42:过滤出当前项目M中所存在的栏杆族类型,并存储到类型为ICollection
S43:遍历rSymbolItem中的所有栏杆族类型,如果该族类型为R,则将其赋值给对象symbol。
进一步的,所述步骤S4中的具体操作包括:
S51:定义一个事务T1;
S52:过滤出当前项目M中所存在的栏杆族实例,并存储到类型为ICollection
S53:启动事务T1;
S54:遍历railingss中所有的栏杆族实例,将其栏杆族类型替换为symbol;
S55:提交事务T1。
本发明的有益效果是:相比较其他轻量化方法,该方法可以专门针对栏杆族进行简化,大大减少表达栏杆构件三维几何形态所需的三角面片。
附图说明
图1为本发明的算法流程图;
图2为本发明的步骤S1中手动简化栏杆族的具体操作方法;
图3为本发明所述方法实施前后的栏杆对比图(a)以及图(b)。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明了,下面通过附图及实施例,对本发明进行进一步详细说明。但是应该理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限制本发明的范围。
除非另有定义,本文所使用的所有的技术术语和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同,本文中在本发明的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本发明。
如图1、图2和图3所示,一种基于Revit API的栏杆构件轻量化方法,包括以下步骤:
步骤S1:新建一个BIM模型P,编辑其中自带的栏杆族,将其进行简化,生成简化的栏杆族类型R,并将该模型保存为路径Path;该实施例中,简化的族类型R被命名为"900mm方管",路径Path为“D:\RvtWorkingDir\solidMethod.rvt”,具体操作流程如图2所示。
具体的,S11:新建一个建筑样板项目;
S12:选中栏杆扶手的默认族类型“900mm圆管”,并转步骤S13进行编辑;
S13:点击复制按钮,新建一个族类型R,并将其命名为“900mm方管”;
S14:对族类型R的“扶栏结构”参数进行编辑,在“轮廓”这一列,将其默认值“圆形扶手:30mm”改为“矩形扶手:20mm”;
S15:对族类型R的“栏杆位置”参数进行编辑,分别在“主样式”和“支柱”中,将“栏杆族”这一列的默认值“栏杆-圆形:25mm”改为“栏杆-正方形:25mm”;
S16:对族类型R的“顶部扶栏”这一参数集合的参数“类型”进行编辑,将其属性“轮廓”的默认值“圆形扶手:40mm”改为“矩形扶手:20mm”;
S17:将该项目保存为模型P,路径设为Path。
步骤S2:打开一个待简化的BIM模型M,并进行系统环境初始化;
具体的,S21:从commandData对象中获取类型为UIApplication的对象uiApp;
S22:从uiApp对象中获取类型为Document的对象doc。
步骤S3:将P中简化的栏杆族类型R传递到模型M中;
具体的,S31:打开路径为Path的模型P;
S32:过滤出P中所有的栏杆族类型,并存储到类型为ICollection
S33:定义一个类型为ICollection
S34:遍历railingsEles中所有的栏杆族类型,如果该族类型为R,则将它的编号(“Id”属性值)加入到集合transIDs中;
S35:定义并启动一个事务T;
S36:将transIDs从模型P复制到模型M中;
S37:提交事务T;
S38:关闭模型P。
步骤S3具体代码如下:
步骤S4:从模型M中查找到简化的栏杆族类型R;
具体的,S41:定义一个类型为FamilySymbol的族类型对象symbol;
S42:过滤出当前项目M中所存在的栏杆族类型,并存储到类型为ICollection
S43:遍历rSymbolItem中的所有栏杆族类型,如果该族类型为R,则将其赋值给对象symbol。
步骤S4具体代码如下:
步骤S5:将模型M中所有的栏杆对象的族类型替换为R。
具体的,S51:定义一个事务T1;
S52:过滤出当前项目M中所存在的栏杆族实例,并存储到类型为ICollection
S53:启动事务T1;
S54:遍历railingss中所有的栏杆族实例,将其栏杆族类型替换为symbol;
S55:提交事务T1。
该步骤具体代码如下:
/>
在可视化时,计算机一般以三角网来对三维几何实体进行拟合。但在建筑物中,栏杆一般被建模为若干圆柱体的杆状物的组合,用三角网来对圆柱体进行拟合,需要较大的数据量。因此,如果将圆柱体的杆状物改为长方体的杆状物,可以大大减少数据量(长方体的每个面,只需要两个三角形就可以进行表达,大大减少三角面片的数量)。
本发明的有益效果是:相比较其他轻量化方法,该方法可以专门针对栏杆族进行简化,大大减少表达栏杆构件三维几何形态所需的三角面片。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换或改进等,均应包含在本发明的保护范围之内。
- 基于Revit API和Dynamo的预制构件BIM模型点云生成方法
- 一种基于Revit API的建筑场景简化方法