?

CATIA與Revit模型數據轉換研究

2023-09-21 01:02劉立峰
西北水電 2023年4期
關鍵詞:二次開發輕量化材質

蒲 晏,黃 平,劉 源,劉立峰

(1. 中國電建集團西北勘測設計研究院有限公司,西安 710065;2. 西安市清潔能源數字化技術重點實驗室,西安 710065)

0 前 言

隨著“數字中國”戰略不斷推進,工程數字化和信息化快速發展,BIM技術,數字孿生,AR/VR,3D打印等技術愈發成熟[1]。三維模型作為這些技術的載體也變得非常重要,產生這些三維模型的三維設計環節成為工程中非常重要的一環,在整個工程數字化和信息化中起到至關重要的作用[2],數字化設計已經成為設計發展的新方向[3]。

當前在三維設計領域,達索公司的CATIA[4]、3DExperience,AutoDesk公司的Revit[5]、Civil3D[6]和美國Bentley公司的MicroStation[7]、Prostructures等各有所長,在水電設計行業因為專業眾多,在實際生產過程中為了充分發揮各設計軟件的優勢[8-9],經常采用CATIA與Revit混合設計的模式。三維協同設計時經常需要使用其它專業模型做為建模參考[10],因此需要轉換模型數據進入對應的平臺,但是CATIA與Revit中并不具有該功能。目前已有劉立峰等提出通過Inventor和CAD來做CATIA與Revit數據轉換[11],但是該方案需要安裝Inventor和CAD軟件并且轉換操作繁瑣復雜,整個轉換過程顯得非常臃腫,使用起來比較麻煩。

近年來隨著BIM技術在工程行業中的不斷應用[12],模型輕量化技術愈發成熟,輕量化模型在剖切[13]、碰撞檢查等應用上已有非常成熟的方案,CATIA和Revit提供了豐富的二次開發接口供用戶來獲取數據和創建模型。因此本文提出一種基于CATIA和Revit二次開發,通過SDK接口讀取模型數據后,對數據進行輕量化處理并保存為自定義格式的輕量化文件,在對應的平臺中導入并解析文件后,通過二次開發接口創建模型和屬性實現模型重構的方法,實現CATIA與Revit平臺間的數據轉換。

1 技術路線

本文提出一種基于BIM輕量化模型的CATIA與Revit數據轉換方法。該方法將CATIA二次開發技術、Revit二次開發技術和模型輕量化技術相融合通過二次開發調用設計軟件接口API解析模型幾何信息和非幾何信息,對提取的數據信息進行數據解析并重構后保存為自定義格式的輕量化文件,再在對應平臺中通過二次開發的方式解析輕量化模型,獲得模型幾何和非幾何數據,調用創建模型和屬性的API對模型進行重構,最終實現兩個平臺間模型數據相互轉換引用。具體數據轉換技術路線如圖 1 所示。

圖1 數據轉換技術路線

1.1 CATIA二次開發技術

達索系統為CATIA提供了豐富的二次開發方式,因其開發方式基于COM的特性,所以幾乎所有編程語言都可以用以進行CATIA二次開發。比較常見的是使用宏和使用組件應用架構CAA(Component Application Architecture)進行CATIA二次開發,本次技術研究選用基于組件應用架構CAA-C++ Extended Development的開發方式[14]。

CAA-C++ Extended Development二次開發技術是基于CAA-RADE集成環境,在Visual Studio中集成并提供一個CAA框架的C++程序編譯器。通過調用API函數調用CATIA的核心程序,創建與CATIA風格一致的界面,實現客戶程序和原系統的緊密集成。

1.2 Revit二次開發技術

Revit二次開發是通過.Net語言對Revit功能實現擴展。所有支持.Net的語言(C#,VB.Net、托管C++等)都可用于進行Revit二次開發。Revit二次開發通過安裝Revit SDK搭建Revit二次開發環境,環境搭建完成后,即可在Revit對應版本的Visual Studio中進行程序編寫,通過引入動態鏈接庫實現對RevitAPI的調用。開發完成后生成插件dll文件,配置.addin文件實現對插件的自動加載。本次研究選用的是Revit2019、Visual Studio 2017使用C#語言進行Revit二次開發。

1.3 模型輕量化技術

模型輕量化在BIM屆是共知的概念,但是至今沒有一個明確的定義。本文探索的輕量化技術是針對CATIA和Revit模型,廢除設計模型數據中龐大的設計過程內容數據,使用抽殼技術僅保留模型幾何結果和所需要的參數及屬性信息,最終實現減小模型體量的效果[15]。本次研究中模型幾何結果采用三維三角網格進行保存,每個模型都是由三角網格構成,三角網的疏密程度根據模型精度控制。三角網格數據包括頂點數據、頂點索引數據、頂點UV坐標數據和頂點Normal數據構成。

2 程序設計及實現方法

2.1 輕量化文件定義

此次研究中輕量化文件定義為本地數據庫文件,包括模型結構數據、模型幾何參考數據、 模型幾何實例數據、模型材質數據、模型屬性數據5個數據表采用二進制方式存儲模型對應數據內容,其中表與表之間通過ID建立關聯關系實現數據關聯。

輕量化模型數據結構如圖2所示。由圖2可知,模型結構數據記錄模型的組織結構,并記錄每個模型節點包含的幾何信息和屬性信息的關聯關系。模型幾何參考數據記錄模型幾何經過離散后的三角面片(Triangle)數據。模型幾何實例數據記錄每個實例的幾何關聯與坐標偏移矩陣(Matrix)。模型材質數據記錄模型的顏色(Color)、材質(Material)、可見性(Visibility)等數據。模型屬性數據記錄模型的參數等屬性數據(Parameter、Properties),如CATIA中的設計參數、設計屬性,Revit中的參數等,此次技術研究中定義輕量化格式為“B3D”文件格式。

圖2 輕量化模型數據結構

2.2 CATIA數據轉為Revit數據

通過CATIA-CAA二次開發方式對CATIA當前激活文檔中模型幾何、結構、屬性信息進行提取,經過數據處理后保存為輕量化文件,通過Revit二次開發對輕量化文件數據進行解析,解析完成后調用RevitAPI在Revit中依據數據重構模型。

2.2.1CATIA模型數據輕量化

(1) 模型結構數據提取通過文檔容器CATFrmEditor接口類獲得當前文檔,使用CATIDescendants接口類遍歷CATIA中結構樹獲得模型結構數據存入結構數據表中。

(2) 當遍歷到最下層Body節點時,使用GetBody()方法取的模型拓撲信息后,使用CATICGMCellTessellator接口類對拓撲幾何信息進行離散計算獲得離散三角面片數據,對三角面片數據進行組織后存入幾何引用表。

CATICGMCellTessellator是達索為二次開發用戶提供的一個模型離散接口類,類中具體方法函數如圖3所示。通過SetOutputMode()和SetStep()方法設置離散參數,通過AddFace()方法添加需要離散的面對象,通過Run()方法進行數據離散操作;通過GetFace()方法獲得離散后的三角面片數據。

圖3 CAA離散幾何數據接口

(3) 模型偏移矩陣提取使用CATIMovable接口類獲得裝配和零件節點偏移坐標保存至模型幾何實例表。

(4) 模型屬性提取使用CATIParmPublisher和CATIAttributesDescription接口類獲得模型上添加的參數信息以及裝配節點和零件節點的屬性信息保存至模型屬性表。

(5) 模型顏色提取使用CATIVisProperties接口類獲得模型的顏色和透明度信息;顏色和透明度信息可以通過裝配、零件、body節點向下繼承;保存這些信息至模型材質數據表中。

獲得所有數據后,對模型數據進行優化重組并更新數據表,保存為自定義的“b3d”格式。

2.2.2Revit導入輕量化模型

在Revit中加載輕量化模型文件后,解析輕量化模型數據為結構化數據,在Revit中根據屬性表數據在Revit中創建共享參數。根據材質數據在Revit中創建材質。根據模型幾何引用數據和坐標偏移矩陣在Revit中創建幾何形狀,最終通過幾何形狀與參數和材質關聯實現在Revit中重構模型。

(1) 通過ExternalDefinitionCreationOptions創建共享參數后,使用InstanceBinding將共享參數與Revit常規模型綁定。

(2) 通過Material接口類傳入材質表中顏色、透明度等參數信息后創建Revit材質。

(3) 使用TessellatedShapeBuilder接口類傳入離散幾何三角面片數據,生成幾何形狀,通過DirectShape接口類創建常規模型對象,通過唱過常規模型與共享參數的關聯關系為創建的模型對象設置屬性值信息和材質信息。

2.3 Revit數據轉為CATIA數據

通過Revit二次開發調用RevitAPI對當前窗口模型三維視圖中的模型幾何、結構、屬性信息進行提取,經過數據處理后保存為輕量化文件,利用CAA二次開發對輕量化文件數據進行解析,解析完成后調用API在CATIA中依據數據重構模型。

2.3.1Revit模型數據輕量化

(1) Revit模型導出

IExportContext接口類是Revit SDK為二次開發用戶提供的一個模型信息提取的接口類,具體類方法如圖4所示。通過繼承該類后重寫類中方法實現自定義導出,通過OnElementBegin()實現對模型構件的遍歷,可以讀取構件名稱、分類等信息,通過OnInstanceBegin()實現對Revit族庫實例進行遍歷,通過OnMaterial()實現對構件材質顏色的讀取, 通過OnPolymesh()方法模型離散數據的讀取。

圖4 Revit導出模型接口類

(2) Revit模型屬性導出

通過Element中Parameter方法實現對模型構件參數讀取。

2.3.2CATIA中導入Revit模型

在CATIA中加載輕量化模型后,解析讀取輕量化模型數據為結構化數據;使用CATIMechanicalRootFactory工廠類在CATIA中創建結構樹節點;使用CATICkeParmFactory工廠類為相應節點創建參數并設置相關參數值;使用CATGeoFactory類根據輕量化模型中三角面片信息創建Mesh模型;然后使用開發的Mesh轉曲面的工具把Mesh轉為對應曲面;使用CATIVisProperties接口設置顏色后完成Revit模型數據導入CATIA。

3 測試與分析

本文設計的基于輕量化模型的CATIA與Revit數據轉換方法可以解決以往需要安裝Inventor和CAD來進行CATIA與Revit數據轉換的過程繁瑣的問題。通過CATIA和Revit二次開發,實現輕量化模型文件的導入與導出功能,依托輕量化模型文件實現數據轉換操作。結合實際測試情況對該方法進行介紹和分析。

3.1 測試準備

為保證項目設計整體位置正確,在創建項目時需要統一定義坐標系,不論在Revit還是在CATIA中均使用統一的坐標系進行三維設計。在建模時,可以根據相應設計軟件精度問題對模型進行一定程度的偏移,在模型輕量化轉換時在根據偏移結果進行還原設置。

3.2 CATIA模型導為Revit模型

CATIA數據轉Revit步驟如圖5所示。CATIA模型導為Revit模型具體包括如下步驟:

圖5 CATIA數據轉Revit步驟

(1) 在CATIA中打開CATIA模型,使用基于CAA二次開發技術開發的CATIA輕量化轉換工具,設置導出規則,屬性規則等相關轉換設置后,導出模型為輕量化模型文件;

(2) 在Revit中使用開發的鏈接B3D工具,選擇第1步導出的輕量化模型后,輕量化模型以鏈接的形式被導入至Revit中。

此時模型已經成功從CATIA轉換為Revit模型,但是因為是鏈接模型,所以對于協同設計時需要的捕捉等功能無法滿足。經研究,模型可以應用于捕捉等三維協同設計操作,具體操作如下:

(1) 選擇鏈接進來的模型,在Revit界面選擇“綁定鏈接”命令,點擊確定,綁定模型鏈接;

(2) 選擇綁定的模型鏈接,點擊“解組”命令,等待解組操作完成后,模型可以被應用于輔助建模。

CATIA模型轉Revit模型結果如圖6所示。由圖6可見CATIA中模型成功被轉換為Revit模型,并且顏色、屬性、幾何形狀等關鍵信息未丟失。

圖6 CATIA模型轉Revit模型結果

3.3 Revit模型導為CATIA模型

Revit 模型導為CATIA模型步驟如圖7所示。Revit模型導為CATIA模型主要包含如下步驟:

圖7 Revit 模型導為CATIA模型步驟

(1) 在Revit中打開模型,使用開發的Revit模型導出工具,在列表中選擇需要導出的三維視圖,設置坐標偏移、屬性等轉換信息后轉換Revit模型為輕量化模型;

(2) 在CATIA中使用開發的B3D導入工具,選擇上一步導出的輕量化模型后,模型被導入至CATIA中(見圖8)。

圖8 Revit模型導入CATIA結果

此時導入的模型為Mesh體模型,由三角面片構成,在出圖應用時會存在部分問題,可以經過Mesh轉為曲面進行相關處理。使用開發的Mesh轉曲面工具,選擇需要轉換為曲面的Mesh體,經程序內部運行計算后,將Mesh轉換為曲面。

3.4 測試結果分析

測試完成后,對測試結果進行了統一分析見表1。

表1 測試結果分析

(1) 數據轉換后模型坐標正確無誤差,所有模型屬性和參數等均成功在對應的設計工具中重建并保持原值;

(2) 三維模型顏色等正確無誤差,但是因為兩個設計平臺差異性,對應的材質貼圖丟失,只能保證顏色正確;

(3) 通過開發的導入導出工具導入輕量化模型后創建的模型距離三維協同設計應用還存在一定的差距,還需要2~3步的人工操作后才能將模型應用于三維協同設計;

(4) 轉換結果數據僅能供參考位置信息和屬性信息等,如果需要進行剖切投圖等后續操作也存在很大的問題,需要進一步深入研究。

4 結 語

針對CATIA與Revit模型相互轉換這一問題,本文提出一種基于BIM輕量化模型為中間數據格式的數據轉換方法,首先自定義輕量化格式數據文件,可以存儲模型的結構、幾何、屬性數據;通過CATIA和Revit二次開發技術在CATIA和Revit中開發模型導出和模型導入插件,實現快速導出和導入BIM輕量化模型。測試結果表明,該方法能夠完整的提取模型的信息從而實現數據轉換,并且轉換后模型的屬性、顏色等信息得以保留,能夠在對應的平臺中作為參考模型被使用,提高了跨平臺混合三維協同設計的效率,為設計人員提供更多的選擇。

因為輕量化模型本身是三角面片構成,使用該方法轉換的數據結果對于剖切投圖存在一定的問題,在未來的工作中可以繼續深入研究通過模型Brep信息進行數據交換來解決處理這一問題。另外目前僅研究了CATIA與Revit間數據轉換,未來的工作中也可以繼續深入研究CATIA、Revit、MicroStation等多平臺間數據轉換過程。

猜你喜歡
二次開發輕量化材質
汽車輕量化集成制造專題主編
淺談基于Revit平臺的二次開發
淺談Mastercam后處理器的二次開發
一種輕量化自卸半掛車結構設計
一種輕量化自卸半掛車結構設計
衣服材質大揭秘
西門子Easy Screen對倒棱機床界面二次開發
瞄準掛車輕量化 鑼響掛車正式掛牌成立
外套之材質對比戰
針織衫之材質對比戰
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合