滿延磊 張其林 常治國
(1. 同濟大學土木工程學院,上海 200092;2. 上海同磊土木工程技術有限公司,上海 200433)
BIM由于其優良的特性,自誕生之日起就受到了極大的關注。特別是隨著計算機的發展,近幾年 BIM應用更是取得了長足的進步[1-2]。在電力行業,由于變電構架的標準化程度更高,BIM應用也更加深入[3]。
在變電構架中,一個完整的BIM模型包含結構、建筑、給排水、暖通等多個專業的內容。由于專業跨度大,目前在電力行業,通常采用的BIM工作流程是不同專業在不同平臺設計,然后在Revit中進行整體裝配[4]。
本文與山西電力勘測設計院合作,深入研究了結構模型向Revit平臺的數據轉換。山西電力勘測設計院采用3D3S軟件進行結構設計[5],需要將結構模型中的三維實體信息、塔段屬性、塔段包含的桿件等信息導入到Revit中。
經實際調研發現,通過IFC導入Revit是較常用的方式,但是目前在大多數研究中導入到Revit的信息僅限三維實體且導入方式單一[6-8]。
基于此,本文深入研究了 IFC的數據轉換,比較了不同的導入方式的優缺點,實現了三維實體信息、塔段屬性、塔段包含的桿件等信息向Revit的轉換,實現了變電構架的多專業協同。
在IFC中,三維實體的形狀由IfcRepresentationItem進行表示,IfcRepre-sentationItem是多種形狀的父類[9]。對于三維幾何實體,常用的表示方式有兩種:一種方式是拉伸等方式形成的實體,用IfcExtrudedAreaSolid來表示;另外一種方式是通過三角面片進行擬合,用IfcFacetedBrep表示。IfcExtrudedAreaSolid與Ifc Faceted Brep均為IfcRepresentationItem的子類。
圖1所示為兩種表示方式在Revit中的顯示效果,圖1(a)為拉伸實體表示,圖1(b)為三角面片表示,從圖中可以看出,在Revit中兩種方式顯示上基本無差別,曲面顯示時由于三角面片對曲面進行了擬合,顯示精度略低。
經實際使用比較,此兩種有各自的優點和缺點,對比如表1所示。
拉伸實體的優點是數據量小,生成的IFC文件大小一般在10M以下,模型打開速度快,Revit打開時一般在10秒以內,同時模型在Revit中能夠進行編輯;拉伸實體的缺點為不同的實體的截面不一致,拉伸方式不一致,編程工作量大,同時對于已經切割過的桿件,無法用拉伸實體表示。
三角面片表示法的優點為任意實體都能表示,表示方式統一,編程工作量小;缺點是數據量大,生成的IFC文件經常在1G以上,模型打開慢,Revit打開時一般在3分鐘以上。
秀麗的女士說:“當然可以。我們這里經常住進艾滋病人,當他們還沒有喪失最后的活動能力的時候,他們很愿意坐在這張椅子上看看風景。”

表1 拉伸實體與三角面片擬合對比
因此本文采用折中的方法,對于非切割實體采用拉伸實體表示,對于切割實體用三角面片表示。具體流程如圖2所示。

圖2 三維實體轉換流程
在變電構架中,桿件以塔段為單位形成組,以組為單位定義屬性。在轉成IFC文件時,組的信息需要保留。在 IFC中,組有如下常用的三種表達方式:IfcGroup, IfcElementAssembly, IfcMappedItem,本文對此三種方式進行了研究與比較。
(1)IfcGroup
IfcGroup表示集合。IfcGroup從IfcObject派生,而并非從IfcProuct派生,因此IfcGroup是一個抽象的對象,用來表示邏輯上的集合關系。本文用Revit對轉換效果進行了測試,發現Revit在導入IFC時并不能識別IfcGroup的信息,因此導入到 Revit中時組別信息丟失。在Revit中的顯示如圖3(a)所示,三根桿件同屬于一個IfcGroup,但是在Revit中并沒有顯示出來:

圖3 三種類在Revit中的表現
(2)IfcElementAssembly
IfcElementAssembly表示部件,一個部件可能由多個小零件組成,因此IfcElementAssembly也表示集合關系。與 IfcGroup不同的是,IfcElementAssembly從IfcProduct派生,因此IfcElementAssembly是一個實體。用Revit對用IfcElementAssem-bly導出的IFC文件進行測試,測試結果表明Revit支持IfcElementAssembly的導入,同一個組的實體在 Revit中是一個整體,但是Revit對IfcElementAssembly的支持存在缺陷,主要表現在以下兩個方面:a)Revit表現不穩定,組別信息并不能每次都能識別出來,多數情況下同一個組的實體在Revit中仍然不是一個整體,同時有概率性的組別信息識別不全,如圖 3(b)所示,三根桿件屬于同一個IfcElementAssembly,但是在Revit中只顯示兩個桿件屬于同一組,這意味著組別信息出錯;b)無法正確識別屬性。給IfcElementAssembly賦予的屬性在Revit中無法識別,Revit中顯示的IfcElement-Assembly的屬性為其某個子實體的屬性。

圖4 塔段的轉換流程
(3)IfcMappedItem
IfcMappedItem表示圖塊,圖塊中可以包含若干子實體,因此IfcMappedItem也可以表示集合關系。經過實際測試,Revit支持IfcMappedItem的表示法,在Revit中同一組的實體均作為一個整體出現,且能正確的轉換屬性,Revit中的表現如圖3(c)所示。
經過上述的比較分析,本系統最終選擇了IfcMappedItem的方式。整個流程如圖4所示,一個塔段對應一個 IfcBuildingElementProxy,提取塔段中的所有桿件,塔段中的所有桿件通過IfcMappedItem生成一個 IfcProductDefi-nitionShape,將 IfcProduct Definition Shape賦值給IfcBuilding Element Proxy,這樣完成將所有的桿件形狀作為一個圖塊顯示,最后根據塔段的類型給IfcBuildingElementProxy附加不同的屬性:
需要注意的是,使用IfcMappedItem時,組內的實體是單純的幾何實體,而不具有物理意義,因此組內的幾何實體無法附加自定義屬性。但是對于變電構架來說,屬性均是以組為單位定義的,因此通過IfcMappedItem轉換可以接受。
經實際測試,通過IfcMappedItem表示的實體在導入到Revit之后為一個族,族的形狀由多個幾何實體形成的幾何圖塊來表示,此時在 Revit中無法捕捉,而Revit并沒有將坐標系開放給用戶,因此導入到 Revit中的結構模型無法與其他專業的模型進行精確的組裝。
本文對此進行了特別的處理。當導出到IFC時,將坐標原點也導出到IFC中。IFC中沒有表示“點”的實體,本文采用球來表示坐標原點,同時 IFC中的單純的幾何實體沒法加入到模型中,必須定義一個有實際意義的單元,然后將幾何實體作為形狀屬性附加到單元上。本文定義了IfcCivilElement表示此具有實際意義的單元,通過 IfcSphere定義幾何形狀,然后將IfcSphere作為屬性附加到IfcCivilElement中,生成的用來定位的坐標球如圖5左下角所示。

圖5 用于組裝定位的球體(左下角)
在進行模型組裝時,在Revit中打開中心捕捉可以捕捉到球心,通過坐標原點反算出需要移動的距離,從而將模型進行精確組裝。
本研究與山西電力勘測設計院合作進行。圖6是3D3S中設計的750kV格構式變電構架,圖中左邊對話框中是塔段信息。

圖6 結構模型在3D3S中的顯示
圖7是通過IFC導入到Revit中后與其他專業的模型組合,在Revit中塔段為一個整體,且以組為單位轉換了屬性。

圖7 結構、建筑、給排水、暖通總圖

圖8 塔段在Revit中的屬性顯示
IFC的目的是提供一種通用的文件格式供各行各業共享數據。但是經過實際調研發現市面上軟件對IFC標準支持力度仍有待提高[10;11],主要表現在以下兩方面:
(1)軟件支持的IFC實體不全面。比如前文中提到的IfcGroup以及IfcElementAssembly,Revit支持這兩種實體的導出,但是不支持導入。
(2) IFC標準包含的內容非常廣泛,常常在細節部分存在多義性,不同的軟件對IFC標準的理解不同也可能導致數據共享失敗。比如在IFC官方文檔中,IfcShapeRepresentation的屬性 Represen-tationIdentifier以及RepresentationType標識為可選屬性(OPTIONAL),但是在實際測試中發現,此兩個屬性不賦值會導致Revit無法讀取實體形狀。另外在 IFC官方文檔中,IfcParameterizedProfileDef中的 Position屬性可以不設置,不設置表示不對截面進行平移或者旋轉操作,但是在導入 Revit時 Position不設置的話會導入失敗。DDS-CAD是一款支持打開IFC文件的小軟件,此款軟件無上述問題。
由于以上兩個原因,單純的通過 IFC來交換數據很可能達不到實際的要求。在本系統中,通過IfcMappedItem的導入方式可以滿足工程的實際需求。若有其他需求,比如要求塔段是一個整體,同時塔段內部的桿件也需要附加屬性,由于Revit的導入支持的力度不夠,目前單純通過IFC文件交換數據還很難實現。這時就需要在Revit中開發插件,對其IFC導入功能進行擴充。
本文針對當前主流的變電構架BIM工作流程,對變電構架結構模型通過IFC文件向Revit轉換做了深入的研究,主要研究內容如下:
(1)分析對比了在IFC中用拉伸實體以及三角面片表示三維實體的優缺點,最終確定了在變電構架中采用二者結合的方式;
(2)嘗試了IFC中三種組的表達方式,最終確認Revit不支持 IfcGroup以及 IfcElementAssembly的導入,但是Revit支持IfcMappedItem的表達方式,雖然IfcMappedItem能夠存儲的信息比前二者少,但是基本能夠滿足本項目的需求;
(3)針對導入的IfcMappedItem無法在Revit捕捉而導致無法與其他專業的模型進行精確裝配的問題,本文設計了增加坐標原點進行輔助定位的方式,實現了多專業模型的精確裝配;
(4)指出了目前通過IFC進行數據交換時存在的缺陷,通過IFC進行無損的數據交換仍需要進行第三方輔助開發。