江神文
摘 要: 針對大跨度鋼管混凝土拱橋變高度空間桁架主拱,利用Revit平臺提出基于上下弦桿節(jié)點(diǎn)坐標(biāo)的建模方法,以族為基礎(chǔ),闡述了模型建立的關(guān)鍵技術(shù),并基于.NET平臺,結(jié)合Revit API提出了主拱圈建模的二次開發(fā)技術(shù),解決了Revit本身無法通過輸入三維坐標(biāo)點(diǎn)方式生成鋼管構(gòu)件的難點(diǎn),大大提高了主拱圈的建模效率,保證了模型的準(zhǔn)確性。
關(guān)鍵詞: 鋼管拱; Revit; 二次開發(fā); 快速建模
1 引言
從傳統(tǒng)二維CAD設(shè)計(jì)向三維參數(shù)化設(shè)計(jì)轉(zhuǎn)型中,結(jié)構(gòu)專業(yè)遇到了較大的阻礙,效率問題是其中重要問題之一。Revit平臺提供的結(jié)構(gòu)模型是非常有效的參數(shù)化信息載體,其三維設(shè)計(jì)方法與傳統(tǒng)二維繪圖方式從根本上發(fā)生了轉(zhuǎn)變,結(jié)構(gòu)設(shè)計(jì)效率問題嚴(yán)重降低了結(jié)構(gòu)設(shè)計(jì)人員的熱情[1]。基于BIM技術(shù)的結(jié)構(gòu)設(shè)計(jì)只需要建立一個(gè)模型,不同的階段無需重復(fù)建模,而是將各自的設(shè)計(jì)信息通過工作集的方法高度集成在同一個(gè)模型中,開展協(xié)同設(shè)計(jì)[2]。大跨度鋼管混凝土拱橋目前在西南地區(qū)跨越峽谷建設(shè)越來越多,其拱肋通常采用空間桁架形式,桿件復(fù)雜且多,采用以往的二維平面制圖,只需要將各個(gè)節(jié)點(diǎn)坐標(biāo)導(dǎo)入到CAD中進(jìn)行點(diǎn)到線。但在Revit平臺建模中,確定一個(gè)點(diǎn)坐標(biāo)需要三個(gè)互相垂直的平面,主桁架的節(jié)點(diǎn)如果都通過這種方式來確定,不但嚴(yán)重影響了建模的效率,而且平面之間的相對位置錯(cuò)誤不易檢查。為了解決上述問題,借助Revit API(Application Programming Interface)二次開發(fā)技術(shù),針對鋼管主拱桁架的特點(diǎn),開發(fā)通用插件,具有重要意義。
2 主拱圈參數(shù)化建模
在Revit軟件中,搭建模型的步驟為:選擇族樣板—>創(chuàng)建族—>添加族參數(shù)—>項(xiàng)目文件中載入族。主拱作為鋼管拱的最基本受力結(jié)構(gòu),建模的目標(biāo)不僅是能生成可視化的三維信息模型,還要方便生成分析模型,以供分析軟件進(jìn)行調(diào)用。采用“公制結(jié)構(gòu)框架—梁和支撐”生成基于兩點(diǎn)的鋼管族,在項(xiàng)目文檔中通過API定制插件生成主拱圈模型
2.1 鋼管構(gòu)件生成
主拱圈拱肋主要構(gòu)件承重構(gòu)件均采用鋼管,鋼管的型號包括φ1360×35、φ900×24、φ600×20等等。直徑和壁厚作為鋼管構(gòu)件的共同屬性,可以采用“公制結(jié)構(gòu)框架—梁和支撐”樣板文件定義鋼管族,添加直徑d(mm)和壁厚t(mm)兩個(gè)參數(shù)值。為了方便快捷添加眾多鋼管型號,可以編制和鋼管族同名的TXT文件放在同一文件目錄下,TXT格式如圖 2所示,在項(xiàng)目文件中可以完成一次性載入所有型號的鋼管構(gòu)件。
選取某計(jì)算跨徑450m鋼管混凝土拱橋主拱圈采用等寬變高度空間桁架結(jié)構(gòu),斷面高度從拱頂8m變化到拱腳14m,單片拱肋寬度4m。針對桁架式主拱圈的特殊性,利用Revit API二次開發(fā)技術(shù)定制插件,一鍵搭建拱圈模型。
2.2 快速建模
鋼管族在項(xiàng)目生成桿件實(shí)例,需要給出起終點(diǎn)位置坐標(biāo),首先我們通過主拱圈設(shè)計(jì)圖先獲取主拱圈上下弦桿的節(jié)點(diǎn)坐標(biāo),保存成.xls格式文件,一般以拱腳中心作為主拱圈的原點(diǎn),縱橋向?yàn)閤軸,橫橋向?yàn)閥軸,豎向?yàn)閦軸。類Command從IExternalCommand派生,在該類中定義兩個(gè)動態(tài)數(shù)組m_beamMaps和m_level分別用來存儲當(dāng)前活動文檔中的族類型(SymbolMap類) 和標(biāo)高(LevelMap類)。
交互窗體CreateBeaml類基于System.Windows.Forms.Form實(shí)例化,在窗體除添加Label控件外,需添加4個(gè)ComboBox組合框控件和兩個(gè)dataGridView控件。其中ComboBox組合框用來確認(rèn)所使用的桿件類型,dataGridView用來導(dǎo)入.xls格式的上下弦桿坐標(biāo)。Execute()函數(shù)運(yùn)行的主體代碼為:
m_revit = commandData.Application;
Transaction tran = new Transaction(m_revit.ActiveUIDocument.Document, “CurvedBeam”);
tran.Start();
bool initializeOK = Initialize();if (!initializeOK){return Autodesk.Revit.UI.Result.Failed;}
CreateBeam displayForm = new CreateBeam(this);displayForm.ShowDialog();
tran.Commit();
因?yàn)椴寮?zhí)行需要對文檔進(jìn)行更改,所以創(chuàng)建事務(wù)“CurvedBeam”,第一步執(zhí)行初始化函數(shù)Initialize(),為窗體ComboBox組合框插件準(zhǔn)備數(shù)據(jù)。初始化函數(shù)需要用到元素邏輯過濾器(LogicalOrFilter)篩選出當(dāng)前文檔中的框架族和標(biāo)高,其核心代碼如下:
ElementClassFilter levelFilter =new ElementClassFilter(typeof(Level)); //過濾標(biāo)高
ElementClassFilter famFilter =new ElementClassFilter(typeof(Family)); //過濾族
LogicalOrFilter orFilter = new LogicalOrFilter(levelFilter, famFilter); //邏輯或集合
FilteredElementCollector collector = new FilteredElementCollector(doc); //元素收集器
FilteredElementIterator i = collector.WherePasses(orFilter).GetElementIterator(); //過濾出元素