趙凱華,張璐琦,余 軍,劉增強
(1.黃河勘測規劃設計有限公司,河南 鄭州 450003;2.黃河流域水資源保護局,河南 鄭州 450004)
BIM(Building Information Modeling)是“建筑信息模型”簡稱,最初起源于20世紀70年代的美國[1]。美國國家BIM標準對BIM的定義為“BIM是建設項目的兼具物理特性和功能特性的數字化模型,且從建設項目的最初概念設計開始的整個生命周期里做出任何決策的可靠共享信息資源”[2]。通過BIM技術建立數字化的BIM參數模型,涵蓋與項目相關的大量信息服務于建設項目的設計、建造安裝、運營等整個生命周期,為提高生產效率、保證生產質量、節約成本、縮短工期等發揮出巨大的優勢作用。[3]BIM技術已成為建設領域信息技術的研究和應用熱點,其應用價值已得到政府的高度關注和行業的普遍認可,在建筑領域已獲得了應用,驗證了其可行性和實用性[4]。
實現BIM的前提是在建設項目生命周期的各個階段不同項目參與方通過BIM建模過程中插入、提取、更新及修改信息以支持和反映出各參與方的職責。信息是BIM模型構建的必要條件,其貫穿于BIM應用整個周期,是BIM技術的核心。
CATIA是法國Dassault Systemes 公司開發的CAD/CAM/CAE/PDM一體化軟件,被廣泛應用于汽車、輪船、摩托車、航空航天等領域,尤其是航空航天領域[5]。由于其卓越的曲面建模能力,可滿足異形體建模需要;水利水電工程中存在拱壩、水輪機、蝸殼、尾水管等異形結構,CATIA可以完全滿足其需要,并已取得了設計成果[6],在水利水電工程三維設計中發揮了重要作用,行業也占據了相當一部分市場,相當一部分水利水電設計院采用CATIA作為其三維設計平臺。但是與BIM技術結合,必須對CATIA模型的信息進行完善,實現信息化、智能化模型。
通常所說的CATIA二次開發方式,是指進程外開發方式[7],包括基于Visual Basic的Automation技術和基于C++的CAA技術。
Automation技術是一種在解釋環境下執行,在COM基礎上實現的技術,其主要思想是用一個程序去控制另一個程序,它并不能直接地獲取和處理數據,只能間接地通過開放的對象、方法、屬性來獲取、設置和處理數據[8],可以通過調用封裝好的CATIA API接口(如Application、Documents、Cameras、Windows)與CATIA進行交互,以實現對CATIA中對象的增加、刪除、獲取子項方法和數量屬性等。其局限性很明顯,只能有限調用CATIA API封裝好的對象,對于涉及到用戶定義特征,以及對已有對象行為進行擴展等需深度定制開發的內容時,則顯得無能為力。
CAA是組件應用框架(Component Application Architecture)的縮寫,是達索公司產品擴展和客戶進行定制開發的平臺,利用CAA可以進行從簡單到復雜的二次開發工作,而且和原系統的結合非常緊密,如果沒有特別的說明,無法把客戶所研發的功能從原系統中區分出來,這非常有利于用戶的使用和集成。CAA開發人員,一方面需要具備CATIA V5知識,另一方面需要具備用C++開發能力。開發入門困難[7],可供學習借鑒的資料很少,因此成功的案例很少。國外,法國和日本對CAA研究較早也較深入;在國內,北京航空航天大學、西北工業大學、第一飛機設計院都關注CAA的研究應用[9]。水利水電工程方面,長江勘測規劃設計研究院、中國電建集團成都勘測設計研究院有限公司、中國電建集團西北勘測設計研究院有限公司等單位都對CATIA二次開發進行了研究并取得了一些初步成果,但公開發表的成果很少。
按照水利水電工程設計的信息要求,對CATIA特級級和零件級分別進行開發,使模型能夠承載不同層級的水利水電工程信息。通過csv文件格式,使CATIA信息能夠和后臺數據庫系統進行數據交互,可將模型信息保存到數據庫中,為BIM技術應用提供可靠信息源,技術原理如圖1所示。

圖1 技術原理
在Visual Studio 2008的集成開發環境中,采用CAA技術進行開發。
從特征級屬性開發、零件級屬性開發、信息導出3方面分別進行介紹。
2.2.1 特征級屬性開發
(1)定義屬性工菜單欄。菜單欄用于在CATIA零件設計環境中提供命令按鈕,添加特征級屬性命令按鈕。
(2)界面定制。在集成環境中可通過可視化的操作,完成界面設計布局,用到的元素包括Frame、PushButton、SelectorList、Editor、ParameterEditor等。
(3)定義信息的類別Catalog及StartUp。通過定義Catalog及StartUp,表達信息屬性在CATIA中構造方式。
(4)默認屬性設置。為特征設置若干種常用的屬性,減少用戶設置工作量。
(5)事件綁定。通過完成如下事件綁定界面與CATIA之間信息傳遞,界面中需要綁定的主要事件包括:窗口關閉事件、元素選擇與替換、特征級屬性設置、新屬性添加、屬性名稱修改、確定按鈕完成操作。
(6)將屬性信息與特征綁定。提取用戶設置的信息,利用信息對特征進行擴展。
(7)即實現編輯功能(行為實現)。當需對已設置的特征級屬性信息進行更改時,在結構樹上雙擊,即可彈出特征級屬性編輯對話框,完成修改。
(8)其他操作。對結構樹中信息進行過濾,防止無關子元素顯示等。
2.2.2 零件級屬性開發
(1)擴展屬性工具菜單欄。對屬性工具菜單欄進行擴展,添加零件級屬性命令按鈕。
(2)界面定制。零件級屬性界面包括設置零件級屬性界面和零件級所包含的特征級信息匯總界面,用到元素類型與特征級屬性的相同,通過可視化的操作完成界面定制。
(3)定義信息的類別Catalog及StartUp。零件級屬性構造方式與特征級屬性相同,可采用與特征級屬性相同的Catalog及StartUp。
(4)默認屬性設置。為零件級設置若干種常用的屬性,減少用戶設置工作量。
(5)事件綁定。通過完成如下事件綁定界面與CATIA之間信息傳遞,界面中需要綁定的主要事件包括:窗口關閉事件、元素選擇與替換、零件級屬性設置、新屬性添加、屬性名稱修改、確定按鈕完成操作、信息類型選擇事件、多字段查詢設置、關鍵字獲取、查詢命令響應。
(6)將屬性信息與零件綁定。提取用戶設置的信息,利用信息對零件進行擴展。
(7)實現編輯功能(行為實現)。當需對已設置的零件級屬性信息進行更改時,結構樹上雙擊,即可零件級屬性編輯對話框,完成修改。
(8)其他操作。對結構樹中信息進行過濾,防止無關子元素顯示等。
2.2.3 屬性信息導出
(1)擴展屬性工具菜單欄。對屬性工具菜單欄進行擴展,添加屬性信息導出命令按鈕。
(2)界面定制。通過可視化的操作完成界面定制。
(3)事件綁定。通過完成如下事件綁定界面與CATIA之間信息傳遞,界面中需要綁定的主要事件包括:窗口關閉事件、元素選擇、列表的右鍵事件“清空選擇”和“清除選擇”,提供刪除已選擇的屬性功能、更改目錄事件,設定導出目錄、導出為csv事件,完成導出操作。
(4)導出操作。采用文本輸出流,將信息寫入csv文件。
2.3.1 關鍵問題一:屬性工具欄定義
屬性工具欄是命令入口,是通過程序與CATIA進行通信的第一道門。CAA遵循C++編程風格,首先,需要繼承基礎類CATBaseUnknown,然后,需要在函數CreateCommand中定義命令,最后在CreateToolbars中將定義的命令添加到工具欄。頭文件及源文件部分關鍵代碼如下。
(1)頭文件部分關鍵代碼如圖2所示。

圖2 頭文件部分關鍵代碼
(2)源文件部分關鍵代碼如圖3所示。

圖3 源文件部分關鍵代碼
2.3.2 關鍵問題二:信息特征定義
特征是CATIA模型重要組成部分,首先,通過調用CreateCatalog函數生成Catalog,然后調用Catalog的CreateSUInCatalog方法生成StartUp,最后調用StartUp的AddAttribute方法為StartUp添加屬性,添加特征及信息兩個屬性。關鍵代碼如圖4所示。

圖4 信息特征定義代碼
2.3.3 關鍵問題三:屬性與特征/零件進行綁定
用戶輸入的信息與CATIA模型進行關聯,需要通過對“關鍵問題二”中StartUp賦值實現:①通過AccessCatalog方法獲取到對應Catalog;②調用該Catalog的RetrieveSU方法獲取到StartUp;③調用StartUp的Instanciate方法進行初始化,獲取到實例;④對③中初始化的實例,設置特征及信息,實現將信息與特征綁定。關鍵部分代碼如圖5所示。

圖5 屬性與特征/零件進行綁定代碼
某水利水電工程采用CATIA為基礎設計平臺,需要采用BIM技術完成工程5D施工模擬,根據項目需求,采用本文介紹的技術原理采用CAA技術進行二次開發,完成了特征級屬性工具、零件級屬性工具及屬性信息導出功能開發。特征級屬性默認信息包括材料、密度、尺寸等,零件級屬性默認信息包括零件編號、版本、描述、設計者、校核人、審查人、完成時間等,除此設計者可根據需要自行對信息進行修改及補充。
圖6為屬性工具條,在CATIA零件設計環境下,自動加載顯示。從左到右依次為“特征級屬性”“零件級屬性”“信息導出”命令按鈕。

圖6 屬性工具條
圖7為特征級屬性工具,圖7(a)為工具命令面板,可以快速設置特征級屬性參數值;圖7(b)為特征屬性在樹結構上的顯示。

圖7 特征屬性
圖8為零件級屬性工具,圖8(a)為工具命令面板,可以快速設置零件級屬性參數值;圖8(b)為零件級屬性在樹結構上的顯示。

圖8 零件屬性
圖9為零件級所包含特征級的屬性匯總,可實現對特征級的屬性進行分類、匯總,支持對多個關鍵字進行并集/交集查詢。

圖9 特征屬性匯總
圖10為屬性信息導出的界面,圖11是導出后的csv文件。

圖10 屬性信息導出

圖11 屬性信息導出csv文件
csv文件可實現將數據方便地導入到數據庫中。通過數據庫,可實現數據共享及訪問方式的多元化,增強了數據的一致性和可維護性;并保證了數據的相對獨立性,實現對數據的集中控制,確保其安全性和可靠性。通過利用數據庫管理系統提供的一套方法,可及時發現故障并進行修復,防止數據被破壞,能夠盡快恢復數據庫系統運行時出現的物理上或邏輯上的錯誤。利用sql語句的強大功能實現對信息的檢索,以滿足不同維度的應用需求。
最終通過數據庫讀取特征信息及零件信息,并運用到5D施工模擬中,將時間、成本因素考慮到施工模擬,對該BIM研發項目的順利研發推進起到了重要作用。
CATIA CAA具備強大的二次開發能力,通過對其進行研究,尤其是用戶定義特征技術的深入研究,達到了用戶信息屬性與CATIA模型的集成目的,使得CATIA模型可實現方便地插入、提取、更新及修改信息,對BIM技術在工程應用提供了有力信息支持。應用實踐表明,該技術對CATIA的特征級及零件級實現了信息封裝,可方便地進行管理,支持與數據庫進行數據交互,對BIM技術在工程領域應用推廣具有重要意義。