丁晓宇 王子茹
(大连理工大学建设工程学部,辽宁 大连 116024)
·计算机技术及应用·
基于Revit二次曲面网壳参数化建模的研究
丁晓宇 王子茹*
(大连理工大学建设工程学部,辽宁 大连 116024)
针对Revit二次开发的参数化设计技术问题,使用C#编程语言和API类库,结合JGJ 7—2010空间网格结构技术规程,开发出了单层二次曲面网壳结构的参数化设计插件,实现了二次曲面网壳结构在Revit视图中的自动生成。
Revit,二次开发,二次曲面网壳,参数化设计
网壳是一种空间杆系结构,具有造型优美、受力合理、造价低等特点,备受建筑师青睐,多用于体育场馆、会展中心等公共建筑物中[1]。常见网壳结构形式有圆柱面网壳、球面网壳、双曲抛物面网壳、椭圆抛物面网壳等。该结构节点和杆件数量巨大,但传统的设计方法仍是以手工建模为主。近年来,随着信息技术的飞速发展,计算机及相关软件在网壳结构设计领域中的应用日益广泛[2,3],尤其是建筑信息模型(BIM)技术的出现,大大提高了网壳设计及施工的效率[4]。
作为BIM重要建模软件之一的Revit,因具有友好的界面和便捷的使用性及参数化设计理念,成为应用研究的热点。文献[5]通过对Revit Structure进行二次开发,实现了单层球面网格的参数化生成。文献[6]阐述了如何利用概念体量进行空间网架的建模和工程量统计。从已有文献看,Revit二次曲面网壳设计主要是依赖于菜单栏命令,对于需要处理大量坐标数据的网壳模型工作量大且易出错。
本文在已有研究成果的基础上,结合网壳建模过程,应用Revit API实现具有对椭圆抛物面、双曲抛物面等网壳结构的快速建模功能。
本文基于Visual Studio2010程序设计平台,使用C#编程语言,通过API 接口对建模功能实现扩展。程序开发主要分成两部分,建模功能的实现及用户界面的生成。
1.1 建模过程
Revit二次开发要遵循API的应用流程,程序设计步骤如图1所示。创建模型的过程在Execute()方法里实现。通过XYZ()确定节点坐标,ReferencePointArray()创建并储存节点和CurveByPoints()函数创建杆系轴线,完成基本模型的绘制。
1.2 界面生成
通过IExternal Command接口派生类,在OnStratup和OnShutup函数里创建Ribbon控件,实现在工具栏“附加模块”中添加下拉按钮功能。用户可以通过点击按钮输入控制参数完成网壳模型创建。
该插件共定义三种常用单层二次曲面网壳模型类,包括椭圆抛物面、双曲抛物面及对数抛物面(见图2)。因此在用户界面中创建三组下拉菜单,根据杆件布置的不同,每组菜单中包含2种~3种网壳形式。
2.1 几何描述与控制参数
以双曲抛物面为例(如图3所示),双曲抛物面是由一直母线(AD)沿两条交叉的两直导线(AB,CD)运动,运动中所有素线始终平行某一导平面(平面Q)而形成的曲面[7]。如果能在曲面上找到若干个等分点,取为节点,通过杆件连接就可以最大程度拟合双曲抛物面网壳骨架。
如图3所示,根据双曲抛物面的成形可知,控制一个双曲抛物面网壳的主要几何参数有:直导线水平投影ab长(a)、导线间距离水平投影宽ad(b)、矢高Aa,Cc(f1,f2)及划分网格数(Kn,Kx)。
2.2 模型构建
根据现行JGJ 7—2010空间网格技术规程,双曲抛物面分为杆件沿直纹布置和杆件沿主曲率布置两种,本文以杆件沿主曲率布置为例详细介绍该网壳几何建模方法。
2.2.1 节点坐标创建
根据规程单层双曲抛物面网壳跨度不宜大于60 m,限制两条导线长度及距离。以矢高为跨度1/2~1/4为设计基准控制基线空间表达式的斜率及节点坐标间距。
两条基线空间表达式为:
AB:z=k1x。
其中,k1=f1/a(0≤x≤a)。
CD:z=k2x+c。
其中,k2=-f2/a,c=f2(0≤x≤a)。
按照设计要求将AB,CD两条导线等分,等分数为Kn,则每条导线上节点数为Kn+1。其他节点可以通过导线上各节点依次连线后定量等分各线段得到。