APP下载

基于Revit 二次开发的电气设备族平台的搭建

2015-01-09马小军

土木建筑工程信息技术 2015年4期
关键词:系列化实例文档

钱 海 马小军 来 侃

(南京工业大学 电气工程与控制科学学院,南京 210000)

引言

BIM 技术在建筑设计、结构计算、建筑能耗分析、设备管理、虚拟施工等专业已取得一定的研究成果[1],然而目前针对BIM 技术中电气设计的应用研究相对较少。在BIM 应用过程中,所产生的BIM模型有很多类型。目前针对特定的BIM 软件平台已经出现了一些第三方BIM 模型构件库管理软件工具[2],但是①Revit 中只有少量电气设备族,难以满足电气工程设计的需求;②电气设计人员在建模时,需要从本地族库载入想要的电气设备族,工作效率低下;③Revit 明细表功能能实现具体实例及其属性的统计,但需要花费不少时间来设置参数。

本文基于开放IFC 标准,结合BIM 协同设计过程参考模型,首先基于Revit 平台研究电气设备参数化模型,分析不同电气设备族的共性与特性,并研究了BIM 电气设备族的创建方法与使用现状。接着分析Revit API 两种外部功能扩展方式,研究了Revit 对象的访问、过滤、编辑与创建等方法。然后研究Family API 关于族类型获取、族创建和族编辑的方法。最后构建基于Revit 二次开发的电气设备族平台,实现①项目已加载及本地电气设备族的快速统计查询,且电气设备族可直接拖动到项目中使用,大大提高建模效率;②对于协同设计平台下存储在云端的项目模型,通过本文开发的族属性导入模块可将所有实例及其属性导入到本地SQL Sever数据库,并统计出系统族实例和构件族实例的个数。本文研究内容的技术路线图如图1 所示。

图1 技术路线图

1 电气设备参数化模型

建立BIM 电气设备族库,需要对项目全生命周期电气设计信息进行整理,按照主要参数、关键属性,结合实际电气业务需要对电气设备BIM 模型的资源进行分类,完成对BIM 模型资源的通用化、系列化、模块化整合,保证在BIM 模型族库中存储的模型及构件在实际设计过程中具有良好的通用性[3],同时具备良好的可维护和可扩展性,适应建筑电气设计领域不断发展的需要。

电气设备参数化设计模型构件整理的内容主要有两方面,一是电气设备族的系列化整理;二是电气设备族的模块化整理。

(1)电气设备族的系列化整理

系列化整理,通过对同一类电气设备族规律性的分析研究,进行合理的基础建模,可根据模型主要参数的驱动,自动生成该类构件各类型尺寸的模型,并将其类型名称、编码、主要尺寸参数、关键属性等从模型中剥离形成系列化构件模型。

电气设备族的基本参数是其基本性能或基本技术特性的标志,是选择或确定族功能范围、规格、尺寸的基本依据[4]。电气设备族基本参数系列化是系列化的首要环节,是进行系列化设计的基础。对于一类电气设备族,选择一个或几个基本参数,并确定其上下限。

建立电气设备族的参数系列表。先基于模型构件的基本参数,形成该类构件的参数系列,之后增加其他所需的属性(如类型名称、编码、关键属性等)。

完成电气设备族的参数化建模过程,基于基本参数,并充分考虑到尺寸系列变化可能对模型产生的影响,通过公式的方式描述其他几何参数,逐步完成模型构件的建模[5]。之后对参数系列表中的各项逐一生成模型,检查模型造型是否正确。

系列化整理流程如图1 所示。

图2 电气设备模型构件的系列化整理

(2)电气设备族的模块化整理

模块化整理,按照标准化原则,基于实际电气业务需要,对已有的电气设备模型进行拆分、整理,将电气设备模型的部分构件组合在一起,最终形成一系列通用性较强的电气设备模型单元。

2 电气设备族创建与分析

以格栅吊灯为例,在Revit 基础上说明照明设备族的创建思路、其他参数设置及创建过程。格栅吊灯族为嵌套族。

2.1 照明设备族的创建思路

(1)创建几何形体:用公制照明设备族样板创建灯罩(含吊杆、吊杆法兰),并作为主体族。用公制常规模型族样板创建内置格栅,并作为嵌套族装在灯罩中,并且运用“阵列”功能,将内置格栅沿长度方向阵列,同时将吊灯“长度”和“格栅片数”两个参数值通过公式相关联。

(2)吊灯类型设置:根据要求,创建三种不同的吊灯透光类型:上部透光、下部透光和上下部均透光。根据遮罩的不同材质进行设置。

(3)添加照明设备参数:照明设备参数的设置用来满足设备工程师对灯具参数的要求,重点配置电气连接件和选择相对应的光域网文件[6]。

2.2 照明设备族的创建步骤

Revit 中格栅吊灯族创建过程主要有:第1 步,创建格栅嵌套族;第2 步,创建格栅吊灯族;第3 步,添加照明设备参数;第4 步,保存并应用于项目文件。具体创建过程如图2 所示。

图3 格栅吊灯创建过程

2.3 电气设备族分析

初步整理出电气设计中基本需要的族有:消防端子箱-明装;配电箱-暗装;三管格栅荧光灯;疏散指示灯;三联开关;二三孔插座;感烟探测器;感温探测器;火警电话插孔;消防广播;消防报警电话;消防启泵按钮;半球形摄像机;电视插孔;电话和网络插孔等[4]。

3 Revit API 方法

3.1 Revit API 功能扩展方式

Revit API 通过两种方式扩展Revit 功能,External Command 和External Application。External Command 实现外部命令的功能,使用外部工具加载,External Application 实现外部应用的功能,都需要引用Revit API.dll 和RevitAPIUI.dll 文件。Revit API.dll包含了在数据库层控制Revit 的应用、文档、对象和参数的方法,而Revit APIUI.dll 包含了在操作和Revit 用户界面层的所有自定义API 接口。

External Command 和External Application 的实现方法是不同的。External Command 通过重载Execute()方法实现,而External Application 是通过On-Startup()和OnShutdown()方法的配合使用,才能实现功能扩展[7]。

本文使用IExternal Application 完成电气设备族统计人机界面面板的功能。族属性导入模块不添加面板,直接用外部工具加载实现。使用IExternal Command 完成电气设备族统计及族属性导入的功能。

使用External Command 和External Application两种方式进行编译与测试时,Revit.exe 启动后,.addin 文件中的命令会被加载。本文构建的电气设备族平台的.addin 文件如下:

3.2 Revit API 对象访问

Revit API 中有两种方式根据标识来识别区分和访问不同对象。第一种方式,只使用类名来判断,能容纳其它对象或特定用途的类,如:Wall、Floor、Cont.Footing、Ceiling 等系统族的实例。第二种方式,如果通过类名无法分别出来,需联合对象的类别(Category)来判断。但是,门、窗、柱等对象没有专用的类来表示,都是FamilyInstance 的实例。

本文采用Category 来判断其类别,用枚举型的BuiltInCategory 来创建ElementCategoryFilter 对象。

3.3 Revit API 对象过滤

Revit 平台中所有的对象遍历都必须要使用FilteredElementCollector 类,它提供了对文档中的对象过滤的所有功能,在过滤操作时至少需要添加一个过滤条件,也可被赋予多个过滤条件。添加过滤条件后,满足条件的对象集合立即就可以从这个类访问。Revit 可以通过三种用法实现FilteredElementCollector 过滤,过滤的方法、条件、范围、特点及实例如表1 所示。

表1 FilteredElementCollector 的三种方法

4 Family API 方法

4.1 加载族、创建族实例

LoadFamily()加载整个族和族所有的类型或者标签到项目中。文档类别提供类似的方法LoadFamilySymbol(),加载特定的族标签。LoadFamilySymbol()只从族文件中加载特定的族标签到项目中。

4.2 族、类别、族文档创建

Revit API 中Family Creation 函数可以创建和编辑族和族类型,但是Revit API 不能编辑系统族。如果外部系统有已存可用的数据要传入到Revit 族库中,可以使用此函数有效地实现。

(1)获取族类别

FamilyBase.FamilyCategory 属性表示族的类别,如Columns、Furniture、Structural Framing、Windows。通过如下代码确定一个开放的Revit 族文件的族类别:

string categoryName=familyDoc.OwnerFamily.FamilyCategory.Name;

(2)获取族参数

可以通过族文档的OwnerFamily 属性得到族参数,代码如下:

(3)创建族文档

由IsFamilyDocument()属性确定文档是否是族文档。如果文档是族文档,修改Revit 族文档、获取族类型和参数可通过族文档类别获取。在一个项目文档中编辑一个已有族,可以使用文档类别的EditFamily()函数,编辑完成之后,使用LoadFamily()重新加载族到所有者文档。本文使用Application.NewFamilyDocument()创建一个新族文档,代码如下:

(4)嵌套族标签

使用Family Symbol 从族文档中过滤族标签,获取加载到族中的所有族标签。

5 基于BIM 的电气设备族平台构建

使用IExternal Application 完成添加电气项目视图、电气设备族统计两个模块人机界面面板的功能。族属性导入模块不添加面板,直接用外部工具加载实现。

5.1 电气设备族统计与拖动

本模块使用IExternal Command 的继承类DragAndDropCommand 实现,使用Revit API 过滤器获取项目已加载的电气设备族和本地族库中电气设备族的类别,并做相关显示处理。笔者选用电气项目文件“某建筑地下二层变电室.rvt”作为案例,对平台的可行性和可靠性进行验证。

项目已加载的电气设备族统计模块显示项目中所有用到的电气设备族,如图4 左边部分。本地电气设备族统计模块显示本地族库中所有的电气设备族,如图4 右边部分。

图4 电气设备族统计

项目已加载的电气设备族拖动模块可以从已统计出的项目电气设备族列表视图中,拖动相关族直接放置于当前项目中,方便电气设计中设备族的加载与使用,提高工作效率。

5.2 族属性导入

本模块用外部命令方式实现。将.addin 文件放置于C:ProgramDataAutodeskRevitAddins2014。

首先,归纳Revit 2014 系统族有:门、窗、柱、屋顶、楼板、天花板、Cont.Footing、风管、风管附件、管件、管路附件。接着,过滤出族实例,提取属性,插入数据表。然后,找出模型中的系统族和构件族的实例,分别提取系统族实例的属性和构件族实例的属性。最后,分别插入到系统族表和构件族表。

打开SQL Server 2008 数据库链接,保证外部数据可以插入到数据库中已建立的表SystemFamily 和ComponentFamily[8]。执行外部命令“FamilyProperties”,族属性导入入口位置如图5(a)所示。

插件完成当前项目的族属性数据插入后,自动统计出已插入到数据库中的系统族实例个数为141,构件族实例的个数为813,如图5(b)所示。

图5 族属性导入入口与结果

查询数据库系统族表和构件族表。分别对表SystemFamily 和表Component-Family 进行查询。使用查询语句如下:

图6 构件族表查询结果

(1)select instanceName,categoryName,categoryName from SystemFamily;

(2)select instanceName,categoryName,categoryName from ComponentFamily。

查询结果如图6 所示,表SystemFamily 中有141行属性数据,表ComponentFamily 中有813 行属性数据。通过对比之前的族实例插入个数统计结果可知,族属性导入模块在对当前项目的族属性数据进行导入是可靠的。

6 结语

实验结果表明,基于IFC 标准的电气设备族平台进行项目相关项统计、电气设备族的统计与拖动是可行的,可以提高工作效率。经过与SQL Sever数据库查询结果的对比,表明族属性数据导入功能是可靠的。由于Revit API 数量和功能随着版本的更新越来越丰富和完善,短时间内无法将其功能充分发挥,因此可以进一步加强Revit API 的应用研究。

[1]李宁.基于BIM 与IFC 的混凝土坝施工仿真信息模型构建方法研究[D].天津:天津大学,2012.

[2]Tanyer Ali Murat,Aouad Ghassan.Moving Beyond the Fourth Dimension with an IFC-based Single Project Database[J].Automation in Construction,2005,14(1):15-32.

[3]朱立红,杨鹤标.海量结构化数据查询系统的研究与实现[J].计算机应用与软件,2014,31(2):29-32.

[4]Lipman,Robert R.Details of the mapping between the CIS/2 and IFC product datamodels for structural steel[J].Electronic Journal of Information Technology in Construction.2009(14):1-13.

[5]满庆鹏,孙成双.基于IFC 标准的建筑施工信息模型[J].土木工程学报,2011,44(S1):239-243.

[6]来侃,马小军,朱亮.电气设备族在BIM 照明设计中的应用[J].电气应用,2015,34(2):30-34.

[7]林良帆.BIM 数据存储与集成管理研究[D].上海:上海交通大学,2013.

[8]陆宁,马智亮.利用面向对象数据库与关系数据库管理IFC 数据的比较[J].清华大学学报,2012,52(6):836-842.

猜你喜欢

系列化实例文档
浅谈Matlab与Word文档的应用接口
有人一声不吭向你扔了个文档
系列化主题制教学法在环境艺术设计课程中的应用探究
基于核心素养的小学主题班会系列化研究
开展系列化阅读指导 提升学生阅读素养
东风猛士军车立足未来战场需求实现系列化车族化平台化
Word文档 高效分合有高招
Persistence of the reproductive toxicity of chlorpiryphos-ethyl in male Wistar rat
完形填空Ⅱ
完形填空Ⅰ