APP下载

基于Revit平台的建筑管理信息系统

2017-10-24刘丽娜

关键词:插件鼠标数据库

郑 华 刘丽娜

(石家庄铁路职业技术学院 河北石家庄 050061)

基于Revit平台的建筑管理信息系统

郑 华 刘丽娜

(石家庄铁路职业技术学院 河北石家庄 050061)

针对基于B/S结构的BIM服务器在模型显示、模型分析、数据统计等方面的难点问题,本文以Revit为例,通过WebGL技术和Three.js引擎,设计并实现了一种B/S结构的BIM管理信息系统,文章重点介绍了模型分析、子建筑识别与热点处理、模型与数据库的关联查询等问题。实验结果表明,以Revit和WebGL配合来建立BIM服务器技术可行,且具有跨平台、无插件等优点。

BIM Revit WebGL B/S 管理信息系统

1 引言

BIM(Building Information Model,建筑信息模型)技术的诞生为建筑信息化带来了福音,理论上的BIM可以面向建筑全生命期,实现建筑各阶段和各参与方之间的信息集成和共享,解决“信息断层”和“信息孤岛”的问题,提高建筑产业效率和建筑产品质量[1]。

实践中,需要一个以实际技术搭建的系统将这些特性实现,BIM服务器应运而生。根据客户端的形式不同,网络结构模式可分为C/S架构与B/S架构。目前BIM服务器的主要形式为C/S架构,B/S架构的很少。这主要是Web环境的功能限制所造成的,而其中最为关键的便是基于浏览器的三维图形加速技术[2]。

随着HTML5标准的推出和WebGL技术的日益成熟,浏览器端的3D引擎问题有了好的解决方案,但作为一个开放标准,WebGL并不能解决BIM领域的特定问题,比如模型的读取、解析、显示、控制问题。另一个需要解决的问题是模型与数据库之间的关联问题,模型通常只携带几何和材质信息,大量的BIM数据则存储在数据库服务器端,必须在模型文件和数据库服务器之间建立关联关系,才能实现模型的信息化管理。

本文以Revit模型为例,结合WebGL引擎,重点研究了面向Web的BIM模型的展示、遍历、子建筑拾取、异步提示、分类统计等问题,设计了一套可行的BIM管理信息系统方案。文章最后以一栋二层建筑为例,实现了基于模型的异步提示和数据统计,实验结果表明,基于Revit模型和WebGL引擎的BIM服务器可以支撑B/S模式的BIM管理信息系统,且具有跨平台、无插件等优点。

2 系统设计

2.1 模型显示

2009年8月,Khronos提出WebGL绘图技术,它是一个跨平台、免费的、用于在Web浏览器上创建三维图形的API,基于OpenGL ES 2.0标准,使用OpenGL着色语言 GLSL,提供了类似于标准的OpenGL的API[3],可以直接在HTML5的Canvas元素中绘制三维动画并提供硬件三维加速渲染,不需要安装浏览器插件,通过JavaScript代码即可实现三维图像的展示。

WebGL完美地解决了现有的Web交互式三维动画的两个问题:第一,它通过脚本实现Web交互式三维动画的制作,无需任何浏览器插件支持;第二,它利用底层的图形硬件加速功能进行的图形渲染,通过统一的、标准的、跨平台的OpenGL接口实现。

目前已有大量基于WebGL技术的JavaScript库正在开发以创建3D图形应用,如SceneJS、WebGLU、Three.js等。在众多的引擎中,Three.js以简单、直观的方式封装了3D图形编程中常用的对象,使用了很多图形引擎的高级技巧,极大地提高了性能,并且是完全免费和开源的,其渲染结构如图1所示。

图1 Three.js的渲染结构

利用Three.js引擎提供的API,可以很容易的在Web上展示各种格式的三维模型,如dae、obj、json等。默认情况下,Three.js会将整个模型文件封装成一个独立的三维对象(THREE.Object3D),之后按位置被放入场景。

到目前位置,Three.js还不提供对于IFC(Industry Foundation Classes)格式的支持,该标准是由IAI(International Alliance of Interoperability)组织制定的建筑工程数据交换的标准格式,现有的基于WebGL的BIM平台研究局限于模型显示,并没有进一步的数据交换与跨领域的信息显示[2]。因此,仅对于模型显示来说,可以通过工具对模型进行格式转换,转换后的显示效果是相同的。

利用Three.js提供的各种控制类,还可以实现模型的拖拽、旋转、缩放等人机交互功能,其中THREE.TrackballControls类适用与这类操作,预定义的鼠标操作如表1所示,当需要选取建筑内部或背面的子建筑时,该功能尤其重要。

表1 THREE.TrackballControls中的控制键

2.2 模型遍历与重组

Three.js提供的API会将整个模型封装成了一个独立的Object3D对象,这样一来,程序就无法对模型中的子建筑(如墙面、楼梯、窗户等)进行拾取和单击等操作了,尽管可以通过添加热点,将模型的局部设置为鼠标点击触发[4],但这不是一种好的做法,因为热点无法完全匹配子建筑的几何形状,子建筑可能是不规则形状的,比如说楼梯。

Object3D本质上是Three.js封装的一个抽象类,该类声明了一些3D对象的基本私有属性,如ID、名称、位置、本地矩阵和世界矩阵等。除此外,该类还声明了一个私有属性:children数组,用于包含该3D对象的所有子类,子类本身仍然是一个Object3D对象,通过这种层级嵌套关系,Three.js可以构建复杂的3D对象。Loader方法返回的Object3D对象其实是将所有的子建筑封装到了一个更高级别的空3D对象中。

通过遍历模型的Children属性,可以得到模型中的所有子建筑,为这些子建筑建立独立的Object3D对象,并在对应的位置加入场景,可以保证模型被重构,同时还能保证用户可以独立地选中这些子建筑。通过为子建筑添加事件handleMouseMove和handleMouseUp,可以实现鼠标移动过程中的异步提示和单击后的数据查询等操作,处理流程如图2所示。

图2 模型遍历与重组

Three.js并没有提供应用层的面向对象编程机制,在子建筑类定义、3D空间中的目标拾取和鼠标事件处理等方面仍然比较繁琐,可以借助于Tony Parisi[美]开发的Sim.js框架,这是一个基于Three.js的轻量级开发框架,可极大地简化3D类定义和鼠标事件处理,提高程序的可读性和可重用性。通过在Sim.js框架下定义Sim.Object类,可以将上述Children数组中的所有子建筑实例化,简化目标拾取和鼠标事件处理程序。

2.3 模型与BIM数据间的映射

BIM数据包含了建筑全生命周期的所有数据,在Revit中,这些数据可以通过ODBC接口直接导出到数据库,典型的数据包括:墙体类型、长宽高、体积面积、传热系数;窗体的透光率、日得光系数;楼梯踏板厚度、踢面高度、踢面数等等。

模型文件一般只携带几何和材质信息,并不包含上述的BIM数据。因此,必须将模型文件和数据库建立某种关联才能实现模型的信息化管理。

Revit模型中的每一个子建筑都携带一个唯一的ID号,这个ID号在模型文件和数据库中都存在,通过这个ID号,可以在模型和数据库之间建立关联,从而实施进一步的信息化系统开发。

实验中发现,在Revit中直接导出obj或dae模型时,ID号会出现丢失、变形的情况,这将导致模型与数据库失去关联。通过在Revit中先将模型导出成FBX格式,然后在3dMax中导入FBX模型并输出成OBJ格式,可以解决这个问题,但ID号也会变形,比如一个ID号为“32761”的子建筑经过这个转换后,ID可能会变为“g _________900mm_______320761_”(与子建筑的类别有关)。实验中发现,通过下面两个正则表达式,可以从中取出需要的ID号:

(1)str = str.match(/_d+d+d+_/);

(2)str = str.toString().match(/d+/);

2.4 异步数据通信

handleMouseMove和handleMouseUp事件对应于鼠标移动和鼠标单击操作,前者用于简单的信息提醒,比如子建筑的名称、族名称等;后者用于详细的数据查询,比如子建筑详细信息、族详细信息、所有同类对象相关信息等。

handleMouseMove事件所完成的操作必须是异步的,即要求在不刷新整个网页的前提下与Web服务器进行交互,并更新部分网页内容。

(1)异步交互:可采用AJAX技术,他是一种用于创建快速动态网页的技术,通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。

(2)数据接口:可采用JSON格式,由于其轻量性、文本性、便携性等优点,JSON现在成为了最流行的信息交换格式,在Web项目中,JSON还与JavaScript有着天然的适应性。

利用AJAX和JSON,配合子建筑在被选中时的点亮效果,利用网页中随鼠标浮动的层,可以实现良好的异步提示效果。

2.5 数据查询

尽管可以从鼠标事件中获取到子建筑的ID号,但在Web客户端并不知道该ID所对应的具体类型,所有的子建筑都具有相似的、唯一的ID号,他们按类型的不同存储在不同的数据表中,仅仅通过ID号并不能确定其对应的数据表。

Revit为每一种建筑子类别(强、门、窗户、楼梯等)建立了单独的数据表,他们是分开存储的,不同类别之间的表结构差别很大,比如墙体和窗户的描述方法不同。在数据库服务器端,可以接收到客户端发送过来的ID号,然而还需要知道从哪张表中找到这个ID号。

通过存储过程遍历数据库表,可以查到了这个ID,从而获得子建筑的详细信息(长宽高、体积面积等),每个子建筑还会对应一张类型表(即族信息),该子建筑所对应的族关系、族信息也可通过这个ID号进行关联查询。

所有的族也会有一个唯一的类型ID号,通过与前面的ID字段配合,利用视图、函数、存储过程等数据库手段,可以实施更详细的数据查询,比如所有同类子建筑信息、建筑物整体的子类别与数量统计信息等。

3 系统实现

实例模型采用了一栋两层建筑,模型文件5M,其中包括148个建筑单元,模型在浏览器中的整体展示效果如图3所示,子建筑类别统计结果如图4所示,鼠标移动过程中的子建筑点亮及提示效果如图5所示,单击子建筑后的数据统计结果如图6所示。

图3 建筑模型结构图

图4 子建筑类别统计结果

图5 异步提示效果

图6 子建筑详细信息

系统调试环境为:服务器端:SQL Server 2008数据库、IIS7.0;客户端:Intel Core™2双核CPU、2G内存、NVIDIA GeForce 9400 GT显卡;软件版本:Revit 2014中文版、3ds Max2010中文版。

4 结论

本论文针对Revit模型,利用WebGL引擎,研究了一种BIM信息化的可行方案,为成功实施B/S环境下的综合BIM管理系统开发提供了一种有效途径。

由于WebGL是无插件和基于JavaScript语言的,系统具有跨平台、开源等优点,还可以很方便地部署在移动用户端。

[1]张建平,余芳强,李丁.面向建筑全生命期的集成BIM建模技术研究[J].土木建筑工程信息技术,2012,4(01):6-14.

[2]王珩玮,胡振中,林佳瑞.面向Web的BIM三维浏览与信息管理[J].土木建筑工程信息技术,2013,5(03):1-7.

[3]刘爱华,韩勇,张小垒.基于WebGL技术的网络三维可视化研究与实现[J].地理空间信息,2012,10(05):79-81.

[4]王磊,高珏,金野.基于Web3D无插件的三维模型展示的研究[J]. 计算机技术与发展,2015,25(04):217-220.

[5]谭文文,丁世勇,李桂英. 基于webGL和HTML5的网页3D动画的设计与实现[J].电脑知识与技术,2011,7(28):6981-6983.

[6]霍冬,郑伟华,盛步云.基于WebGL的机械产品三维展示技术研究[J].制造业自动化,2013,35(09):73-77.

[7]周敬敬,陈昕,吴开超.利用WebGL技术实现机房动态虚拟装配设计的可视化[J].科研信息化技术与应用,2013,4(02):87-92.

[8]赵学伟,沈旭昆,齐越. 基于Web的交互式三维发布系统[J].计算机工程, 2007,33(22):5-7.

[9] Cantor D. WebGL Beginner’s Guide[M]. Birmingham, United Kingdom: Packt Publishing, Limited, 2012

[10]P.M.Hubbard.Approximating polyhedra with sphms for time-critical collision detection[J].ACM TrimsGraph,1996,15(3):179-210.

Building Management Information System Based on Revit

ZHENG Hua LIU Li-na
(Shijiazhuang Institute of Railway Technology Shijiazhuang Hebei 050061 China)

To solve the difficult problems of the BIM server based on B/S Structure in model shows, model analysis and data statistics, taking Revit as an example, this paper designed and implemented a BIM management information system based on B/S Structure through WebGL technology and Three.js engine. The paper mainly introduces the model analysis, the sub-building identification and the hot spot treatment, the relational query between the model and database etc. Experimental results show that building BIM server with WebGL and Revit is feasible and has the advantages of cross platform and no plug-ins.

BIM Revit WebGL B/S MIS

A

1673-1816(2017)03-0053-05

2016-06-18

郑华(1977-),男,副教授,硕士,研究方向计算机网络技术、Web3D。

基于B/S结构的BIM服务器中间件技术研究,QN2016215

基于物联网和GPRS的公寓安全智能管理系统的技术研究,QN2017358

河北省科技厅技术创新引导计划项目,16210335

猜你喜欢

插件鼠标数据库
Progress in Neural NLP: Modeling, Learning, and Reasoning
自编插件完善App Inventor与乐高机器人通信
数据库
基于jQUerY的自定义插件开发
数据库
数据库
数据库
MapWindowGIS插件机制及应用
基于Revit MEP的插件制作探讨
45岁的鼠标