嚴 旭
(中國電力工程顧問集團西南電力設計院有限公司,四川 成都 610021)
BIM概念的提出始于上世紀80年代前后,但直至2010年起,BIM技術才在房屋建筑領域逐漸得到廣泛使用[1]。作為一種新興三維設計技術,BIM具有可視化、協調性、模擬性、優化性和可出圖性[2]。Autodesk公司開發的Revit軟件,能滿足建筑、結構、機電專業的要求,成為房屋建筑業使用最廣的BIM軟件之一[3]。
基于Revit平臺,多位專家和學者對結構專業BIM設計問題進行研究。龍輝元[4]、喬保娟[5]、楊黨輝[6]、劉照球[7]等研究并實現Revit三維模型和結構分析軟件模型的轉換,可用于“翻模”;郝國龍[8]基于Revit建模并創建結構圖紙,董愛平[9]基于Revit人工操作建模并完成梁、板、柱、基礎平法圖。李坤[10]在地鐵車站結構設計中采用Revit建模并直接導出至Robot Structrue中進行結構分析;趙華英[11]、王勇[12]等在創建Revit模型和平法圖紙后,利用CSIXRevit將模型導出至Etabs中進行結構分析,但均未解決Revit模型和計算模型如何保持動態一致的問題。
國內軟件商長沙恩為軟件、探索者軟件、盈建科軟件相繼自2011~2014年,基于Revit開發了結構輔助設計軟件,技術路線在Revit中讀取計算模型后生成Revit三維模型,一鍵形成各層平面布置圖,在Revit中讀取計算結果并設置配筋參數,一鍵形成配筋圖和三維鋼筋[13]。因BIM數據來源于計算模型,計算模型變更后,無法正確且高效地更新到Revit中,故此方式只適合先計算再繪圖的設計方式。
廣廈軟件在2018年開發了正向設計軟件GSRevit[14],技術路線是在Revit三維模型中輸入全部的荷載和參數后,直接輸出至廣廈結構進行結構計算[15],可在Revit中一鍵形成模板圖和配筋圖。只利用Revit三維模型,與在PDMS、SmartPlant 3D等BIM軟件中進行開發沒有本質區別。GSRevit看似提供了完整的操作菜單,但又不能完全替代Revit人機界面,直接使用Revit進行的操作可能不被識別。有簡單的使用案例[16-17],但操作過程“一氣呵成”,沒有體現結構設計期間反復推敲修改的情形。
以Revit和PKPM軟件之間貫通軟件的開發為例,介紹軟件開發和測試的具體過程。利用3個已完工的混凝土框架結構進行SATWE計算結果的對比驗證,與原SATWE計算結果進行對比,結果均100%一致。在實際工程中選擇了3個中小規模的混凝土框架結構進行BIM正向設計[18]。旨在為BIM平臺軟件指明亟需升級完善的問題,為第三方軟件商規劃產品路線指明方向。
對結構設計的工作內容進行梳理,可劃分三個部分:“協同”“圖紙”“計算”?!皡f同”是專業內、專業外的配合;“圖紙”是圖紙及統計表;“計算”是計算模型、計算過程及計算書[19]。二維CAD設計,“協同”主要依靠二維CAD的反復交互,“圖紙”與“計算”是割裂的、需要人工維護二者的一致性[19]。BIM技術的出現,其可視化、協調性、模擬性,是解決專業內外的“協同”的獨特優勢。通過Revit混凝土框架[20]、Revit鋼結構框架[21-22]、Revit埋件[23]的設計出圖實例可知,在Revit中,不需要借助任何插件就能解決“圖紙”的問題,結構工程師通過人工操作,可以方便地創建和推敲BIM模型,方便地創建Revit平、立、剖布置圖,完成結構的布置設計,設計總說明、配筋圖、節點詳圖等與模型無關或關系較小的可以在二維CAD中繪制,也可以逐漸在Revit中積累??梢钥闯?,結構BIM設計,關鍵問題是如何實現“計算”的問題。Revit中人工創建的三維模型,可以很方便地指定為Revit分析模型,若在Revit中添加全部的荷載和參數,全覆蓋地輸出為計算軟件所需的源數據,甚至直接調用結構計算軟件運行結構分析[24],避免了模型反復傳導時的更新問題,能最終解決結構設計的“計算”問題。
故確定本次開發的技術路線:基于Revit分析模型,補充所有荷載和計算所需的參數后,輸出為結構計算軟件的原始數據文件“.jws”;直接調用結構計算軟件運行“結構分析”;在Revit中讀取內力和配筋并進行后處理,如圖1所示。其實質是在Revit中嵌入結構計算軟件的前處理和后處理,最終可實現在Revit中直接調用結構計算軟件進行“結構分析”,且只使用“結構分析”功能。

圖1 Revit結構設計插件技術路線
我院常用的結構計算軟件是PKPM和STAAD.PRO,混凝土結構通常采用PKPM軟件的PM+SATWE模塊進行計算。PM為前處理模塊,SATWE是基于墻元理論的結構高層建筑結構空間有限元分析軟件[25],PM和SATWE的原始數據都存貯在“.jws”文件中。
2017年3月立項開發Revit與PKPM軟件PM、SATWE模塊的貫通軟件,命名為ReviSTRU,只開發在Revit中補全荷載、補全PM和SATWE參數、輸出“.jws”文件的功能。Revit中導入PKPM內力和配筋結果,在Revit中生成梁、板、柱配筋圖,因現有結構輔助設計軟件已有開發,故本次不開發。編程語言采用microsoft公司發布的面向對象的編程語言C#。
ReviSTRU與現有結構輔助設計軟件的重要區別在于:
1)結構工程師先在Revit中人工創建Revit三維模型、Revit圖紙。不需要讀取結構計算軟件中的模型,也不需要做自動成圖的功能;
2)解析Revit分析模型后,以覆蓋的方式輸出計算軟件的源數據文件,不存在模型數據的更新問題;
3)能夠實現在Revit中直接調用結構計算軟件并運行結構計算。
ReviSTRU主界面功能菜單(圖2)有如下功能:添加荷載、設計參數(含樓層信息、PM設計參數、SATWE設計參數、角柱設置)、約束釋放(鋼構件約束對比、砼構件約束對比、約束識別、桿件角度表、材料等級表)、分析設置、上部分析。

圖2 ReviSTRU功能菜單主界面
在Revit中,荷載工況的添加與修改,可以利用Revit內置的“分析→分析模型→結構設置→荷載工況”功能,不需要二次開發。
需要注意,從Revit2012~2022版,Revit一直只有6種荷載工況(圖3)。前3種是空間荷載,與構件無關聯;后3種主體荷載雖與構件有關聯,但僅能表示構件兩端的節點荷載、沿構件通長分布的線荷載、整個樓板上的面荷載。Revit不直接支持的荷載,目前只能用空間荷載模擬。故在本次開發中需要對荷載進行“刷新”:當構件被移動時,荷載相應移動;當構件被刪除時,荷載相應刪除。

圖3 Revit內置的6種荷載工況
各荷載工況下荷載的添加、修改、刪除,需要二次開發,具體為節點荷載、桿件荷載(均布荷載、均布彎矩、集中力、集中彎矩、線性變化力、梯形分布荷載、柱側荷載)、樓板荷載、自重荷載(圖4)。在Revit中,荷載的正負值按世界坐標系的方向,荷載垂直向下時為負,在輸出“.jws”文件時轉換為PKPM默認的向下為正。

圖4 ReviSTRU中可添加的荷載
在ReviSTRU中荷載輸入界面中,在荷載工況上單擊右鍵,將出現“添加荷載”及荷載的修改、刪除等功能(圖5左)。在具體荷載上單擊右鍵,將出現“單選施加荷載”和“批量施加荷載”等功能(圖5右),在Revit分析模型中選擇節點或構件后,即可施加荷載。在Revit中不宜與PM一樣在平面圖上輸入樓板荷載,故結合Revit的特點進行改進:施加樓板荷載時,只需要在Revit分析模型的三維視圖中單擊樓板,自動搜索該點樓板周邊的梁所圍成的區域,用Revit的空間面荷載表示該樓板的面荷載。

圖5 ReviSTRU添加荷載與施加荷載
輸出“.jws”,必須明確標準層及層高。逐層設置樓層信息相當不便,故開發樓層信息對話框(圖6),在Revit中讀取所有的標高列表,勾選是否設定為PKPM的標準層,層高則由軟件自動計算,并定義各層梁、板、柱、墻默認的混凝土強度、鋼筋強度、配筋率。

圖6 ReviSTRU的樓層信息
Revit模型是實際的模型,故不存在標準層的概念。輸出“.jws”時,Revit中每個自然層就是一個標準層,不考慮標準層合并。對于不屬于標準層的構件,按層間構件(梁、板、柱)考慮。
對于需要單獨設定材質的構件,直接在Revit的“結構材質”中設定(圖7)。ReviSTRU會搜索構件的“結構材質”是否含“Cxx”“Q235”“Q345”等強度值,若有,則會單獨設定該構件(梁、板、柱、墻)的指定強度值。

圖7 ReviSTRU構件特定強度的設定
在ReviSTRU中,需輸入PM和SATWE所需的全部參數,故開發這些參數全部的輸入界面。“.jws”是二進制加密文件,目前只掌握2.x版“.jws”格式,無法輸出新版“.jws”格式,故目前采取的措施是對不能保存到2.x版的參數予以提示。因現版SATWE不能直接打開2.x版“.jws”文件,故每次輸出“.jws”后,必須用PM打開并更新數據格式。
PM參數對話框,用綠色表示無法輸出的參數,并在下方以文字注明(圖8)。例如,“矩形房間導荷載,邊被打斷時,將大梁上的梯形、三角形荷載拆分到小梁上”“鋼框架抗震等級”“抗震構造措施的抗震等級”,若實際取值恰巧是當前PM的默認值,則不用在PM中修改。否則,每次結構計算前都必須使用PM修改。對于既可在PM參數中設定又可在SATWE中設定的參數,用藍色表示。

圖8 ReviSTRU的PM設計參數——地震信息
SATWE參數對話框,用紅色表示無法輸出的參數,并在下方以文字注明(圖9)。若實際取值恰巧是當前SATWE的默認值,則不用在SATWE中修改,否則,每次結構計算前都必須使用SATWE修改。

圖9 ReviSTRU的SATWE設計參數——地震信息
在SATWE前處理的特殊構件中,需要設定角柱。Revit沒有角柱信息的存放位置,故在構件族中創建一個“結構性質”的實例參數,用于存放角柱信息。在ReviSTRU中,有必要增加“角柱設置”功能(圖10),讀取并羅列所有桿件的是否為角柱,且與構件聯動:在模型里選中構件,則表中自動跳轉至該構件的角柱與否情況;在表中雙擊某行,則模型中予以高亮顯示該行所對應的構件。

圖10 ReviSTRU的角柱設置
在Revit分析模型中,可以人工干預構件起點、終點的約束釋放,但不能直接觀察各構件的約束釋放情況。故有必要在ReviSTRU中增加“鋼構件約束對比”和“砼構件約束對比”功能(圖11),讀取并羅列所有桿件的兩端約束情況,且與構件聯動:在模型里選中構件,則表中自動跳轉至該構件的約束釋放情況;在表中雙擊某行,則模型中予以高亮顯示該行所對應的構件。

圖11 ReviSTRU的混凝土構件約束對比
在Revit中,不能直接觀察構件的自轉角度。故有必要在ReviSTRU中增加“桿件角度表”功能(圖12),讀取所有桿件的自轉角度,且與構件聯動:在模型里選中構件,則表中自動跳轉至該構件的轉角;在表中雙擊某行,則模型中予以高亮顯示該行所對應的構件。

圖12 ReviSTRU的桿件角度表
在Revit中,不便于直觀查看各構件的強度。故有必要在ReviSTRU中增加“材料等級表”功能,如圖13所示,讀取所有桿件的材料強度,且與構件聯動:在模型里選中構件,則表中自動跳轉至該構件的強度;在表中雙擊某行,則模型中予以高亮顯示該行所對應的構件。

圖13 ReviSTRU的材料強度等級表
輸出“.jws”文件,默認只讀取分析模型,分析軟件選擇“ePKPM”,如圖14所示。

圖14 ReviSTRU的分析模型設置
在Revit中布置樓板時,按整塊樓板建模即可,沒有必要基于梁的位置分塊建板。ReviSTRU會在輸出到“.jws”文件時,根據梁的分析線劃分樓板。樓板上的矩形和圓形孔洞,輸出到“.jws”文件時,是100%的真實輸出,如圖15所示。經測試發現,SATWE在進行結構計算時,會扣除孔洞區域的樓面荷載。

圖15 ReviSTRU的分析模型設置
單擊“上部分析”按鈕,ReviSTRU即按“分析設置”的設定輸出“.jws”文件,先在Revit模型文件所在目錄下創建 “Revi2SATWE計算模型” 子目錄(圖16),然后解析Revit分析模型中的梁、板、柱等構件,將構件在交點處打斷,將Revit中的各個恒載工況均合并到PM的恒載中,將Revit中的各個活載工況都合并到PM的活載中,并將PM和SATWE參數直接寫入“.jws”(圖17)。因不能實現直接調用PM或SATWE,故每次輸出“.jws”文件時,ReviSTRU均會打開“Revi2SATWE計算模型”目錄,以提示結構工程師程序輸出已完成。

圖16 ReviSTRU的創建的子目錄“Revi2SATWE計算模型”

圖17 子目錄“Revi2SATWE計算模型”中的文件
軟件測試分為三個階段:模塊測試、整體測試、對比驗證。
軟件開發期間,跟隨軟件模塊的開發進行模塊測試,對每個具體的模塊進行反復測試與優化,直到輸出正確的結果。
2019年軟件開發完成后,進行軟件的整體測試。ReviSTRU輸出“.jws”后,在PM和SATWE中打開并檢查構件、荷載、參數,反復測試與優化,直到與ReviSTRU中的輸入完全一致。
完成整體測試后,就實現了本次開發的目標。但是不能肯定SATWE運行結果是否正確,有沒有其它問題,故有必要與已完成的實際工程進行對比驗證。考慮到建模的工作量,選擇3個中等體量且已完工的混凝土框架結構進行對比驗證,具體操作為:對照結構施工圖和計算模型,在Revit中人工創建Revit模型,使用ReviSTRU在Revit中完成荷載輸入、PM和SATWE參數輸入,輸出2.x版的“.jws”后,先用PM打開并更新數據格式,再采用SATWE進行計算,最終要能得到與已有計算模型完全一致的計算結果。
對比驗證發現,在模型一致、參數一致的情況下,SATWE中各荷載工況的構件彎矩、剪力、軸力、配筋、位移、地震效應,及指標匯總信息、柱腳內力等等,都與對照模型100%一致。在PKPM的“砼施工圖”模塊中,梁、板、柱在同樣的配筋參數下,實際配筋結果與對照模型也是100%一致。通過對比驗證,以事實證明軟件輸出結果可信,可以用于工程設計。
2020年,選擇3個中小規模的混凝土框架結構進行工程應用。操作步驟與對比驗證相同,不同之處在于沒有對比模型,不使用AutoCAD,直接在Revit中建模進行正向結構設計,在Revit中完成全部圖紙。
第一個是某項目危廢儲存間結構(圖18),單層,荷載較為簡單,只有樓面荷載、女兒墻線荷載,施工圖共3張,均放在一個Revit圖紙視圖中。
第二個是某項目凝結水回收泵房結構(圖19),2層,荷載也較為簡單,只有樓面荷載、女兒墻線荷載,施工圖共3張,在Revit圖紙視圖分開放置。

圖18 某項目危廢儲存車間結構

圖19 某項目凝結水回收泵房結構
第三個是某項目消防值班樓結構[20],4層,有節點荷載、梁集中力、梁線荷載、多種樓面荷載,每個Revit圖紙視圖放置一張施工圖(圖20)。

圖20 某項目消防值班樓結構
因當前使用的SATWE不能直接打開ReviSTRU輸出的2.x版的“.jws”文件,故每次進行結構計算之前,必須先用PM打開并更新“.jws”文件,順便設置ReviSTRU中不能設定的PM參數,再用SATWE前處理設置ReviSTRU中不能設定的SATWE參數,最后運行SATWE進行結構計算。
完成SATWE結構計算之后,在PKPM中設定梁、板、柱的配筋參數,完成梁、板、柱的配筋。當Revit中的結構模型有修改時,重新用ReviSTRU輸出“.jws”文件即可,梁、板、柱的配筋參數依舊存在,重新生成梁、板、柱的鋼筋即可。
通過ReviSTRU的開發、測試、驗證及應用案例,證實在Revit中完成結構計算軟件前處理功能、輸出結構計算軟件所需的全部數據是可行的,避免了BIM模型和計算模型相互之間的“更新”問題。
當前版本Revit自帶的荷載類型太少,很多荷載都只能用Revit空間荷載模擬。構件變動后,需要重新將荷載與構件匹配。若每一步修改都自動刷新荷載,可能導致臨時不能與構件匹配的荷載丟失,當模型較大時,還會產生等待時間,故目前選擇人工“刷新”荷載的方式。用空間荷載模擬顯示的樓板荷載,在梁移動后還是發現有未更新到位的情況,需要進一步優化算法解決。最終的解決辦法是AutoDESK公司完善Revit的荷載類型,包括樓板荷載的輸入與剖分,使用空間荷載而產生的問題將不復存在。
目前沒有開發其他SATWE特殊構件的對應設置,只完善了梁、板、柱相關的功能,用于框架結構、框架支撐結構的Revit正向設計。進一步,可以開發與“墻”相關的功能,實現剪力墻結構的正確輸出。
目前每次輸出的“.jws”文件,必須用PM打開才能更新,才能被SATWE識別。若PKPM開放數據結構和SATWE調用接口,可以實現在Revit中直接調用SATWE運行其“計算功能”,則可以不必使用PM。
將結構計算軟件的前處理、后處理都嵌入Revit中,結構設計時甚至只需要調用結構計算軟件運行其“計算”功能。在Revit中進行結構正向設計和計算,不需要在AutoCAD中繪制圖紙、也不需要在結構計算軟件中建模,利于結構工程師專注于“設計”。對于沒有“出圖”功能的結構計算軟件如STAAD、MIDAS,可以彌補其不足,在Revit中完成后處理。
將來實現直接調用結構計算軟件運行分析計算時,可以考慮歸集到少量的幾臺服務端進行計算,計算結果則通過內網返回用戶端,能大大節省購買結構計算軟件的費用。