鄧玉星 李進平 蘇凱
摘要:為解決水輪機蝸殼建模過程繁瑣和流道參數(shù)獲取困難的問題,基于Revit軟件二次開發(fā),通過Revit API工具包、WinForm開發(fā)界面、C#編程語言、蝸殼水力設(shè)計理論和蝸殼放樣路徑公式推導,設(shè)計了一款金屬蝸殼自動建模插件。運行結(jié)果表明:插件可視化程度高,操作方便,能有效提高蝸殼的建模效率,也為流道參數(shù)的獲取和水力分析提供了接口。
關(guān)鍵詞:金屬蝸殼; BIM技術(shù); 插件設(shè)計; 二次開發(fā); 放樣融合
中圖法分類號:TV734 文獻標志碼:A DOI:10.15974/j.cnki.slsdkb.2022.01.003
文章編號:1006 - 0081(2022)01 - 0011 - 06
0 引 言
建筑信息模型(Building Information Modeling,BIM)是以三維數(shù)字技術(shù)為基礎(chǔ)并集成建筑工程項目各種相關(guān)信息的工程數(shù)字模型,是對工程項目相關(guān)信息完整的數(shù)字化表達[1]。BIM技術(shù)的實施解決了工程信息在規(guī)劃、設(shè)計、施工、運營全生命期各階段的有效利用與管理。在設(shè)計階段,與傳統(tǒng)三維設(shè)計模型相比, BIM模型具有參數(shù)化、可視化、模擬性、協(xié)同性和可出圖性等優(yōu)勢[2]。BIM技術(shù)在建筑行業(yè)已得到廣泛應(yīng)用,在水利水電行業(yè)的使用越來越多,這是當前的發(fā)展趨勢。
在實際應(yīng)用中,BIM技術(shù)存在費用高、進度緊張、軟件生態(tài)環(huán)境差、需要全人工或半人工轉(zhuǎn)化模型、人工維護困難等問題,采用二次開發(fā)是解決這些問題的有效途徑[3]。當前水利水電行業(yè)主流的BIM設(shè)計平臺包括Autodesk公司的Revit,Bentley公司的MicroStation和Dassault公司的Catia[4]。其中,Revit除了具有易上手、互操作性強的特點之外,還具有較強的參數(shù)化設(shè)計能力和軟件可開發(fā)性,適合進行二次開發(fā)。利用Revit的二次開發(fā)工具,可以較大程度減少重復工作,提升建模效率,實現(xiàn)快速建模[5]。
由于存在大量的異形曲面構(gòu)件,沒有建筑行業(yè)類似的標準化構(gòu)件,水利水電行業(yè)在BIM建模時比較困難。以水輪機蝸殼為例,水力設(shè)計得到斷面數(shù)據(jù)較多,在Revit中手動建模蝸殼過程十分繁瑣且建模質(zhì)量不易保證。如果采用二次開發(fā)方式,用戶僅需輸入少量關(guān)鍵的蝸殼設(shè)計參數(shù),計算機就能實現(xiàn)自動化建模,則可以提高建模質(zhì)量,且能節(jié)省人力成本。
目前針對傳統(tǒng)建筑行業(yè)的Revit二次開發(fā)軟件較多,針對水利水電行業(yè)的比較少,且通用性不足。朱致遠等[6]通過Revit二次開發(fā)對水閘工程擋土墻進行穩(wěn)定計算分析,伍丹琪等[7]通過Revit二次開發(fā)實現(xiàn)了泵站廠房上部建筑的參數(shù)化建模,宋永嘉等[8]將Revit二次開發(fā)與數(shù)值仿真相結(jié)合,進行水閘消能工方案的優(yōu)化設(shè)計研究。
本文選擇水輪機金屬蝸殼為研究對象,分析其水力設(shè)計理論,確定流量和流速等關(guān)鍵參數(shù),基于Revit二次開發(fā)設(shè)計出一款蝸殼BIM建模插件。通過該插件,可自動通過計算公式得出蝸殼的斷面參數(shù),并根據(jù)斷面參數(shù)自動建模,還可根據(jù)需要生成不同的蝸殼模型,同時,蝸殼的軸線長度和空腔體積的數(shù)據(jù)也將保存到模型參數(shù)中,可為過水流道自動識別和水力分析提供基本數(shù)據(jù)。
1 蝸殼建?;纠碚?/p>
1.1 水力設(shè)計理論
按照圓周速度等于常數(shù)的假設(shè),金屬蝸殼圓形斷面尺寸的計算公式如下:
斷面半徑
[ρi=Qiπvc=φiQmax360oπvc] (1)
斷面中心距
[ai=ra+ρi] (2)
斷面外半徑
[Ri=ra+2ρi] (3)
式中:[vc]為蝸殼進口斷面平均流速,[m/s];[Qmax]為水輪機組的最大引用流量,[m3/s];Qi為蝸殼各個斷面水輪機組的引用流量,[m3/s];[ra]為座環(huán)外半徑,m;[φi]為任一斷面處的包角,(°)。
1.2 建模方法
在Revit中建模水輪機蝸殼,一般先通過空心放樣融合來建模蝸殼的空腔部分,接著建模蝸殼的實體部分,最后剪切得到蝸殼模型。水輪機金屬蝸殼在設(shè)計和制造時通常會根據(jù)包角將蝸殼分為多段,蝸殼的單線圖見圖1。建模時首先可以把圖1中蝸殼斷面的中心線處理成圓弧并作為放樣融合的路徑,然后將式(1)的計算結(jié)果作為各斷面輪廓的半徑,對各段蝸殼進行建模,最后通過剪切得到完整的蝸殼。蝸殼舌板是金屬蝸殼造型中的關(guān)鍵所在,其位置由蝸殼的包角確定。本文實例中的蝸殼包角為345°,即最后一段金屬蝸殼建模結(jié)束的位置正是345°包角處,同時蝸殼進口段也在345°包角處設(shè)有缺口,在建模對應(yīng)的座環(huán)后,可以保證蝸殼尾端與座環(huán)固定導葉的連接。
由于Revit空心放樣融合及剪切的特殊性,放樣路徑的計算公式較為復雜,是本文擬解決的關(guān)鍵問題。
2 放樣融合路徑解決方案
2.1 放樣路徑處理思路
水輪機蝸殼一般通過空心模型剪切實體得到,而Revit在進行曲面的布爾剪切時,對曲面的質(zhì)量要求十分嚴格,如果建模質(zhì)量不合格,就會出現(xiàn)在剪切時提示無法保持連接的情況。為了保證金屬蝸殼分段建模順利,需要使相鄰兩段蝸殼連接處的輪廓形狀和大小相同且處于同一個平面,而Revit在進行放樣融合時,輪廓所在的面是放樣路徑在端點的法平面。過圓心的直線與圓相交的點的切線必定與該直線垂直,即該直線就是圓在交點處的法線,連接點法平面共面示意見圖2。如圖2所示,對于相互連接的、半徑不同的兩段圓弧[A1A2]和[A2A3],如果它們的兩個圓心點[O1],[O2]和連接點[A2]共線,則兩段圓弧在連接點有相同的法線[O1A2]。
同理,在空間坐標系中共面的兩段圓弧,只要它們的兩個圓心點和連接點共線,在連接點處就有相同的法平面,按照這個思路就可以解決放樣路徑端點輪廓共面的問題。在Revit軟件的二次開發(fā)中,作為放樣融合路徑常用的線有直線Line、曲線Arc和樣條曲線Spline,直線顯然不滿足蝸殼的放樣融合需求,而樣條曲線需要獲得多個點及各點之間的權(quán)重,計算比較困難。而且,相較于一整條放樣路徑曲線,分段的放樣路徑曲線可以更好地利用式(1)中的斷面半徑,使模型更加精確,故采用分段的Arc曲線作為放樣融合路徑。
Revit 2018 API函數(shù)中創(chuàng)建Arc的方法有3種,分別是Create(XYZ, XYZ, XYZ),Create(Plane, Double, Double, Double),Create(XYZ, Double, Double, Double, XYZ, XYZ)。第一種是通過起點、終點和一個在曲線上的點來創(chuàng)建一條曲線;第二種是通過平面、半徑、起始角度和終止角度來確定一條曲線;第三種是通過圓心坐標、半徑、起始角度、終止角度、定義弧線所在平面的X軸和Y軸的坐標點來創(chuàng)建曲線。由于金屬蝸殼分段較多,確定起始角度和終止角度較為繁瑣和困難,因此選擇第一種方法創(chuàng)建曲線。曲線的起點和終點可以通過式(1)和式(2)來計算得到,第三點則需要先找到該曲線的圓心,然后通過圓心和輔助線來確定。
2.2 相鄰兩段放樣路徑有相同法平面的圓心坐標
在族文件中建模時,將參照平面選在“樓層平面”的“參照標高”上,建模時放樣融合的路徑將全部在此平面上創(chuàng)建,即所有坐標點的Z坐標為0,所以只需在二維平面上對放樣融合路徑進行計算。放樣路徑及各點示意見圖3。如圖3所示,直線段[A0A1]是蝸殼進口段的中心線,令其垂直于Y軸,圓弧[A1A2]和[A2A3]是兩段蝸殼彎管段的中心線,各坐標為[A1(x1,y1)],[A2(x2,y2)],[O(x′0, y′0)],[O1(x′1, y′1)],通過公式(1)和(2)可以得到在不同角度時,蝸殼各段的斷面半徑[ρi]和斷面中心距[ai],然后通過斷面中心距[ai]和角度[θi]獲得坐標[Ai(xi,yi)],其中[xi=aicosθi],[yi=aisinθi],從蝸殼的進口段開始,隨著包角的變化,[ρi]的值不斷減小,點[Ai(xi,yi)]也不斷靠近[O]點。
[OA1]的長度大于[OA2]的長度,所以可以在直線[OA1]上找到一點[O1],使得[O1A1]的長度等于[O1A2]的長度,這就使得以[O1]為圓心的圓弧[A1A2]在[A1]處的切線垂直于Y軸,即[A0A1]和[A1A2]在[A1]處有相同的法線,若以[A0A1]和[A1A2]為放樣路徑,則可保證兩段放樣融合在[A1]處輪廓所在的平面是同一個平面,從而保證剪切成功。同理,可以在直線[O1A2]上找到一點[O2],使得[O2A2]的長度等于[O2A3]的長度,這樣圓弧[A1A2]和以[O2]為圓心的圓弧[A2A3]在[A2]處也有相同的切線和法線。理論上,只要不出現(xiàn)類似于[OA1]垂直[OA2]的情況,依次下去,就能使各段蝸殼平順連接并剪切成功。
現(xiàn)求圓心[O1]坐標,令線段[O1A1]的長度[L1]等于線段[O1A2]的長度[L2],則有
[x1-x′12+y1-y′12=x2-x′12+y2-y′12] (4)
(1) 當[x1=x′0]時,直線[A1O]的方程為[x′1=x1],代入式(4)化簡得
[y′1=y22-y21+(x2-x1)22(y2-y1)] ? ? ? ? ? ? ? ? (5)
(2) 當[x1≠x′0]時,直線[A1O]的斜率為
[k=y1-y′0x1-x′0] (6)
直線[A1O]的方程為
[y′1=kx-x0+y0] (7)
代入式(4)化簡得
[x′1=x22+m22-x21-m212(x2+km2-x1-km1)] (8)
式中:[m1=y1+kx0-y0];[ m2=y2+kx0-y0]。
計算后續(xù)其他圓心坐標時只需將坐標作對應(yīng)的調(diào)整即可。
2.3 放樣融合路徑曲線的第三點坐標
在確定好圓心使相鄰兩段放樣路徑有相同的法線后,還要找到創(chuàng)建曲線的第三點。以圓弧[A1A2]為例,要找到第三點[B1],需要引入一條過O點的直線[lk1],直線[lk1]與圓弧[A1A2]的交點為[B1],圓弧上的第三點計算示意見圖4。如圖4所示,只要令[O1A1]的長度等于[O1B1]的長度,就可保證[A1, B1, A2]位于同一段圓弧上,這就找到了創(chuàng)建放樣融合路徑需要的3個點,同理,只要令[O2A2]的長度等于[O2B2]的長度,就能保證[A2, B2, A3]在同一段圓弧上,依次下去,就能確定所有的放樣融合路徑的第三點坐標?,F(xiàn)求[B1]點坐標。
為計算方便,令[lk1]平分∠[A1OA2],則[lk1]的斜率[k1]為
[k1=tan θ] (9)
式中:[θ=θ1+θ22]。
則[lk1]的方程為
[y=k1x] (10)
要找到[B1]的坐標,只需要使線段[O1A1]的長度等于線段[O1B1]的長度即可,令[B1]的坐標為[(x″1, y″1)],則有
[x1-x′12+y1-y′12=x″1-x′12+y″1-y′12](11)
由于式(11)在不同的情況下有不同的解,現(xiàn)分開討論:
(1) 當[θ=90°]時,斜率[k1]趨于無窮,[x″1=0],代入化簡得
[y″1=-p+p2-4q2] (12)
式中:[p=-2y′1];[q=(x′1)2+(y′1)2-(x1-x′1)2-(y1-y′1)2]。
(2) 當[θ=-90°]時,斜率[k1]趨于無窮,[x″1=0],代入化簡得
[y″1=-p-p2-4q2] (13)
式中:[p=-2y′1];[q=(x′1)2+(y′1)2-(x1-x′1)2-(y1-y′1)2]。
(3) 當[-90°<θ<90°]時,代入化簡得
[x″1=-s+s2-4t(1+k21)2(1+k21)] (14)
[y″1=k1x″1] (15)
式中:[s=-2x′1-2k1y′1];[t=(x′1)2+(y′1)2-(x1-x′1)2-(y1-y′1)2]。
(4) 當[-270°<θ<-90°]時,代入化簡得
[x″1=-s-s2-4t(1+k21)2(1+k21)] (16)
[y″1=k1x″1] (17)
式中:[s=-2x′1-2k1y′1];[t=(x′1)2+(y′1)2-(x1-x′1)2-(y1-y′1)2]。
計算后續(xù)各段放樣融合路徑的第三點坐標時,只需要將坐標作對應(yīng)的調(diào)整即可。在獲取創(chuàng)建放樣路徑的3個點后,就可以創(chuàng)建Arc曲線作為放樣融合的路徑,并結(jié)合斷面數(shù)據(jù)進行放樣融合。
3 蝸殼自動化建模實現(xiàn)
3.1 編碼工具
編碼工具包括Revit API開發(fā)包工具和WinForm用戶界面工具。Revit系列的所有軟件都提供API,可以通過Revit API將應(yīng)用程序集成到Revit軟件中(插件),Revit API允許使用任何與.NET兼容的編程語言,包括Visual Basic.NET,C#,C++/CLI,F(xiàn)#等,用戶可以通過API訪問模型的圖形數(shù)據(jù)、參數(shù)數(shù)據(jù),對模型元素進行創(chuàng)建、修改和刪除,以及創(chuàng)建插件來自動完成一些重復性工作[9]。Revit API中集成了大量現(xiàn)成的命名空間及其包含的類和類中的函數(shù)和屬性,在大大降低二次開發(fā)難度的同時,也提高了開發(fā)效率。Windows Form即Windows窗體(簡稱WinForm),是用于建立客戶端界面的程序設(shè)計框架,它使開發(fā)人員可以充分利用Windows 操作系統(tǒng)中豐富的用戶界面特性[10]。
本文使用編譯軟件為“Visual Studio 2019”,編程語言為“C#語言”,目標框架為“.NET Framework 4.5.2”,輸出類型為“類庫”,引用“RevitAPI”和“RevitAPIUI”程序集,Revit版本為2018,安裝的SDK版本為2018.2,插件在族文件環(huán)境中通過Revit軟件界面上的“附加模塊-外部工具-Add-In Manager”進行插件的載入和運行。
3.2 實施方案
插件主要由計算模塊、建模模塊和交互界面模塊組成。根據(jù)已知的蝸殼斷面尺寸的計算公式和推導得出的融合放樣路徑的計算公式,先將兩者編碼,再封裝成計算模塊,根據(jù)蝸殼的建模方法將Revit API中的類、函數(shù)和方法封裝成建模模塊。
交互界面模塊在插件運行時將會彈出,插件交互窗口的構(gòu)成如圖5所示,其主要由3部分組成:圖片部分,用于說明參數(shù)含義;參數(shù)的輸入和模型控制部分,用于參數(shù)輸入以及對模型結(jié)果類型進行選擇;建模的命令部分,控制插件運行。將3個模塊組合起來,使用戶通過交互界面輸入設(shè)計參數(shù)后,計算模塊直接對設(shè)計參數(shù)進行計算,然后將計算得到的數(shù)據(jù)用于建模模塊進行建模,最終得到水輪機蝸殼模型,同時對建模過程中模型軸線長度和空腔體積的數(shù)據(jù)進行整理,并寫入模型的屬性參數(shù)中,無論是在族文件還是在項目文件中都可以讀取到蝸殼模型的流道數(shù)據(jù),便于進行水力分析計算。
4 插件效果展示
4.1 插件功能
(1) 快速建模。根據(jù)水輪機金屬蝸殼設(shè)計參數(shù)計算斷面數(shù)據(jù)并快速生成模型,且可以根據(jù)需要選擇生成“完整蝸殼”“只生成蝸殼空腔”和“只生成蝸殼所占空間位置的空腔”。后兩種用在一些特定情況下的挖孔,比如混凝土材質(zhì)的實體中挖出蝸殼所占的空間,挖出的空間將與相同參數(shù)生成的蝸殼很好地貼合;模型修改方便,在交互界面選擇生成放樣路徑的模型線,就可以將模型線作為放樣路徑,從而通過修改放樣輪廓達到修改模型的目的。
(2) 計算蝸殼的空腔體積和軸線長度。在進行輸水系統(tǒng)水力計算時需要了解蝸殼的空腔體積和軸線長度,插件在生成模型時可以直接將空腔體積和軸線長度集成到模型的參數(shù)中,其中空腔體積來自每一段空心放樣融合的體積之和,軸線長度來自每一段放樣融合路徑的長度之和,兩者均由Revit API中類的屬性得出,可以保證數(shù)值的精確性。這些參數(shù)可以直接通過屬性參數(shù)欄得到,同時通過二次開發(fā)也可以讀取模型中的其他參數(shù),為后期水力計算奠定了基礎(chǔ)。
4.2 插件應(yīng)用
以新疆庫爾干水電站金屬蝸殼的設(shè)計參數(shù)為例,檢測插件的運行效果。
(1) 獲取蝸殼的設(shè)計參數(shù)。新疆庫爾干水電站蝸殼進口斷面平均流速[vc]為7.1m/s,機組最大引用流量[Qmax]為11.5[m3/s],座環(huán)外半徑[ra]為1.105[ m],導葉高度[b0]為0.166[ m],進口段長度[Lab]為2.0[ m],進口段入口處半徑[r0]為0.75[ m],選取每一段蝸殼的角度[θ]為15°,蝸殼壁厚為0.05[ m]。
(2) 輸入獲取設(shè)計參數(shù)。插件用戶操作界面如圖6所示,將蝸殼設(shè)計參數(shù)輸入插件的參數(shù)輸入欄中。
(3) 根據(jù)需要調(diào)整模型的類型并確認??梢愿鶕?jù)需要在“是否生成放樣路徑的模型線”中選擇“是”或“否”,在“生成蝸殼模型的類型”中選擇“完整蝸殼”“只生成蝸殼內(nèi)部空腔”和“只生成蝸殼所占空間位置的空腔”,并點擊確認,等待模型生成。
4.3 插件運行效果展示
在輸入圖6中給定的數(shù)值后,插件生成蝸殼的效果圖如圖7所示。
若選擇生成的模型為空心模型,且生成放樣路徑的模型線,則蝸殼空心模型的效果圖如圖8所示,其與實體剪切后的效果圖如圖9所示。
蝸殼模型的軸線長度和空腔體積如圖10所示,其中體積單位為[m3],長度單位為[mm]。
5 結(jié) 語
本文基于AutodeskRevit平臺的二次開發(fā),將金屬蝸殼的設(shè)計公式轉(zhuǎn)化為數(shù)學模型,并通過公式推導解決了在Revit中不易確定蝸殼放樣融合路徑的問題,將蝸殼的設(shè)計與建模集成在插件之中,不僅使插件功能豐富、操作簡單、可視化程度高,還有效的提高了蝸殼的建模效率,為BIM技術(shù)在復雜水工結(jié)構(gòu)建模上的應(yīng)用奠定了基礎(chǔ),同時軸線長度和空腔體積參數(shù)也為流道識別和水力計算提供了接口。
參考文獻:
[1] 趙繼偉,魏群,張國新,等. 水利工程信息模型的構(gòu)建及其應(yīng)用[J]. 水利水電技術(shù), 2016,47(4):29-33.
[2] 王寧,陳嶸,楊新軍,等. 基于BIM技術(shù)的水利工程三維設(shè)計研究與實現(xiàn)[J]. 人民長江,2017,48(增1):162-165.
[3] 葛晶,周世光. 基于Revit平臺BIM工作系統(tǒng)二次開發(fā)應(yīng)用實例[J]. 建筑技術(shù),2017(12):85-87.
[4] 補舒棋. 水電工程三維設(shè)計中CATIA與REVIT比較[J]. 人民黃河, 2014(3):113-116.
[5] 王增竹. Revit二次開發(fā)及其應(yīng)用研究[J]. 水電站設(shè)計,2019,35(3):31-33.
[6] 朱致遠,牛志偉,張宇,等. Revit二次開發(fā)在水閘工程擋土墻設(shè)計中的應(yīng)用[J]. 人民長江,2021,52(2):117-121.
[7] 伍丹琪,陳俊濤,肖明. 基于Revit二次開發(fā)的泵站廠房參數(shù)化BIM解決方案[J]. 水電與新能源, 2019, 33(4):15-18,68.
[8] 宋永嘉,張豪杰,朱浩巖,等. 基于BIM的水閘消能工優(yōu)化設(shè)計應(yīng)用研究[J]. 水利與建筑工程學報, 2020(12):15-20,27.
[9] AUTODESK ASIA PTE LTD. Autodesk Revit二次開發(fā)基礎(chǔ)教程[M]. ?上海:同濟大學出版社, 2016:1-2.
[10] 趙春玲. NET平臺下開發(fā)三層架構(gòu)WinForm應(yīng)用程序簡介[J]. ?信息技術(shù)與信息化, 2010(4):33-35.
(編輯:唐湘茜)
Research on automatic modeling method of turbine spiral case based
on secondary development of Revit
DENG Yuxing, LI Jinping, SU Kai
(School of Water Resources and Hydropower, Wuhan University, Wuhan 430072, China)
Abstract:In order to solve the problems of complicated modeling process of hydraulic turbine spiral case and difficulty for obtaining the channel parameters, based on the secondary development of Revit software, we designed a plug-in for automatic modeling of metal spiral case through Revit API toolkit, WinForm development interface, C# programming language, spiral case hydraulic design theory and spiral case lofting path formula derivation. The operation results of example parameters showed that the plug-in is high in visualization and convenient in operation, and can effectively improve the modeling efficiency of spiral case, and also provide an interface for channel parameter acquisition and hydraulic analysis.
Key words: metal spiral case; BIM Technology; plug-in design; secondary development; lofting fusion