徐 迪
(上海建筑设计研究院有限公司,上海 200041)
建筑活动是一个长期、复杂甚至循环往复的过程,任何在这过程中的遗漏或错误都有可能使整个过程变得更加复杂或使结果存在不安全因素,从而造成很多不必要的浪费。相关资料显示,建筑活动消耗了人类所使用的自然资源总量和能源总量的40%,同时产生了占人类活动产生垃圾总量的40%。根据美国05至07年建筑行业的统计,38%的碳排放量来自建筑物,30%的项目不能按期按预算完成,92%施工企业认为建筑师给的图纸不清楚,37%材料在施工中被浪费。据统计,我国现有建筑中单位建筑面积能耗是发达国家的2至3倍,对社会造成了沉重的能源负担和严重的环境污染;同时建设中还存在土地资源利用率低、水污染严重、建筑耗材高等问题。这些已经成为制约我国可持续发展的突出问题。根据《“十二五”建筑节能专项规划(征求意见稿)》,到“十二五”期末,建筑节能将形成1.16亿吨标准煤节能能力。因此,如何实现建筑结构设计符合国家可持续发展战略已经成为时下的重要课题。
所有发达和较发达国家都把GDP的一个很大比例投资在固定资产的规划、设计、施工、运营、维护、更新、拆除等工作上,在这个过程中,很大比例的工程建设项目遭遇到工期拖延、造价突破预算的问题。要求全球工程建设行业提高工作效率的压力越来越大。根据美国有关部门的研究表明,建筑业的浪费高达57%,而制造业为26%[1]。如果把这种测算方法放到中国,我国固定资产规模约为10万亿人民币,其中60%依靠基础建设完成,按照美国建筑科学研究院的资料来计算,那么通过技术和管理水平提升可以节约的建设投资将是惊人的。因此,建筑信息模型成为时下国内工程领域的热门话题。
市面上BIM软件数量众多,其中要数Autodesk公司的Revit系列软件功能可拓展性最好,应用程序接口也较为成熟。Revit强大的建模工具和全面准确的建筑数据为建筑信息化打下了很好的基础。
Revit系列软件包括Revit Structure、Revit Architecture和Revit MEP。Revit软件是用于进行建筑信息模型的结构设计平台,它是一个设计和记录系统,支持建筑项目所需的设计、图纸和明细表。建筑信息模型可提供用户需要使用的有关项目设计、范围、数量和阶段等信息。在Revit模型中,所有的图纸、二维视图和三维视图以及明细表都是同一个基本建筑模型数据库的信息表现形式。在图纸视图和明细表视图中操作时,Revit软件将收集有关建筑项目的信息,并在项目的其他所有表现形式中协调该信息。Revit参数化修改引擎可自动协调在任何位置进行的修改,即整体结构模型将随模型某一处的修改而协调改变,就是所谓的参数化模型。Revit系列软件还提供了可以扩展产品功能的应用程序编程接口—Revit API,通过这个接口用户可以通过编程实现定制功能,而且用户可以使用API定义在Revit中运行的宏,宏功能可通过Revit VSTA附加模块提供给Revit。由于其强大的二次开发功能以及与BIM理念的良好结合,使得Revit二次开发成为当前各大软件厂商的工作重点。
在国外基于Revit平台的二次开发产品已经多达百种,而国内对Revit二次开发还处于起步阶段,不过已经有越来越多的学者和公司开始做这方面的研究开发工作。中国建筑科学研究院和同济大学合作,通过开发的基于ASIM模型信息转换平台,实现了Revit模型导入PKPM进行结构分析,为基于BIM的协同设计和集成建筑工程软件的开发提供技术支持。2011年,东经天元公司开发的R-StarCAD在一定程度上标志着国内Revit二次开发逐渐成长。R-StarCAD实现了Revit与PKPM的数据相互转换,填补了国内大众结构设计软件与国际BIM软件数据交互的空白。同年,北京盈建科软件有限责任公司开发的盈建科建筑结构设计软件系统(YJK)也面市了。盈建科建筑结构设计软件提供了与PKPM、Etabs、Midas、AutoCAD以及Revit软件的模型数据接口。
1)实现快速建模功能;
2)实现高效项目文档输出;
3)实现模型快速导入结构分析软件;
4)实现Revit SDK实例功能的改进和集成;
5)实现其他个性化需求。
通过本插件系统,设计人员可以快速将已有PKPM模型在Revit中进行重建,减少重复工作,利用Revit优秀的三维建模功能为后期设计提供便利,同时可以一键输出项目文档。结构设计师可以利用其中的数据转换功能,将Revit模型导入3D3S钢结构分析软件,实现高效的模型传递,将结构工程师从反复的建模工作中解放出来。
本系统是基于Revit 2011版本,主要开发工具为 Visual Studio 2008、Revit API和 Revit SDK。
Visual Studio(简称VS)是微软公司推出的开发环境,Visual Studio可以用来创建 Windows平台下的Windows应用程序和网络应用程序,也可以用来创建网络服务、智能设备应用程序和Office插件。Visual Studio 2008是在Visual Studio 2005的基础上,在快速的应用程序开发、高效的团队协作和突破性的用户体验三方面进行了关键改进后面市的。
发展至今Revit API发生了显著的变化。最开始API只能访问文档中的对象,在后续版本中逐渐增加了用户选择交互API,文档级别的事件API机制,对象的过滤API和族创建API等。API数量大幅度递增,涵盖的功能也越来越强。借助于API,第三方软件提供商可以扩充Revit系列软件的功能,提供在建筑生命周期中所需要的解决方案。三个产品的API非常相似,因此它们被集成到一个总的API:Autodesk Revit2011 API。通过 Revit API,用户可以用插件实现自动完成重复的工作,自动检测错误以强制产品设计规范,获取工程数据来分析或者生成报告,导入外部数据来创建新元素或设置参数,集成其他应用程序包括分析软件到Autodesk Revit产品,自动创建 Autodesk Revit产品文档等功能。
在Revit API中,顶层类对象是 Application和Document,其中数据模型是一个多文档的类似于Microsoft Office的模式。Application对象代表着当前与之交互的Revit程序,可以通过它来操作当前打开的所有文档以及Revit中的一些设置。Document对象代表一个打开的 Revit文档(.rvt,.rfa),可以通过它操作当前文档中的各种元素。Application类、Document类以及Element类的相互关系如图1所示。Element类又包含了 Model、View、Group、Annotation、Sketch以及 Information等子类,如图 2所示。
Revit API2011是在Revit API2010的基础上对动态模型更新、单元改变事件、API失效、空转事件、错误处理等方面改进并新增功能后面市的。
Revit SDK是Autodesk官方提供的包含完整客户端API库、文档及实例代码的综合文件库。
XD-Revit 建筑结构辅助建模工具箱(英文简称XD Tool)是以开发者姓名拼音的首个字母开头命名的,以C#为主要编程语言,以Visual Studio 2008为开发平台,集225个功能于一体的建模辅助工具箱Revit插件工具箱共有21个模块,包括 Basics,Geometry,Parameters,Elements,Families,Materials,Annotation,Views,Rooms/Spaces,Structure,Architecture,MEP,Reconstruction,Converter,Create,Massing,Selection,Data Exchange,FamilyTools,AddFunction,Labs,界面如图3所示。
图2 Element分类
由于集成了Revit SDK中的较多功能,且多为小功能,因此本文主要介绍系统的三大功能。
三维模型重建模块的主要功能是通过逐层导入DXF格式的结构平面简图在Revit环境中自动生成三维实体模型。利用PKPM结构分析软件生成的结构平面简图在Revit中进行三维模型重建的程序实现策略可以概括地表示为图4所示。
图4 结构平面简图三维模型重建的实现策略
根据拓扑关系,重建策略可以简略地概括为:绘图比例→梁截面→柱截面→梁位置→梁实体重建→柱位置→柱实体重建。
(1)绘图比例:PKPM软件生成的结构平面简图比例为1∶1 000,而Revit中绘图比例为1∶1,因此在进行三维重建过程中必须考虑到这一点,应该利用Revit API将从DXF文件中读取的各点坐标放大1 000倍,以便在Revit中生成实际尺寸的三维模型。Revit默认以坐标原点作为导入基点,因此可不作考虑。
(2)梁截面:梁截面尺寸描述为文本信息,例如200×400,因此只要对DXF文件中实体段关键字为TEXT的实体进行读取,MTEXT为多行文本可不作考虑。通过对DXF文件中匹配关键字,然后由相关的组码获得对应的组值。对于梁与其截面尺寸文本信息的匹配,主要方法是在梁线中点的右下方或左下方设置搜索区域,将搜索到的TEXT实体与之匹配。针对DXF文件每行输出的特性,利用C#对DXF文件逐行读取。首先查找组码“0”,然后判断其下一行是否为“TEXT”,如果返回结果为是,则继续依次查找组码“10”、“20”和“1”,如果返回结果为否,则继续往下查找。其中查找结果存储在中间数组中,存储文字信息的坐标值和文字内容。
(3)柱截面:柱截面描述在DXF文件中位于实体段关键字为3DFACE的实体中。首先查找组码“0”,然后判断其下行是否为“3DFACE”,如果返回结果为是,则依次查找组码“10”、“20”、“11”、“21”、“12”、“22”、“13”及“23”,并将查找结果存储于中间数组中,存储矩形柱截面的四个点坐标值,如果返回结果为否,则继续往下查找。
(4)梁位置:根据梁线(LINE)的两个端点能够确定梁的水平位置;垂直位置可以通过将梁限制条件中的参照标高设置为上一层标高,或将梁起始标高偏移确定。查找方法与上述类似,首先查找组码“0”,然后判断其下行是否为“LINE”,如果返回结果为是,则依次查找组码“10”、“20”、“11”及“21”,得到梁线两个端点的坐标值,如果返回结果为否,则继续往下查找。
(5)柱位置:由上述查找结果中的4个点坐标得到柱截面中心点坐标,以此确定柱的水平位置;垂直位置可以默认创建,即柱底面限制标高为当前视图标高,顶部限制标高为上一层标高(Revit中创建柱的默认条件)。
三维模型重建(Reconstruction)模块界面如图5所示。
模型转换模块的功能是将Revit模型导出至钢结构建模分析软件3D3S。由于Revit Structure不具有结构分析功能,因此需要将Revit模型导入相关分析软件进行结构分析。模型转换模块功能的实现原理是利用Revit导出的IFC文件转换为3D3S软件可读的文本文件。
图5 Reconstruction模块界面
本模块提供了两种模型导出方式:导出当前Revit文件和导出已有的IFC文件,模块主界面如图6所示。导出当前Revit文件的实质是先将Revit文件通过调用RevitAPI自带的函数功能进行转换成为IFC文件。两种方式都是通过IFC Engine DLL工具包实现IFC文件的模型信息提取。本模块的编程思路如图7所示。
图6 TO3D3S功能界面
图7 编程思路
族工具模块有两个功能:一是导出当前项目中所有族实例至Excel文件,图8为通过族工具导出的某项目族实例Excel列表;二是导出当前项目中一个或多个族的详细属性至Excel文件,图9为通过族工具导出的某项目中的混凝土-矩形梁200×350的细部属性。本模块界面如图10所示。
图8 某项目族实例列表
图9 某项目混凝土-矩形梁200×300细部属性列表
图10 族工具模块界面
族工具模块中的Excel导出功能的实现策略可以概括为以下两点:
(1)获取对象信息。从Revit获取对象信息一般有两种方式,一是从类的属性读取,二是读取对象的参数值。例如需要获取一面墙的所有参数,墙的名字可以通过Wall.Name属性获取,墙的长度可以从Location属性间接获取,高度则可以从墙高参数获取,墙宽可以从 Wall.Width属性获得。同时为了获取墙的材料属性,可以用Parameter.AsElementId()方法获得元素 ID,在 Revit API中Material类型实际上是一个元素ID,然后可以通过Document.get_Element(ElementId id)方法获取这个材料对象。
(2)将获取的对象信息输出至Excel。Excel文件通过“Interop”模式打开,逐行逐列输出即可。
本文以实际工程应用需求为前提,以 Visual Studio 2008为开发平台,以Revit 2011系列软件为开发环境,在Autodesk提供的SDK程序文件基础上,研究开发了Revit系列软件插件XD-Revit建筑结构建模辅助工具箱,并在Revit系列软件中成功运行,并应用于实际工程,对Revit应用于结构设计进行了初步探索。
总体来讲,本文主要内容及成果总结有以下几方面:
(1)Revit系列软件历史并不长,进入我国还不到5年,因此在中国本地化方面还存在较多问题,且其软件自身功能不像AutoCAD软件那么完善,往往操作比较繁琐。针对Revit存在的缺点,本文研究开发的XD-Revit建筑结构建模辅助工具箱具有225个功能,能够实现轴网、标高、标注、简单规则结构模型的快速生成,同时集成了体量环境下对于点、线、面的操作功能,大大节省创建体量、族、模型的时间,提高工作效率。
(2)程序从当前PKPM软件文件格式封锁的现状出发,开发了具有导入PKPM结构平面简图DXF格式文件生成Revit三维模型功能的三维重建模块,并应用于实际工程。程序能够显著提高建模速度,减少工程师的劳动强度。
(3)本文还针对当前Revit项目信息输出困难的缺点,研究开发了Revit族工具模块。通过该模块,设计师可以快速地从当前项目中导出所有族及族实例细部属性等项目信息。
本文虽然开发了拥有225个功能的XD-Revit建筑结构建模辅助工具箱插件,并成功应用于实际工程,但是很多功能是以前人和Autodesk的研究为基础的,还有部分功能存在一定的局限性,在此简要罗列:
(1)XD-Revit建筑结构建模辅助工具箱中的三维重建模块只能实现梁柱模型的三维重建,还无法对剪力墙、楼板、变截面梁、牛腿柱等特殊构件进行三维重建,因此仍需继续完善其功能,以实现完整模型的三维重建,免去手工建模的繁琐过程。
(2)本论文实现了由Revit导出的IFC文件到3D3S文本文件的模型数据转换,但在通用性和信息完整性方面仍需要继续完善。
(3)本文开发的插件是通过编辑TXT文本文件,在文本文件中调用各模块动态链接库DLL文件实现在Revit环境下正常运行的,但是由于Revit本地化欠佳的原因,插件界面按钮及功能说明无法实现汉化,因此对于英语基础较弱者来说,使用起来有一定困难,且界面设计尚不够人性化。作者将继续对XD-Revit建筑结构辅助建模工具箱的功能进行完善和补充。
[1] 何关培.BIM总论[M].北京:中国建筑工业出版社,2012.
[2]徐迪,潘东婴,谢步瀛.基于BIM的结构平面布置图的三维重建.结构工程师,2011,27(5):18-22.
[3]3D3S使用手册,上海同磊土木工程技术有限公司,2008年.
[4]付后国,谢步瀛.基于Revit和3D3S的建筑信息模型的数据转换[J].山西建筑,2010,36(29):365-366.
[5] Autodesk Authorized Author.Revit2011 APIDeveloper’s Guide [M]. American: Autodesk Authorized Publisher,2010.
[6] Thomas Liebich.IFC 2x Edition3 Model Implementation Guide[M].BuildingSMART International Modeling Support Group,2009.