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