陳蕾蕾,左威龍,劉占午
(1.江蘇省水利勘測(cè)設(shè)計(jì)研究院有限公司,江蘇 揚(yáng)州 225127;2.江蘇省水利建設(shè)工程有限公司,江蘇 揚(yáng)州 225007)
建筑信息模型(Building Information Modeling,BIM)主要用于建立虛擬的建筑工程三維模型并利用數(shù)字化技術(shù)為這個(gè)模型提供完整的、與實(shí)際情況一致的建筑工程信息庫(kù)[1]。BIM提供了可視化的思路,將以往線條式的構(gòu)件形成三維立體實(shí)物圖形展示在人們面前;與建筑業(yè)設(shè)計(jì)效果圖相比,BIM技術(shù)的可視化不僅包含構(gòu)件的大小、位置和顏色還可以展示構(gòu)件之間的互動(dòng)性和反饋性[2]。目前BIM技術(shù)在建筑領(lǐng)域已經(jīng)得到廣泛的應(yīng)用,當(dāng)前應(yīng)用最為廣泛的建模軟件是 Revit 軟件,該軟件操作簡(jiǎn)便、命令齊全,對(duì)房建上常用的結(jié)構(gòu)(從軸網(wǎng)、高程設(shè)置,到樓板、柱、豎井、屋頂)都進(jìn)行了分類設(shè)置,方便選取[3],但是水利工程和建筑工程的特點(diǎn)有所不同,BIM技術(shù)在建筑領(lǐng)域的研究成果并不完全適用于水利工程設(shè)計(jì)[4],本文主要以平板直升門水閘閘室為研究對(duì)象,基于Revit平臺(tái)和c#技術(shù)開發(fā)專業(yè)模塊[5]實(shí)現(xiàn)常用形式的閘室模型(底板、閘墩、胸墻、排架、工作橋、交通橋)構(gòu)建,通過對(duì)水閘閘室結(jié)構(gòu)形式的細(xì)化整理[6],實(shí)現(xiàn)分塊模型的參數(shù)化,驅(qū)動(dòng)模型生成,最終生成水閘整體模型。
閘室是水閘的主體建筑物,其結(jié)構(gòu)形式多種多樣,與閘門、過流形式等條件相關(guān)[7],水閘閘室目前尚未有現(xiàn)成的三維模型構(gòu)建庫(kù),需要通過開發(fā)專業(yè)模塊實(shí)現(xiàn)常用形式的閘室模型(底板、閘墩、胸墻、排架、工作橋、交通橋)構(gòu)建[8]。Autodesk Revit提供了應(yīng)用程序編程接口API(Application Programming Interface)[9],用戶可以使用API來開發(fā)自己的應(yīng)用程序操縱和訪問Revit,從而實(shí)現(xiàn)不同的標(biāo)準(zhǔn)和需求,本文主要運(yùn)用面向?qū)ο缶幊陶Z(yǔ)言c#[10]進(jìn)行二次開發(fā),通過編譯生成的DLL文件與Revit軟件建立聯(lián)系,以插件按鈕的形式出現(xiàn)在Revit軟件的工具欄面板上,方便用戶隨時(shí)點(diǎn)用。
模型創(chuàng)建的關(guān)鍵在于細(xì)化水閘閘室結(jié)構(gòu),整理結(jié)構(gòu)形式,參數(shù)化結(jié)構(gòu)數(shù)據(jù),最終驅(qū)動(dòng)模型生成,平板直升門水閘三維建模開發(fā)模塊主要包含7個(gè)模塊[11]:底板、閘墩、排架、牛腿、胸墻、工作橋和交通橋。參數(shù)化就是對(duì)這些模塊的形狀和位置進(jìn)行描述[12],如底板結(jié)構(gòu)需要用分塊數(shù)目、順?biāo)飨蜷L(zhǎng)度、垂直流向長(zhǎng)度、底板厚度、否包含齒坎以及齒坎的相關(guān)參數(shù)進(jìn)行描述,其他模塊由于結(jié)構(gòu)形式和組合形式的不同其參數(shù)也不盡相同,因此描述這7個(gè)模塊需要大量的參數(shù)。
水閘參數(shù)化過程中研究發(fā)現(xiàn)不同模塊在不同程度的相互影響,主要表現(xiàn)為:①閘墩的閘孔間距依賴于閘孔數(shù)木、墩體厚度和底板的垂直水流向長(zhǎng)度;②排架和牛腿是否可設(shè)置參數(shù)依賴于閘墩模塊是否設(shè)置工作門槽,閘墩包含工作門槽即可設(shè)置排架和牛腿相關(guān)參數(shù);③排架和牛腿的底高程依賴于閘墩頂高程;④牛腿厚度依賴于排架厚度;⑤交通橋和工作橋長(zhǎng)度依賴于底板的垂直水流向長(zhǎng)度。不同模塊的具體參數(shù)及依賴關(guān)系如圖1所示。
圖1 平板直升門水閘參數(shù)化描述
平板直升門二次開發(fā)插件基于Microsoft Visual Studio2012開發(fā)平臺(tái),采用C#編程語(yǔ)言,引用RevitAPI.DLL和RevitAPIUI.DLL文件,以Addin文件方式實(shí)現(xiàn)與Revit軟件的交互。
二次開發(fā)項(xiàng)目中添加RevitAPI.DLL和RevitAPIUI.DLL引用文件可有效訪問Revit提供的編程接口API,主要有兩種編程模式:外部命令(IExternalCommand)和外部應(yīng)用(IExternalApplication),外部命令用于實(shí)現(xiàn)插件的三維建模功能,包含執(zhí)行(Execute)、拉伸(Extrusion)、放樣(Sweep)等指令,外部應(yīng)用用于在Revit軟件中創(chuàng)建插件使用按鈕,包含啟動(dòng)(OnStartup)和關(guān)閉等指令(OnShutdown)[13],兩種模式混合編程使得開發(fā)插件在啟動(dòng)和關(guān)閉Revit軟件時(shí)自動(dòng)執(zhí)行。編程界面中接口引用以及數(shù)據(jù)類如圖2所示。
圖2 編程接口和數(shù)據(jù)類描述
水閘建模首先要考慮各個(gè)模塊的輪廓參數(shù),根據(jù)輪廓的復(fù)雜程度不同,存儲(chǔ)輪廓數(shù)據(jù)的方式有兩種:點(diǎn)集和線集,點(diǎn)集適用于全是直線的輪廓,如底板,工作橋等,線集適用于包含圓弧和直線等復(fù)雜組合的輪廓,如閘墩、胸墻等。其次某些模塊之間的位置布置需根據(jù)輪廓參數(shù)和界面參數(shù)計(jì)算出來,如排架的放置位置與閘墩的高度有關(guān),胸墻的放樣寬度與閘孔間距有關(guān),根據(jù)模塊的放置位置其模型生成方式有放樣和拉伸兩種,程序會(huì)根據(jù)計(jì)算結(jié)果自動(dòng)識(shí)別模型的生成方式。水閘模型的參數(shù)較多,輸入操作比較繁瑣,為簡(jiǎn)化用戶操作,界面中參數(shù)可導(dǎo)出至TXT文檔,下次使用時(shí)導(dǎo)入更新即可。水閘建模程序的主要結(jié)構(gòu)布置如圖3所示。
圖3 水閘建模程序的結(jié)構(gòu)布置
采用本文的二次開發(fā)插件對(duì)某平板直升門水閘進(jìn)行設(shè)計(jì)。
①設(shè)置2塊底板,底板面高程為-5m,底板順?biāo)飨蜷L(zhǎng)度為20m,垂直水流向長(zhǎng)度為20m,底板厚為1m,2塊底板均設(shè)置前、后齒坎;②第一塊底板閘孔數(shù)為2孔,邊、中、縫墩墩體厚度均為1m,墩體間距自動(dòng)計(jì)算為0、8、9m,每個(gè)墩體設(shè)置工作門槽,距離3m,門槽寬0.6m,門槽深度為0.3m;第二塊底板閘孔數(shù)為1,邊、縫墩設(shè)置與第一塊底板的邊、縫墩參數(shù)設(shè)置相同,每個(gè)墩體設(shè)置上游檢修門槽,門槽設(shè)置與第一塊底板相同;③第一塊底板設(shè)置排架參數(shù),長(zhǎng)4m,厚1m,頂高程為10m,收縮段寬2m;④第一塊底板設(shè)置牛腿參數(shù),頂寬1m,底寬0.5m,前緣高0.5m,后緣高0.7m,頂高程為10m;⑤兩塊底板的胸墻參數(shù)設(shè)置相同,與底板上游側(cè)距離4m,底高程為-2m,頂高程為3m,面板厚0.5m,貼角高1m、寬0.5m,底梁寬2m、高0.8m,圓弧半徑為0.5m;⑥第一塊底板工作橋類型設(shè)置為多梁型,高程為11m,寬4.5m,面板厚0.3m,縱向主梁數(shù)目為4,梁寬0.6m;第二塊底板工作橋類型設(shè)置為PI型;⑦兩塊底板交通橋類型均為平板型,橋面高程為5.5m,寬5.5m,厚0.5m,與底板上游側(cè)距離9.5m,第一塊底板護(hù)欄形式為矩形路緣,高0.2m,寬0.3m,第二塊底板護(hù)欄形式為防撞護(hù)欄,頂寬0.28m,底寬0.45m,倒角半徑r=0.025m,倒角半徑R=0.25m,總高0.85m,內(nèi)緣高0.25m,上部斜率為9.85,下部斜率為1.45。
輸入上述參數(shù)生成的模型立面圖和三維圖如圖4所示,參數(shù)輸入及模型生成時(shí)間在5min以內(nèi),同樣的模型如果采用手工建模至少需要2h以上,界面設(shè)置參數(shù)時(shí)可將數(shù)據(jù)保存到TXT文檔中,以便下次直接讀取參數(shù),避免重復(fù)輸入。
圖4 平板直升門水閘模型示意圖
平板直升門水閘建模涉及的模塊和參數(shù)繁多,主要包含底板、閘墩、胸墻、排架、工作橋、交通橋等模塊,且部分模塊之間具有依賴性,在Revit平臺(tái)中手動(dòng)操作建模需要消耗巨大的精力和時(shí)間,通過二次開發(fā)的程序可明顯縮短建模時(shí)間,且模塊參數(shù)輸入方便易懂,程序界面中包含相關(guān)構(gòu)件的圖形顯示,實(shí)時(shí)展示參數(shù)輸入的效果,方便用戶排錯(cuò),有效提高了模型的生成效率。平板直升門水閘的二次開發(fā)程序依賴于Revit開放的接口,若Revit版本升級(jí)后接口有所變動(dòng),程序也需要適時(shí)的更新和完善。本文論述的平板直升門水閘參數(shù)化過程以及二次開發(fā)流程可為其他類型的水閘模型開發(fā)提供借鑒經(jīng)驗(yàn)。