(同濟(jì)大學(xué)橋梁工程系,上海 200092)
行業(yè)基準(zhǔn)分類(Industry Foundation Classes,IFC)由BuildingSMART(原國(guó)際協(xié)作聯(lián)盟,IAI)發(fā)布并維護(hù),它是為建筑業(yè)量身定做的產(chǎn)品模型標(biāo)準(zhǔn)數(shù)據(jù)模型[1]。從1994年發(fā)展至今,IFC標(biāo)準(zhǔn)在建筑工程等領(lǐng)域已經(jīng)得到了廣泛的應(yīng)用,但還未在道路、橋梁、隧道等線狀工程中得到普及,這是因?yàn)樵贗FC4以及更早版本的框架中缺少表達(dá)土木基礎(chǔ)設(shè)施語(yǔ)義的實(shí)體[2]。為了進(jìn)一步支持基礎(chǔ)設(shè)施工程領(lǐng)域的信息共享,buildingSMART成立了專門委員會(huì)Infrastructure Room,并發(fā)起了IFC Alignment、IFC Bridge等多個(gè)子項(xiàng)目[3],Alignment(線形)作為基礎(chǔ)設(shè)施項(xiàng)目所需的公有資源[4](圖1),被列為首個(gè)需要集成到IFC標(biāo)準(zhǔn)中的項(xiàng)目。IFC Alignment 1.0在2015年7月被接受為buildingSMART的認(rèn)證標(biāo)準(zhǔn),隨后又耗時(shí)兩年與IFC4 schema集成,經(jīng)過(guò)多次修訂以及公開評(píng)審,IFC4x1 Final于2017年6月正式發(fā)布[5],標(biāo)準(zhǔn)中引入了與Alignment相關(guān)的概念、實(shí)體和屬性,使得IFC數(shù)據(jù)模型能夠完備地描述道路的平、豎曲線,同時(shí)增強(qiáng)了基于道路平、豎曲線定位空間構(gòu)件的能力。
建筑物的全生命周期中會(huì)經(jīng)歷規(guī)劃、設(shè)計(jì)、施工、運(yùn)維等多個(gè)階段,基于IFC的BIM模型作為工程信息的載體將在這一過(guò)程中不斷豐富,并支持各個(gè)階段和領(lǐng)域間的信息共享。在橋梁的設(shè)計(jì)過(guò)程中往往需要反復(fù)調(diào)整設(shè)計(jì)參數(shù)并驗(yàn)算結(jié)構(gòu)安全,工程人員無(wú)法避免地需要根據(jù)變更過(guò)后的圖紙或模型在計(jì)算軟件中重新建模,因此本文提出了把IFC中性文件作為模型信息交換的載體來(lái)簡(jiǎn)化前處理從而減少重復(fù)工作的方法。
圖1 Alignment在IFC Infrastructure項(xiàng)目中的中心地位[4]
一些學(xué)者已經(jīng)對(duì)IFC模型與有限元模型的交換進(jìn)行了相關(guān)研究:秦領(lǐng)等研究了基于IFC的建筑模型與結(jié)構(gòu)有限元模型的數(shù)據(jù)共享與交換,并提出了通用結(jié)構(gòu)有限元模型平臺(tái)以支持多種有限元軟件格式[6],張曉洋等提出了IFC-API建筑結(jié)構(gòu)轉(zhuǎn)換模式,從而解決建筑設(shè)計(jì)向結(jié)構(gòu)設(shè)計(jì)的信息斷層問(wèn)題[7];但二者討論的范圍限于建筑結(jié)構(gòu),因此筆者選取了橋梁設(shè)計(jì)中常用的計(jì)算軟件Midas Civil作為橋梁IFC模型轉(zhuǎn)換的目標(biāo)平臺(tái),詳細(xì)分析了基于線形的IFC實(shí)體與有限元模型的映射關(guān)系,并基于開源工具箱xBIM開發(fā)了IFC模型轉(zhuǎn)換程序。
不同于房屋建筑這類“點(diǎn)狀工程”,道路、橋梁等“線狀工程”擁有路線起點(diǎn)、樁號(hào)、平豎曲線等工程要素,表達(dá)這些語(yǔ)義的實(shí)體在IFC Alignment體系中定義并最終納入到IFC4x1的框架中,本節(jié)對(duì)其中一部分內(nèi)容進(jìn)行了介紹。
新增的IfcAlignmentCurve等幾何資源實(shí)體封裝了平、豎曲線的信息描述方式,如圖2所示,各實(shí)體之間的關(guān)系通過(guò)UML類圖表示。其中,空心菱形箭頭表示聚合關(guān)系(Aggregation),實(shí)心菱形箭頭表示組合關(guān)系(Composition),三角形空心箭頭表示泛化(Generalization),敞開箭頭表示關(guān)聯(lián)(Association)[8]。下面以豎曲線為例說(shuō)明UML類圖所表示的實(shí)體關(guān)系與屬性的含義:
IfcAlignmentCurve的屬性Vertical引用了實(shí)體IfcAlignment2DVertical(豎曲線),其屬性Segments是元素類型為IfcAlignment2DVerticalSegment(豎曲線段)的非空數(shù)組,表示豎曲線由1或多段豎曲線段組成。
豎曲線段的屬性StartDistanceAlong表示該段豎曲線起點(diǎn)距離路線起點(diǎn)的距離(以平曲線長(zhǎng)度計(jì));屬性HorizontalLength表示該段豎曲線所對(duì)應(yīng)的平曲線段長(zhǎng);屬性StartHeight和StartGradient分別表示該段豎曲線起點(diǎn)的標(biāo)高(在所屬IfcAlignment的局部坐標(biāo)系下)和斜率(坡度)。
IfcAlignment2DVerticalSegment又可進(jìn)一步特化為三種具體的豎曲線段類型:直線段、圓弧段和拋物線段,三者擁有從共同父類繼承的上述公共屬性,并具有描述自身不同幾何特性的特有屬性。描述平曲線的實(shí)體具有上述類似的性質(zhì),區(qū)別在于平曲線段需要額外引用平面曲線段實(shí)體(IfcCurveSegment2D)才能表達(dá)平面線形,該實(shí)體類型具有平面直線段、平面圓弧段、平面緩和線段三個(gè)特化類型。
上述IFC數(shù)據(jù)模型完備地描述了平、豎曲線的相關(guān)信息,使得道路、橋梁、隧道等結(jié)構(gòu)的構(gòu)件可以將它們作為定位元素,從而在局部坐標(biāo)系下描述自身的幾何信息。
圖2 IfcAlignmentCurve及相關(guān)實(shí)體的概念模型
本節(jié)將詳細(xì)探討如何利用IFC數(shù)據(jù)模型表達(dá)基于平、豎曲線定位的橋梁上部結(jié)構(gòu)主梁,并主要從定位、幾何形狀和材料特性三個(gè)方面進(jìn)行闡述。
IFC4x1以前主要借助實(shí)體IfcLocalPlacement描述構(gòu)件的位置,它通常作為抽象實(shí)體IfcProduct(建筑產(chǎn)品)的屬性O(shè)bjectPlacement被引用,而它自身引用它所參考的笛卡爾坐標(biāo)系并描述一個(gè)新的局部坐標(biāo)系,在局部坐標(biāo)系下定位的實(shí)體通過(guò)多次坐標(biāo)矩陣變換可以得到最終的坐標(biāo)位置[9]。但該種方式不適用于基于曲線定位的幾何實(shí)體,因此IFC4x1中引入了實(shí)體IfcDistanceExpression,表1列出了該實(shí)體的屬性定義,它用沿線距離、橫向偏移、豎向偏移等幾個(gè)參數(shù)描述了參照曲線來(lái)定位的一個(gè)笛卡爾點(diǎn)的位置。
表1 IfcDistanceExpression實(shí)體屬性定義
IFC4x1中引入了實(shí)體IfcSectionedSolid(多截面實(shí)體)來(lái)表示沿曲線有截面變化的掃掠實(shí)體,表2列出了它的特化IfcSectionedSolidHorizontal的屬性定義,屬性Directrix表示所參考的曲線,它可以直接引用實(shí)體IfcAlignmentCurve,也可以引用基于IfcAlignmentCurve偏移得到的實(shí)體IfcOffsetCurveByDistances;屬性CrossSections引用實(shí)體IfcProfileDef來(lái)表示截面形狀,屬性CrossSectionPositions則引用3.1所介紹的實(shí)體IfcDistanceExpression來(lái)表示每個(gè)截面相對(duì)參考曲線的位置,這兩個(gè)屬性對(duì)應(yīng)的數(shù)組元素個(gè)數(shù)相等且至少為2。
如圖3[10]所示的多主梁鋼板梁橋,單根鋼主梁用繼承自抽象實(shí)體IfcProduct的IfcBeam描述,其幾何表示引用了實(shí)體IfcSectionedSolidHorizontal。
表2 IfcSectionedSolidHorizontal實(shí)體屬性定義
圖3 鋼板梁橋IFC模型示例[10]
實(shí)體IfcProfileDef可特化為多種具體的截面形式,包括(非)對(duì)稱I形截面、T形截面等參數(shù)化截面(均由實(shí)體IfcParameterizedProfileDef特化),適合描述規(guī)則的截面形式;同時(shí)也可以表示任意形狀截面,即通過(guò)一組或幾組多段線描述截面的外輪廓和內(nèi)輪廓。除截面的幾何形狀外,實(shí)體IfcProfileDef還可以通過(guò)反屬性HasProperties與預(yù)定義屬性集Pset_ProfileMechanical關(guān)聯(lián),該屬性集包含了截面面積、抗彎慣矩等截面特性的定義。需要注意的是,預(yù)定義屬性集是IFCschema中定義的一種信息擴(kuò)展的機(jī)制,并不代表每一個(gè)軟件廠商在實(shí)現(xiàn)IFC時(shí)一定會(huì)使用它,因此即使IFC文件中有關(guān)于截面的描述,但也不一定有關(guān)于截面特性的描述,在信息提取時(shí)需要根據(jù)情況進(jìn)行處理。
圖4展示了IFC物理文件中一段用實(shí)體IfcBeam及其屬性描述I形截面主梁的數(shù)據(jù)樣例,以“#”為前綴的數(shù)字代表實(shí)體的實(shí)例號(hào),每個(gè)實(shí)例在單個(gè)文件中只能被定義一次,但可以被多次被其他實(shí)例的屬性所引用。
圖4 EXPRESS語(yǔ)言描述的IFC文件數(shù)據(jù)段示例
位于資源層的實(shí)體IfcMaterial描述一種材料的基本屬性,包括名稱和分類,更具體的材料特性諸如容重、彈性模量等通過(guò)關(guān)聯(lián)Pset_MaterialCommon、Pset_MaterialMechanical等預(yù)定義屬性集來(lái)表達(dá)。在用IFC文件描述的一項(xiàng)實(shí)際工程中,IfcMaterial的實(shí)例必定通過(guò)關(guān)系實(shí)體IfcRelAssociatesMaterial與某一具體的產(chǎn)品實(shí)例(如IfcBeam)關(guān)聯(lián),否則不具有任何意義。
將IFC模型作為數(shù)據(jù)交換與共享的平臺(tái)有效減輕了不同軟件之間私自交換數(shù)據(jù)的實(shí)現(xiàn)代價(jià),但仍需要考慮到IFC模型與數(shù)據(jù)交換目標(biāo)平臺(tái)之間的數(shù)據(jù)映射,接口設(shè)計(jì)不當(dāng)或未考慮全面都有可能造成信息的丟失[11]。本文選取了常用的橋梁計(jì)算軟件MIDAS Civil作為目標(biāo)平臺(tái),討論了以*.ifc文件作為輸入進(jìn)行解析和處理,最終輸出為*.mct文件(MIDAS支持的腳本文件,可直接導(dǎo)入生成有限元模型)的過(guò)程。
IFC實(shí)例文件以STEP格式存儲(chǔ),訪問(wèn)其數(shù)據(jù)最常用的是早聯(lián)編(early binding)和晚聯(lián)編(late binding)兩種實(shí)現(xiàn)方法[12]。IFC Wiki整理了支持IFC文件讀寫的一些開源項(xiàng)目[13],筆者經(jīng)調(diào)研后選擇了對(duì)IFC4x1 schema支持較好的xBIM Toolkit,該工具箱核心庫(kù)XbimEssentials采用C#語(yǔ)言實(shí)現(xiàn)了IFC數(shù)據(jù)模型,并提供了完整的API(程序編程接口)供開發(fā)人員使用[14],圖5中的C#代碼展示了如何調(diào)用xBIM所提供的接口讀取IFC文件中的信息。讀者也可以選擇用任何一種編程語(yǔ)言自行實(shí)現(xiàn)IFC文件讀寫功能,好處是方便對(duì)schema進(jìn)行擴(kuò)展,但開發(fā)工作量較大且運(yùn)行效率不易保證。
圖5 調(diào)用XbimEssentials API獲取IFC數(shù)據(jù)代碼示例
通過(guò)分析MIDAS使用手冊(cè)附錄中的MCT命令說(shuō)明,抽象出圖6所示的類關(guān)系圖來(lái)模擬建立計(jì)算模型所需要的數(shù)據(jù)結(jié)構(gòu)。所有的資源類均繼承自抽象基類MCTRoot,因此擁有共同屬性Id,具體到不同的資源表現(xiàn)為節(jié)點(diǎn)號(hào)、單元號(hào)、材料號(hào)和截面號(hào)。表示節(jié)點(diǎn)數(shù)據(jù)的類MCTNode較為簡(jiǎn)單,除Id外只擁有X、Y、Z三個(gè)坐標(biāo)值作為屬性;表示材料特性的類MCTMaterial和表示截面特性的類MCTSection根據(jù)材料類型、截面類型的不同,具有不同的屬性參數(shù),并可以進(jìn)一步派生出更多子類;尤其對(duì)于MCTSection,圖6只展示了包含共同屬性截面名稱、截面類型等的抽象基類,開發(fā)的過(guò)程中可以根據(jù)實(shí)際情況派生出所需要的類并定義其特有的屬性,如第5節(jié)中的轉(zhuǎn)換程序用到了表示I形截面的類MCTHSection;表示單元的類MCTElement根據(jù)單元類型的不同將引用2至多個(gè)節(jié)點(diǎn)實(shí)例,并關(guān)聯(lián)對(duì)應(yīng)的截面號(hào)和材料號(hào)。
獲取IFC模型數(shù)據(jù)后,需要對(duì)相關(guān)實(shí)體的信息進(jìn)行一定程度的處理才能映射到MCT數(shù)據(jù)模型上。處理工作包括:
1)從模型中過(guò)濾出需要進(jìn)行數(shù)據(jù)交換的實(shí)體(IfcBeam);
2)從上一步過(guò)濾得到的實(shí)體出發(fā),通過(guò)其屬性和關(guān)系收集所有映射時(shí)需要用到的實(shí)體(IfcMate rial、IfcAlignmentCurve等);
3)解析實(shí)體包含的信息并映射到各自對(duì)應(yīng)的MCT類。
圖7展示了IFC數(shù)據(jù)模型中相關(guān)實(shí)體與MCT數(shù)據(jù)模型相關(guān)類之間的映射關(guān)系。
圖6 MCT數(shù)據(jù)模型UML類圖
圖7 IFC數(shù)據(jù)模型和MCT數(shù)據(jù)模型映射關(guān)系
對(duì)于同一個(gè)幾何體,IFC數(shù)據(jù)模型的描述方式與MIDAS計(jì)算模型中的描述方式并不完全相同,因此需要進(jìn)行一些額外的處理計(jì)算。以圖8所示的I形截面梁為例,在IFC模型中該掃掠實(shí)體的中心線位于截面包圍盒的中心,而計(jì)算模型中梁?jiǎn)卧膯卧獏⒖季€位于截面形心,為非對(duì)稱截面時(shí)二者并不重合,因此需要事先計(jì)算出截面的形心位置,并在生成單元節(jié)點(diǎn)坐標(biāo)時(shí)考慮該偏移量。
從圖8的例子可以看到,基于IFC的BIM模型有時(shí)可能并未包含計(jì)算模型所需要的全部信息(如截面特性),需要對(duì)缺失的信息進(jìn)行補(bǔ)全,因此數(shù)據(jù)映射時(shí)應(yīng)根據(jù)需求充分考慮兩種數(shù)據(jù)模型之間的共性和差異,盡量減少數(shù)據(jù)交換過(guò)程中信息的丟失。
圖8 非對(duì)稱I形截面
為了驗(yàn)證本文提出的IFC模型與MIDAS模型映射的方法,筆者開發(fā)了模型轉(zhuǎn)換程序原型,主程序采用C#語(yǔ)言編寫,IFC文件解析部分調(diào)用開源庫(kù)XbimEssentials。以IFC 4.1 Bridge Information Exchange-2017 [Draft]提供的模型[15]為測(cè)試文件作為轉(zhuǎn)換程序的輸入,成功將橋梁上部結(jié)構(gòu)的鋼主梁和混凝土橋面板轉(zhuǎn)換為MIDAS計(jì)算模型,如圖9所示,經(jīng)對(duì)比驗(yàn)證,材料、截面等信息保持完整。盡管當(dāng)前主流的BIM建模軟件還不支持IFC4x1格式的導(dǎo)出,但可以利用支持IFC4x1讀寫的工具如本文采用的xBIM輸出IFC數(shù)據(jù)以供進(jìn)一步測(cè)試。
圖9 模型轉(zhuǎn)換實(shí)例
對(duì)于類似的結(jié)構(gòu),在傳統(tǒng)的方法中需要依靠工程人員從圖紙或模型中識(shí)別出建立計(jì)算模型需要的信息,然后手動(dòng)在MIDAS軟件中通過(guò)“自底向下”的方式依次輸入建立節(jié)點(diǎn)、單元等所需要的數(shù)據(jù),這一過(guò)程將耗費(fèi)較長(zhǎng)時(shí)間,并且當(dāng)設(shè)計(jì)變更導(dǎo)致主梁的線形發(fā)生變化時(shí),往往需要重新建模,由此帶來(lái)了大量的重復(fù)工作;而采用本文提出的方法將由程序自動(dòng)完成信息的提取和映射工作,盡管開發(fā)模型轉(zhuǎn)換程序會(huì)耗費(fèi)掉一些時(shí)間,但程序可被重復(fù)調(diào)用以解決同一類問(wèn)題,因此對(duì)比傳統(tǒng)方法,本文提出的基于IFC文件進(jìn)行模型轉(zhuǎn)換的方法具有明顯的優(yōu)勢(shì)。
隨著標(biāo)準(zhǔn)的不斷擴(kuò)展和完善,IFC數(shù)據(jù)模型將逐漸成為適用于整個(gè)土木建筑工程領(lǐng)域的通用數(shù)據(jù)存儲(chǔ)與交換模型,但要打破建設(shè)工程項(xiàng)目的信息孤島還需要各領(lǐng)域研究者進(jìn)行更加深入的研究。本文提出的數(shù)據(jù)映射方法可在一定程度上減少橋梁設(shè)計(jì)人員重復(fù)建模的工作,但仍留有以下問(wèn)題需要在今后的研究中解決:
1)IFC模型可以簡(jiǎn)化為不同的計(jì)算模型,如計(jì)算整體受力時(shí)可以采用梁?jiǎn)卧?,而進(jìn)行局部板件受力驗(yàn)算時(shí)則需要簡(jiǎn)化為板單元或?qū)嶓w單元模型,數(shù)據(jù)映射模型應(yīng)根據(jù)實(shí)際需求的不同進(jìn)一步完善。
2)不同階段的IFC模型細(xì)度不同,其中一些可能未對(duì)構(gòu)件之間的連接關(guān)系進(jìn)行描述,或者描述信息不完整,模型映射時(shí)如何處理這些連接還需要進(jìn)一步研究。
3)本文的研究是在IFC4x1 final的基礎(chǔ)上進(jìn)行的,根據(jù)后續(xù)IFC版本的更新,橋梁信息模型的描述方法和數(shù)據(jù)映射方法都需要進(jìn)行補(bǔ)充和調(diào)整。