張紅勇
(中鐵七局集團第三工程有限公司,陜西 西安 710000)
BIM 技術集成了構筑物幾何和非幾何信息,能夠完整的表達出設計的結果[1]。常用的BIM 核心建模軟件Revit 具有強大的模型處理功能,具備信息集成的能力。但模型在建立過程中,極少集成結構分析設計信息,且不具備結構分析功能,為BIM 模型實際應用打了不少折扣,因此對力學模型與實體模型的交互研究具有必要性。
針對這一問題,董卯等[2]研究了利用C# 語言實現(xiàn)Revit 模型信息提取程序的二次開發(fā),實現(xiàn)了模型由Revit 到Midas Civil 的轉(zhuǎn)換。李澤宇等[3]利用Civil3D 二次開發(fā)功能創(chuàng)建軌道模型并導入Revit中,蘭南等[4]在橋梁結構設計中將BIM 技術和有限元仿真分析有機結合,通過Revit 的二次開發(fā)工具,建立了混凝土結構和預應力筋BIM 模型與有限元模型的直接映射關系。
文章利用Revit 軟件的二次開發(fā)功能,利用Dynamo進行Midas Civil 與Revit 之間的空間幾何數(shù)據(jù)的交互,以達到“一模多用”,盡可能降低建模時間,提高建模效率的目的,通過一個貝雷架棧橋的建模說明實現(xiàn)數(shù)據(jù)交互具體途徑。
數(shù)據(jù)信息在力學模型與實體模型傳遞過程中,可以歸納為以下兩種模式。
直接交互可分兩種,一種是建模軟件具備一定的計算模塊,可實現(xiàn)簡單的計算功能。如Catia 的Generative Structural Analysis 模塊。這樣的軟件相對較少,且計算功能和計算場景有限。另外一種是分析計算軟件通過API 或建模軟件內(nèi)部接口,直接調(diào)用建模數(shù)據(jù),如Autodesk Robot Structural Analysis。這種情況下大多數(shù)是同一公司的產(chǎn)品。
通過插件功能,生成中間格式模型(如sat、dwg、dxf 等),在專業(yè)計算軟件中調(diào)用生成模型數(shù)據(jù)。目前,大部分的軟件對接方式都采用間接交互的方式。采用間接交互,在生成中間格式模型時,容易造成信息丟失或錯誤,在研究交互時,應該測試不同條件類型數(shù)據(jù),以保證數(shù)據(jù)的準確性。
在以上兩種交互方式中,還可以根據(jù)交互時是否可對軟件進行同步操作,又可分為雙向交互和單向交互。
雙向交互能夠保持原有軟件數(shù)據(jù)格式,又能起連接軟件,實現(xiàn)實時數(shù)據(jù)互通的橋梁的作用,具備高效、專業(yè)的特點,是理想的交互方式。但由于各軟件廠商對軟件接口二次開發(fā)的開放程度不同,可查找的資源較少,實現(xiàn)起來較為困難。
Midas Civil 數(shù)據(jù)交互的方法主要有以下幾種:UI 界面輸入、表格輸入、dwf 文件導入、MCT 輸入。幾種交互方式對比見表1。
表1 Midas Civil 輸入交互方式對比
通過以上對比,選擇MCT 文件進行交互,是目前階段下進行數(shù)據(jù)交互最有效的方式。
Revit 數(shù)據(jù)交互可以通過API、dynamo、excel、txt等進行交互操作。幾種對比方式見表2。
表2 Revit 數(shù)據(jù)交互方式
通過以上對比,選擇采用dynamo 進行數(shù)據(jù)交互,以簡單,通過dynamo 可視化設計,還可以將方法融入API 中,實現(xiàn)API 編程建立UI 進行高效交互。
MCT[5](Midas Civil Text)是在Midas Civil中,通過格式命令的方法輸入模型數(shù)據(jù)的界面,它可以通過任何文本編輯工具進行打開。利用MCT 命令,操作人員可以利用文本的形式快速地輸入模型數(shù)據(jù),并可以根據(jù)相關數(shù)據(jù)和已有的模型數(shù)據(jù)整合在一起,形成新的模型數(shù)據(jù),在建立模型時,也可以單獨輸入某個模型數(shù)據(jù)命令,例如節(jié)點坐標、單元、材料屬性、截面數(shù)據(jù)等。
2.3.1 MCT 文件格式
通過文本編輯工具打開MCT 文件如圖1 所示。
圖1 MCT 文件
通過MCT 幫助文件,可以看出,圖中符號有“分號(;)、等號(=)、星號(*)”等,其中,分號代表注釋語句,分號后面的字符不執(zhí)行,只是為了便于設計人員閱讀。星號代表命令行,星號后緊跟英文命令單詞,代表以下段落執(zhí)行該條語句,直到下一個星號出現(xiàn)前,結束該命令。每行代表一個語句行,執(zhí)行一條命令或數(shù)據(jù)。具體分析如下:
(1)第1-4 行語句均以分號開始,為注釋語句,描述了此文件為MCT 文件以及文件建立的時間。
(2)第6-9 行語句為星號開頭,代表中間執(zhí)行了第6 行星后的“VERSION”命令,代表版本,版本號為:8.3.2。
(3)第6-9 行語句中,第6 行為“*UNIT;Unit System”,定義了系統(tǒng)所用的單位。其中分號前為命令,分號后為注釋。第7 行為“;FORCE,LENGTH,HEAT,TEMPER”,以分號開頭,為注釋行,表示接下的輸入數(shù)據(jù)分別為:“力、長度、重量、溫度”。第8 行為“KN,MM,KJ,C”,無任何符號開頭,為數(shù)據(jù)行,按第7行的格式,并執(zhí)行了第6 行的命令,定義了系統(tǒng)單位。
后續(xù)格式類推,此處不舉例說明。
2.3.2 MCT 文件命令
MCT 文件命令,可以根據(jù)MCT 幫助文件查找。此處列舉空間有關的兩個命令,進行研究,其他相關命令可參照幫助文件。
在“圖1MCT 文件”中的第21 行,有“*NODE”命令,此命令為建立節(jié)點命令,其數(shù)據(jù)格式為第22行“;iNO,X,Y,Z”注釋內(nèi)容。分別代表:iNO:節(jié)點編號;X:全局坐標系X 方向坐標;Y:全局坐標系Y 方向坐標;Z:全局坐標系Z 方向坐標。從第23 行起,就開始進行數(shù)據(jù)行,其中第23 行“1,0,0,0”代表第1 個節(jié)點,對應的X、Y、Z 坐標均為0,表示坐標原點。第24 行“2,3000,0,0”,代表2 號節(jié)點,X 值為3000,單位為第8 行的數(shù)據(jù)“MM(mm)”,以此類推。
進入本文件單元命令數(shù)據(jù)段落,數(shù)據(jù)如圖2 所示:
圖2 單元命令數(shù)據(jù)
其中:第678 行“*ELEMENT”代表單元命令,下面有5 行注釋,分別代表了5 類單元類形輸入格式,分別為框加單元、壓/拉單元、面單元、體單元和框架參照點。從第684 行開始,為數(shù)據(jù),其中第684行表示:iEL(單元編號)為第1 個單元,TYPE(單元種類)為BEAM(梁單元),iMAT(材料編號)為1 號,iPRO(截面編號)為1 號,iN1(第一個節(jié)點編號)為1號節(jié)點,iN2(第二個節(jié)點編號)為3 號節(jié)點,ANGLE(Beta 角為0 度),以此類推。
2.4.1 交互總體思路
通過Midas Civil 生成MCT 文件,并采用dynamo 中的python 腳本讀取,分別讀取mct 文件中節(jié)點,單位字段,并存儲在內(nèi)存中,利用dynamo 中的點命令,讀取內(nèi)存中的數(shù)據(jù),生成dynamo 的三維點坐標,再利用線命令,讀取內(nèi)存中的單元數(shù)據(jù),生成空間線單元,并輸出到Revit 中,實現(xiàn)空間數(shù)據(jù)轉(zhuǎn)換。通過以上思路,生成以下技術路線,如圖3 所示。
圖3 技術路線
2.4.2 交互主要代碼
定義獲取數(shù)據(jù)、拆分子列表和輸出三個函數(shù),分別用于讀取經(jīng)轉(zhuǎn)換后的txt 文件、按列表取單個數(shù)據(jù)和輸出用于生成節(jié)點和單元的數(shù)據(jù),如圖4,圖5 所示。
圖4 獲取數(shù)據(jù)函數(shù)
圖5 拆分子列表與輸出函數(shù)
利用python 自定義節(jié)點在dynamo 中生成的三維空間數(shù)據(jù)如圖6 所示。
圖6 三維空間數(shù)據(jù)圖
在數(shù)據(jù)交互中,采用dynamo 讀取結構空間模型信息,為Midas 力學模型與空間模型的數(shù)據(jù)轉(zhuǎn)換提供了思路,并利用在dynamo 中編寫的python 腳本程序?qū)崿F(xiàn)了簡單的空間數(shù)據(jù)交互,一定程度上解決了BIM 軟件與有限元分析軟件間存在信息孤島的問題,為以后類似案例提供了可借鑒的模型數(shù)據(jù)互用解決方法,具有拋磚引玉的價值。