丁曉宇 王子茹
(大連理工大學建設工程學部,遼寧 大連 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。其他節點可以通過導線上各節點依次連線后定量等分各線段得到。