陈 强 邓焯彬 何 波 张家立
(1.广州南方建筑设计研究院,广州510640;2.广州优比建筑咨询有限公司,广州510630)
关于机电设备应急管理系统技术实现方法选择和总体设计已在《基于BIM的机电设备应急管理系统总体设计》中叙述,其中包括技术路线的分析和系统总体设计,本文重点研究软件的实现方法。
在《基于BIM的机电设备应急管理系统总体设计》一文中,通过对比分析选择了 Autodesk Navis-Works作为 BIM图形平台,后台数据库采用 Microsoft SQL Sever,利用 Microsoft.NETFramework 进行开发,系统架构图如图1。
系统架构设计基于三层架构原则,三维BIM模型显示前端借助NavisWorks的3D可视化仿真功能,再通过其自身提供的API(Application Programming Interface,应用程序编程接口)与逻辑层的逻辑接口相连接,对其进行各类的图形显示控制和图形数据读取。在此基础上,与后台关系数据库进行有规则的数据交互,结合不同环境的需求,定制出各种逻辑业务控制、数据安全校验、数据存取、可视化数据交互效果等等,从而实现高效快捷的BIM数据操作。
Autodesk NavisWorks提供了三种API方式:
·Plug-ins API
·Automation API
·Controls API
Plug-ins API是相当便捷的一种插件架构,方便开发插件模块与NavisWorks相连接,此接口连接NavisWorks模块边界,由NavisWorks管理模块的性能,模块连接后,生命周期受NavisWorks影响,在Navis-Works运行情况下,程序可以进行自身资源释放,也可交由NavisWorks管理,在NavisWorks成功加载完成后,插件接口开始调用各类模块,从而实现功能扩展,关键在于第三方程序调用,例如后台数据库,这里我们已作出多种解决方案,可作中间件,前后互连。
Automation API提供了一系列的自动化处理方法,程序在此接口上连接,可以获取NavisWorks在文档处理上的一些具体方法,我们借助此接口进行文档加载和移除,此处不但有许多文档加载的方法,还有一些指引,帮助程序调试和检测模型,模型有许多种类,接口只能支持一部分,我们在这里进行了一系列的约束,帮助程序顺利加载我们所创建的模型,使模型准确显示在接口上。
1) 机电设备应急管理系统基本功能(如图2)
图2 机电设备应急管理系统基本功能
由于篇幅所限,以下就几个关键功能模块的实现方法进行说明。
2)BIM模型实时漫游浏览
BIM模型可以实现比较高的仿真度,利于物业管理和维修保养人员身临其境、直观方便地观察相应设施。但由于同时要显示三维模型和相关信息,通常的单屏幕显示(图3)用户体验不理想,为此我们开发了可以支持双屏幕输出方式(图4),扩展了工作界面宽度,更宽更广的显示效果、不但能容纳更多内容,而且还能提升操作体验。
3) 机电设备信息管理
运维管理的BIM模型理想状态是竣工的BIM模型,但也可以继承设计或施工的模型,然后通过模型整理达到运维的要求。不论是何种方式,最终在本系统都需要显示BIM模型的属性,利用以下几个主要的NavisWorks API访问模型:
·Autodesk.NavisWorks.Api.Application
·Autodesk.NavisWorks.Api.Document
·Autodesk.NavisWorks.Api.Model
·Autodesk.NavisWorks.Api.ModelItem
·Autodesk.NavisWorks.Api.ModelItem
图3 单屏幕显示图2b:双屏幕显示
Controls API,NavisWorks图形驱动接口,负责三维图像绘制和显示,保留了用户与程序交互的操作模式。借助此接口,可以在程序自身的窗体上,进行NavisWorks文档的三维显示,功能需要重新组合,方便开发三维仿真程序,接口自由度由Navis-Works内部管理,程序调用需要通知NavisWorks核心,而显示范围可以在程序上进行规定。
借助Controls API接口,引用其三维显示能力,组装在程序上,与程序内部逻辑接口相连接,可以实现机电设备应急管理系统的各种功能。由于是借助于NavisWorks的BIM图形引擎,随着其引擎的不断改进,将会带来更出色的图形引擎技术,我们将接口与此先进的图形引擎接口相连接,从而也就同步改进图形技术,保证系统在BIM图形显示、实时漫游浏览的先进性,也极大降低了开发成本。
SQL Server数据库引擎是用于存储、处理和保护数据的核心服务。利用数据库引擎可控制访问权限并快速处理事务,从而满足需要处理大量数据的应用需要,具有使用方便、可伸缩性好、与相关软件集成程度高等优点,与WINDOWS操作系统紧密结合。
NET是微软的新一代技术平台,为敏捷商务构建互联互通的应用系统,这些系统是基于标准的、联通的、适应变化的、稳定的和高性能的。从技术的角度,一个NET应用是一个运行于.NET Framework之上的应用程序。(更精确的说,一个.NET应用是一个使用.NET Framework类库来编写,并运行于公共语言运行时Common Language Runtime之上的应用程序。)
图4 对象属性对应的API
具体实现如下:
//当前文档
Document doc=Application.ActiveDocument;
//第一个模型
Model Model=doc.Models[0];
//模型的根节点
ModelItem root=Model.RootItem;
//访问节点的属性
boolis_hidden=root.IsHidden;
//选择集
ModelItemCollectionoModelColl=doc.CurrentSelection.SelectedItems;
访问BIM模型的对象属性,可利用如下的API:
·Autodesk.Navisworks.Api.PropertyCategory
·Autodesk.Navisworks.Api.DataProperty
其关系如下图3:
由于NavisWorks是支持多语言程序,所以属性名(表1)有如下特点:
·预定义名:
·不随版本或语言变化
·方便使用
·内部名
·不随版本或语言变化
·显示名
·最终用户看见的
·随版本或语言变化
由于NavisWorks“显示名”会随版本和语言变化,所以在程序实现上要避免直接使用“显示名”而使用“预定义名”或“内部名”。
对于机电设备应急管理系统,每个对象构件的ID是与后台数据库关联的唯一标识,所以上述获取对象ID的方法尤为关键,对于使用Autodesk Revit建立的模型,可以通过以下方法访问对象属性:
//通过“预定义名”访问对应的Category
PropertyCategoryoPC=
oSelectedItem.PropertyCategories.FindCategory-ByName(PropertyCategoryNames.RevitElementId);
//通过“预定义名”访问对应的DataProperty及其值:
DataProperty prop=
oPC.Properties.FindPropertyByName(DataPropertyNames.ItemName);
string value=prop.Value.ToDisplayString();
4) 二维码扫描
二维码,又称二维条码,它是用特定的几何图形按一定规律在平面(二维方向)上分布的黑白相间的图形,可实现的应用十分广泛,如:网站链接、数据下载、商品交易、定位/导航、电子凭证。如今智能手机扫一扫功能的应用使得二维码更加普遍。
在日常的机电设备维护过程里,需要在BIM系统里查找出相应设备的资料,通常要在三维模型里通过空间定位,再在此区域内按照分类进行选取,过程不够快捷。若然在机电设备上贴上编号,再按此编号进行查询,可更快捷地得到相应的信息。
我们开发一套能在智能手机获取二维码信息的工具。利用这工具,维护人员将无需手工记录编号,只要让手机扫描完毕后,通过更智能的办法,例如无线网络,USB接口等方式,把已经获取到的二维码信息发送到BIM系统里,系统把设备的相应资料调出来。
表1
基于智能手机系统已有成熟的开发平台,开发出一套从二维码扫描,到信息记录,最终把信息发送给该系统。维护人员利用安装了二维条码扫描的智能手机,把摄像头对准贴在设备上的二维码进行拍照,然后分析照片中的二维码信息,最终把结果显示出来,此时可以选择继续为其他设备扫描。当扫描结果符合设备编号规范,工具便会把信息记录下来。用户可以在历史记录里查找,这里有相片和日期可以分辨出设备之间的不同。当用户查找到需要获取BIM信息的记录后,可以选择发送到该系统,此功能在WIFI模式下使用TCP/IP协议把数据传送到安装有该系统的电脑上,即可完成数据传递。当然我们也会考虑到现场工作环境的复杂,当没有网络可用时,还可以同过USB连接方式来上传二维码信息。以下是智能手机扫描二维码的实现方法:
//启动拍摄
CodeScancs=new CodeScan();
//初始化摄像头
Camera ca=cs.Camera.Init();
//启动摄像头
ca.Action();
//分析二维码
Decode de=new Decode();
//获取结果
String result=de.GetResultBy(ca.CurrentPicture);
//保存记录
DBContextdb=new DBContext();
db.AddRecord(result,DataTime.Now,ca.CurrentPicture);
//初始化服务器
Server se=new Server(IPScan.GetIpBy(4567));
//读取记录
Record re=db.GetRecordById(1);
//发送
Boolean isSended=se.Receive(re);
se.End();
5) 故障及上游设备查询
一条完整的管道系统被看作为有向链表,设备则是链表的节点,为一个设备添加直属上下级,就是在链表中添加节点,而关系则是链表方向,利用链表算法,就可以快速查找节点的子孙节点或者祖先节点。如一个设备需要更换,则可通过链表算法查找出受影响的其他设备。上下游关系原则如下(图5):
·一个设备不能添加自身为任何关系;
·两个设备之间只能存在一种关系;
·A设备是B设备的子孙,则A设备不能是B的祖先,反之亦是;
·一个设备可以有多个上级或者下级设备。
图5 设备上下游逻辑关系原则
该系统基于图4的逻辑关系原则,利用BIM模型和BIM数据库技术建立机电设备之间的逻辑关系,利用链表算法,递归出该设备所有子孙设备,从而得到受影响设备列表(图6)。
图6 机电设备上下游关系
6) 相关图纸文档管理
传统的运维管理主要依赖与资质的资料,即使有电子文档也大多数没有集成管理,导致资料查询费时费力,甚至由于时间太久资料缺失,一旦发生故障需要查阅相关资料时却无法及时获取。基于BIM的机电设备应急管理系统,利用BIM技术的信息集成优势,结合关系型数据库技术,可以较好地解决这个问题。
该系统每个设备都可以携带着属于自身的电子文档,在实际操作中将统一称为附件。这些附件可以是说明书、相关证件、相关记录等等,以附件形式上传到数据库中进行保存,以便管理和随时查看(图7)。
图7 模型与相关图纸关联显示
基于BIM的机电设备应急管理目前还没有成熟的成品,我们在目前的软硬件条件下,尝试选择了Autodesk NavisWorks作为BIM平台,后台数据库采用Microsoft SQLSever,利用Microsoft.NETFramework 进行开发,在武汉国际博览中心展馆(建筑面积45万m2,该项目为华中科技大学BIM工程中心和广州优比建筑咨询有限公司联合服务项目)中应用。完成后的BIM模型文件容量为7GB,总构件对象44万个,其中机电对象23万个,在NavisWorks里模型的面数量为1.3亿个,在以下软硬件配置下实现了良好的运行性能:
·操作系统:Windows 7 64bit
·CPU:四核、主频2.8GHz
·内存:8GB
·硬盘:12GB可用空间
·显卡:1 GB独立显卡
·双屏显示:1920X1080显示器
基于BIM的机电设备应急管理系统从软件实现的角度,在目前软硬件条件下,其中比较关键的是大型复杂项目三维BIM模型的图形显示技术和机电设备管线上下游逻辑关系建立和检索两项技术,由于要处理的BIM模型信息量巨大,而目前软硬件的性能有限,我们选择了目前技术比较成熟的Autodesk NavisWorks作为BIM图形平台,在大型BIM模型显示、实时漫游浏览的性能方面达到了较好的性能。在处理机电设备管线上下游逻辑关系的关键技术上,自定义了机电设备管线零件的逻辑关系数据格式,并独立于BIM模型映射到Microsoft SQL Sever数据库中,实现高效的上下游检索,通过映射关系实现BIM模型与数据库关联,较好地解决了BIM模型数据与机电设备应急管理数据的融合,尝试基于BIM的机电设备应急管理系统实现的其中一种途径。
[1]广州优比建筑咨询有限公司.《优比BIM建设项目设备管线应急维护管理系统》,软件著作权申请资料,2011
[2]葛清等.《BIM第一维度——项目不同阶段的BIM应用》,中国建筑工业出版社,2013
[3] Autodesk Navisworks 2013.NET APIReference Guide
[4]秦洪现,崔惠岚,孙剑等.《Autodesk系统产品开发培训教程》,化工工业出版社,2008
[5]陈威兵,张刚林,黄飞江.《基于手机的二维条码识读系统研究与开发》,现代电子技术期刊论文2012
[6] Reto Meier.《Professional Android 2 Application Development》,2010
[7] Jesse Storimer.《Working with TCP Sockets》,图灵程序设计丛书,2013
[8] Wallace B.McClure,Nathan Blevins.《Professional Android Programming with Mono for Android and.NET/C#》,移动与嵌入式开发技术,2013