傅志浩,呂 彬,楊楚驊,王存慧
(中水珠江規劃勘測設計有限公司,廣東 廣州 510610)
BIM技術在水利水電工程中的應用方興未艾,近年來在三維建模、場地分析、方案比選、可視化應用、模型出圖等方面應用取得豐碩的成果,應用目標逐步轉向工程全生命周期運用。對數字化產品和服務而言,從生產到建造再到最終交付,所有環節都可基于數據分析的結果實現價值鏈整合和系統優化的目的[1]。基于BIM的工程數據信息從主要用于記錄和查看,逐漸成為流程優化、方案優化的重要依據,在產品設計、服務交付等各個方面正發揮著越來越重要的作用。
當前在房屋建筑[2]、道路工程建設方面[3],基于BIM的工程信息分類編碼方法和編碼體系已有較多的研究與應用成果,但在水利水電工程建設方面目前仍處于起步階段[4-5],當前雖已編制發布信息分類、編碼及存儲標準,但在實際應用中數據信息仍不夠完善,無法完全滿足工程全生命周期數據的需求;標準未在設計軟件中實現,不能得到有效應用,其都不利于基于模型信息的研究與推廣應用。
本文結合行業工程信息標準,首先探討了在IFC標準體系下進行信息擴展的方式;再梳理采用C#語言在Microstation平臺基礎上實現IFC標準擴展的具體方法,并通過編程實現;最后在實際工程中應用,完成了三維信息模型成果的交付。經實際應用驗證,基于Microstation平臺的IFC信息擴展實現方法簡便可行、移植性強,可為后續開展數據交付標準、工程模型信息擴展、工程數據分析等研究工作打下良好的基礎。
在工程BIM技術應用過程中,工程數據信息是基礎和核心。這些信息分為幾何信息和非幾何信息2種,幾何信息可通過三維模型直接獲取;非幾何信息如結構材料、施工方法、施工工藝、設備材質等,用幾何信息無法直接表達,需要工程參建各方掛接到BIM模型中,以便共享與應用,一個項目中運用的非幾何信息的多少,往往決定了這個項目BIM技術運用的深度[6]。BIM基礎數據標準通常分3類[7],用于解決三方面問題:①分類編碼標準,用于解決數據信息應如何分類的問題,即數據的編碼和組織方式;②數據模型標準,用于解決數據以何種格式存儲、以何種格式進行信息交換等問題;③信息交換標準,規定BIM模型數據交換的內容,用于解決工程的不同時期,模型應補充或產生何種數據,即模型在不同工程階段的數據需求問題。信息交換標準需各專業領域、各工程項目根據實際業務需求進行設計,當前水利水電行業及相關行業的標準尚有不足[8-10],隨著BIM技術工程全生命周期運用的深入發展,此方面正逐步完善,本文不做過多的探討。
BIM技術發展、應用及普及的過程,是漫長的工程信息化建設過程,隨著BIM應用的深入,BIM標準體系建設不斷完善和發展。作為底層的3類基礎數據標準的國際化是不可避免的趨勢,英國于1997年發布的分類編碼標準Uniclass在使用過程中不斷修改,最新的Uniclass2015采用了ISO 12006推薦的分類系統,在分類方法上與OmniClass保持一致。中國發布的GB/T 51269—2017《建筑信息模型分類和編碼標準》參照OmniClass,僅為了適應中國的規范制定做了少量修改,T/CWHIDA 0007—2020《水利水電工程信息模型分類與編碼標準》引用GB/T 51269—2017標準針對行業進行了補充。隨著越來越多的國家參與到信息存儲標準IFC的制定,IFC的國際接受度不斷提高,目前美國、英國、挪威、德國、中國、日本、新加坡等多國均開始采用IFC標準作為信息存儲標準。
針對數據信息開展相關工作,為提升數據信息應用效率以及確保信息存儲的完整性、唯一性和一致性等問題,分類與編碼是需首要考慮的問題。工程行業常見的分類編碼主要有OmniClass和KKS編碼2種[11]。其中KKS編碼分類定義嚴格,偏向于運維需求,目前廣泛應用于電力行業,在進行信息擴展時,新起編碼定義表較難避免和電力行業的沖突,因此在使用過程中受到一定的限制。OmniClass以全數字編碼方式規定了工程全生命周期的信息分類結構,由于OmniClass標準良好的兼容性、可擴展性以及全數字編碼對程序的易操作性,目前成為國家到地方BIM領域的主要標準依據,水利水電行業的分類編碼標準T/CWHIDA 0007—2020即采用了OmniClass編碼。關于信息信息分類和編碼的基本原則與方法詳見國標GB/T 7027—2002[12],此處不再累述。
OmniClass編碼按層次和屬性的分類,實質上是從不同的應用視角去審視數據信息。一項工程或一個建筑物及附加于之上的信息可視為客觀存在,而工程參建各方因業務領域和專業應用需求,對信息獲取和需求往往帶有明顯目的性,因此需要結合應用需求對信息進行有效的分類與編碼。OmniClass提供的分類和編碼方法為數據信息提供了一個完整且易于擴展的解決方案。在實際應用中,同一份數據通常需要多個編碼信息及其組合來精確描述,以滿足唯一性和一致性的要求,后續研究與應用中采用OmniClass的分類方法對工程數據進行組織和擴展。
工業基礎類IFC(Industry Foundation Class)標準主要用于解決數據交換過程中數據存儲與交換格式的問題,IFC是目前業界接受程度最高的信息交換標準格式,大部分BIM軟件都支持IFC格式的模型信息數據。IFC是公開開放的標準,主要面向工程建設領域,其標準框架分為4個層級[13]:資源層、核心層、共享層和領域層,每層中包括若干模塊,用于描述工程建設領域不同類別的內容,如若干模塊用來描述工程建設領域不同類別的內容;對建筑物的墻、柱、板、門窗等實體則可在共享層的建筑元素模塊進行描述;對比較抽象的空間、時間、材料等概念在核心層的模塊中進行描述。通過不同層級的組合描述就可以實現對建筑物構件信息的完整表達。
IFC標準定義了眾多的類對象來實現上述4個層級的框架,并按分層級的、對象繼承的方式進行組織[14],如建筑對象元素有IfcWall(墻體)、IfcWindow(窗戶)、IfcDoor(門);如幾何對象元素有IfcExtrudedAreaSolid(面拉伸成體元素);如基礎元素IfcCartesianPoint(空間坐標點)等,實際應用中可方便地根據工程項目需求和業務應用進行擴展。IFC的類實現邏輯基于3個基類來完整地描述項目或結構:①IfcObjectDefinition用于定義對象(如樞紐、大壩、電站等);②IfcRelationship用于定義不同類型對象之間的關系(如樞紐包含大壩、廠房);③IfcPropertyDefinition用于定義與對象相關聯的屬性(如大壩類型屬性、電站類型屬性等)。IFC標準主要基類繼承結構見圖1。基于IFC面向對象的描述方式,可以方便地根據需要進行擴展,如水利水電工程的擋水建筑物即可按圖2方式擴展。

圖2 水利水電行業基于IFC擴展的示例
IFC基于面向對象描述的實現邏輯,可以很好地利用面向對象的程序語言加以實現,同時結合OmniClass的信息分類和編碼方法可以較好地滿足工程建設行業的信息應用需求,因此在工程建設領域得到了廣泛的認可與應用。為方便IFC的使用,當前各大設計軟件廠商如AutoDesk、Bentley、ArchCAD等都添加了對IFC格式的支持,同時也有一些開源的軟件項目如xBIM提供對IFC格式較為完整的處理能力。
但同時由于IFC標準體系的龐大和復雜性,僅IFC標準自身定義的實體對象、屬性集及數據類型就有上千個,各專業領域的擴展更是不計其數,讓一般用戶不禁望而卻步,在一定程度上限制了IFC標準的發展與應用,因此當前IFC標準的制訂與研究工作多在科研、管理部門及各大設計軟件廠商開展。而工程建設行業是實踐性較強的領域,特別是針對數據信息的應用更是需要結合業務需求不斷發展完善,需要工程參建各方共同參與到研究與應用工作中來,才能更好地推動工程信息技術的發展與應用。從目前技術水平和易用程度來看,基于現有的軟件平臺開展行業數據信息研究與應用工作是較為便捷和可行的方式。
Microstation是當前水利水電工程行業被廣泛使用的三維設計軟件,因其專注于土木建設領域,及其完善的工程設計解決方案而得到廣泛認可[15]。在Microstation Connect平臺上附加信息的方式主要有3種:EC(Engineering Content)、ItemType(基于EC的簡化實現,可直接通過軟件進行操作)、Xdata(以擴展數據形式附著于圖形元素,可方便地同AutoCAD進行信息交換)。其中以EC方式附加的數據信息可在Bentley系列軟件間(如建筑設計、結構設計以及機電設計)無縫銜接,且有較為完善的數據處理、分析、導入導出等功能,為基于Microstation平臺開展數據信息相關研究與應用工作提供了便利的基礎。ItemType及Xdata的實現方式實際是以硬編碼的方式將信息嵌入,雖可方便地實現信息附加和修改,但不便于數據的擴展及存儲格式的交換,后續主要以EC方式描述工程數據信息的擴展與處理。
EC是Microstation平臺用于解決行業數據交互的解決方案,基于EC框架可根據行業標準自定義文件格式;以XML文件格式存儲,方便地進行數據交換,且格式可自解析;用于行業數據的交換,不依賴于具體的軟件。EC框架的程序開發支持C#、C++等面向對象語言,其提供的主要實現類見表1,對比表1中的類名稱與圖1中IFC定義的主要基類,EC相關類對應地實現了IFC的對象、屬性及關系定義,同時由于EC在Microstation上的實現機制采用了面向對象語言的動態綁定特性[16],通過C#語言等程序語言實現相關功能時可充分利用這一特性進行數據信息的擴展。

表1 EC FrameWork提供的基礎類
基于EC可以方便地實現IFC標準及其他自定義標準文件格式,其主要實現路徑見圖3。如前所述,IFC標準和擴展標準所涉及的類定義眾多,采用類生成的方式工作量頗大,不便于維護,Microstation提供了ECClassEditor編輯工具簡化生成過程,基于編輯器可方便地進行標準引用、ECClass的定義與繼承及屬性定義等操作,導出XML文件后可用于標準的后續維護與交換;對于簡單的數據結構則可利用程序語言進行動態生成ECClass對象,加入到指定的Schema對象中,后續根據需要導出存儲為XML文件。

圖3 EC使用步驟
利用ECClassEditor生成水利水電工程擋水建筑物的擴展數據結構過程示意見圖4。首先根據工程應用需求按OmniClass的分類方法合理地組織對象邏輯,然后按面向對象的方式逐級引用或繼承實現各單元的擴展信息定義。完成后保存為xml文件,加載到三維模型文件中即可實現標準文件的應用。

圖4 利用ECClassEditor生成水利水電工程擴展數據結構過程示意
2.3.1ECSchema的導入與更新
a)ECSchema導入操作可用以下代碼實現。
//dPath為指定ecschema.xml文件路徑
IECSchemaLocater searchLocater = new Search
PathSchemaFileLocater(dPath);
ECObjects.AddSchemaLocater(searchLocater);
//根據指定的Schema名稱提取信息并生成ECSchema對象
IECSchema ecSimpleSchema = ECObjects.LocateSchema(scName,SchemaMatchType.Exact,null,null);
//添加ECSchema對象到當前文件
ecSimpleSchema.AddSchemaToDgnFile();
b)ECSchema的更新,如標準定義文件發生改變,則可利用更新操作刷新數據信息。
//獲取當前文件及其EC管理器
DgnFile activeDgnFile = Session.Instance.GetA
ctiveDgnFile();
DgnECManager manager = DgnECManager.Manager;
//設置Schema更新屬性,執行更新操作
ushort providerId = 0x56FF;
UpdateSchemaOptions uso = new UpdateSchema
Options(providerId,false,bUpdateInstance);
manager.UpdateSchema(sc,activeDgnFile,uso);
2.3.2由ECCLass創建ECInstance
a)由ECSchema獲取ECClass對象。IECSchema提供了GetClasses和GetClass 2個函數,可分別從Schema對象中提取出所有的ECClass對象和指定Class名稱的ECClass對象,在實際使用中可根據需要選用。
b)由ECClass創建ECInstance代碼如下:
//activeDgnFile當前文件,用于生成ECInstance的ECClass對象
DgnECInstanceEnabler ecInstanceEnabler=
manager.ObtainInstanceEnabler(activeDgnFile,ec);
ECDInstance ecdWipInstance = ecInstanceEnabler.
SharedWipInstance;
2.3.3為ECInStance創建或更新屬性
ECClass對象通常包含多個屬性值,如水利水電工程中大壩通用屬性包括名稱、類型、體積、高度、壩頂寬度等多個屬性參數。經編程試驗,建議采用數據庫程序中常用的DataTable類作為屬性參數的容器,可方便地與數據庫、WPF的數據展示界面進行綁定[17],使程序功能更加靈活、便捷。實現代碼如下:
//dt為屬性容器,labelIdx容器中用于標識屬性名稱的索引,valueIdx用于標識屬性值的索引
int valCount = dt.Rows.Count;
for (int i = 0;i < valCount;i++){
List
ecdWipInstance.SetAsString(val[lableIdx],val[valueIdx]);}
2.3.4附加ECInstance到元素
經前述幾個步驟生成完整的ECInstance對象,后續即可方便地將其與圖形元素對象綁定,通過如下代碼實現。
//ecInstanceEnabler、ecdWipInstance為第2步中生成的ECInstance對象和操作對象,elem為要附加信息的元素對象
ecInstanceEnabler.CreateInstanceOnElement(elem,ecdWipInstance,false);
基于Microstation平臺采用C#定制開發工程信息處理程序,以廣西某水庫通航建筑物工程應用為例,船閘主體結構三維模型見圖5。

圖5 船閘主體結構三維模型
首先根據工程應用需求按OmniClass分類方法確定工程結構的分類及組織方式,如上下游引航道、上下閘首、閘室、細部結構以及所需附加信息的屬性集等信息,按IFC面向對象方式進行組織,形成如圖2、4的對象繼承關系。為便于工作開展,亦可借鑒T/CWHIDA 0009—2020《水利水電工程信息存儲標準》關于工程數據模式的Express-G圖。
當數據對象關系明確后,即可利用ECClassEditor工作進行數據標準的定義。標準定義的工作較為繁瑣,但好處是一經定義完成,后續進行信息標準的擴展、交換及共享則十分輕松。定義完成后的標準可導出為xml文件存儲,采用任意文本編輯軟件進行查看與修改。文件名默認以“對象名.主版本號.次版本號.ecschema.xml”方式命名,通過文件名即可快速識別出該數據標準所表示的對象和版本,在后續數據信息掛接中,可用于快速判斷元素數據信息版本的有效性和一致性。
采用C#語言開發基于Microstation平臺的工程數據處理程序,實現的主要功能有加載、更新數據標準,附加信息到元素,刪除更新元素信息,校驗數據信息完整性等。程序實現界面及信息附加過程見圖6。單選或批量選擇模型元素后,指定要添加到元素的數據標準(ECSchema對象)和數據信息(ECClass對象),即可方便的創建數據實例(ECDInstance對象)自動掛接到模型元素上,實現多平臺軟件的信息查看。如后續需要對數據進行更新和刪除,可利用前述程序實現的方法進行操作。

圖6 程序界面及模型數據信息查看
數據標準的定義以xml文本文件形式保存,在軟件平臺上實現則是以類對象的形式呈現。通過標準文件的文件名可快速檢查附加于元素的信息采用的是哪個版本;另外也通過對比數據標準定義與附加信息的類對象結構,實現元素附加信息的完整性與合規性檢查,確保數據信息的可靠。
當已定義好的標準需要進行信息擴展時,可直接通過編輯標準定義文件的方式進行,然后采用前述ECSchema的更新操作即可實現。
當同一個項目需要采用不同行業的數據標準時,典型如本案例工程的船閘既可采用水利口,又可采用交通口的數據標準,兩個管理部門的數據標準顯而易見的不一致,但只要通過前述方式做好標準定義的工作,則可非常方便地實現數據標準的轉換,實現滿足要求的數據信息交付。
完成信息附加工作后,可利用Microstation軟件自帶的信息查看功能針對元素數據信息進行篩選、提取及分類匯總等工作,在實際工程中的比較典型應用有:按工程部位自動分類匯總統計工程量、按材料分類篩選模型元素、按施工順序顯示相關結構元素、按設備提取所有供貨商信息等。對數據信息的處理,當軟件平臺的功能無法滿足需求時,則可通過將信息導出到Excel文件或數據庫文件(如Access、Sqlite等)中做進一步的應用,同時也為數字交付和數據交換提供了更多的選擇。通過對附加于元素之上的非幾何信息的操作,極大地擴展了BIM幾何模型的應用范圍與應用深度;通過結合業務應用需求,真正實現了數據對傳統設計過程的數字化賦能,體現出BIM模型作為工程數據信息載體的核心價值。
通過項目的實施,完整地驗證了工程信息處理程序功能的實現,實現了IFC擴展標準在Microstation平臺的應用;工作過程中形成了完整的、符合行業要求的IFC標準schema.xml文件,為后續基于模型的信息擴展,工程數據分析奠定了良好的應用基礎。
a)工程數據信息既是BIM技術賴以存在的基礎和核心,也是數字經濟時代的關鍵生產要素。工程數據的分類編碼、存儲與交換的重要性日益凸顯,開展相關技術研究對BIM技術在工程全生命周期的運用具有重要意義。
b)現階段各行業領域根據自身需求基于IFC標準進行擴展,但在水利水電工程中如何實現并加以應用方面的研究成果甚少。探討研究IFC標準擴展在Microstation平臺的實現方法,經工程應用驗證難度適中,可拓展性、移植性強,可為同類工程應用提供參考,同時亦可為后續深入開展相關標準研究打下了良好的基礎。
c)除對信息分類編碼、信息存儲和交換格式的研究外,針對信息交換標準即約定什么人,在什么生產階段,生產和使用什么信息,對數據的深度挖掘與應用等問題,是后續推進BIM技術應用深度需著重研究的問題。限于篇幅此方面未做過多的探討,還有待結合業務需求做進一步深入研究。