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