朱德榮
(中鐵上海設計院集團有限公司,上海 200070)
箱梁三維實體自動建模方法研究
朱德榮
(中鐵上海設計院集團有限公司,上海 200070)
三維實體模型能夠直觀、完整地反映立體的幾何與特征信息。在對結構特征、模型變量與建模過程進行分析的基礎上,總結箱梁結構的建模規律,提出適合于不同類型橋梁結構的建模方法及建模中應注意的問題。借助VC++和ObjectARX工具,通過創建圖形實體及其面域,形成建模參數,運用AcDb3dSolid類建立的對象容器,建立橋梁結構三維實體的拉伸、掃掠和放樣接口函數,并對立體添加顏色或材質。運用圖形變換和布爾運算,對三維實體進行整體組裝,實現了橋梁結構三維實體自動建模。
橋梁結構;計算機輔助設計;三維實體建模;參數化;ObjectARX
橋梁是公路、鐵路及城市立交線路中的重要構造物,隨著交通基礎設施的快速發展,橋梁的數量越來越龐大,而且結構復雜,類型多種多樣[1]。目前,橋梁設計圖樣采用多面正投影圖表達,缺乏立體感,不能直觀展現橋梁全貌,且所含的信息也不夠全面。橋梁立體模型的建立將為設計方案的比選與優化、工程量的計算、施工過程的動態顯示以及三維橋梁信息的可視化管理奠定基礎。
文獻[2]探討了三維空間模型及其構模方法,并對比分析了目前常用的10種三維建模技術的優缺點及適用場合。文獻[3]提出了一種新的三維建模方法——折疊法,折疊二維平面圖形構成三維實體。文獻[4]以VC++為平臺,融合OpenGL圖形技術,結合斜拉橋結構的特點,采用參數化方法對斜拉橋進行三維建模,實現了斜拉橋三維可視化。文獻[5]以掃描法和參數化特征造型為橋梁模型的主要造型方法,半邊數據結構為模型的數據結構,對橋梁三維造型和視景仿真的關鍵技術進行了研究,并在VC++平臺上結合OpenGL圖形庫開發仿真應用系統。文獻[6]提出通過各段截面的位置、頂點數和變化次數來控制變截面梁橋大樣形狀,采用添加和切割的手段實現變截面梁橋整體造型,并運用三維參數化建模軟件MDT6.0和VBA開發工具實現變截面梁橋造型設計。
本文針對箱形梁,分析梁體沿跨度方向的內外部結構特點,揭示其變化規律,探討等截面和變截面梁體的自動化建模方法,運用 Visual C++語言和ObjectARX開發技術,直接對圖形數據庫進行操作,建立掃掠、放樣建模接口函數,參數化形成立體,并對實體模型添加顏色和材質,通過圖形變換與布爾運算,組裝橋梁整體結構,實現箱梁結構的自動建模。
單室或多室箱形梁是大中跨橋梁及城市橋梁最常用的結構形式,研究箱梁的結構特點,歸納和總結梁體各段的建模規律,以便于確定各段梁體相應的建模方法,實現自動建模。
圖1為(80+168+80)m連續-鋼桁組合結構主梁1/2箱梁中心縱剖面和部分橫截面。

圖1 1/2箱梁中心縱剖面及部分橫斷面(單位:cm)
由設計圖可知,該連續箱梁為雙室結構,沿跨度方向進行了分段,在各分段位置給出了梁橫截面圖;從圖1可看出箱梁的兩端支座處、中間支座處與跨中有部分梁段外輪廓為等截面,建模時采用掃掠或拉伸建模;其他分段位置的多個連續橫截面外形和箱室內輪廓都為變截面,采用沿導向線的放樣方法建模;靠近梁支座處的頂板和底板加厚段,采用起始與終止橫截面沿一條路徑進行放樣建模。
2.1 拉伸和掃掠建模方法
(1)拉伸建模
拉伸建模是指將封閉二維平面區域沿垂直于面域方向拉伸形成立體,適用于柱體結構。圖1中梁端、中間支座處的外形和橫隔板上的孔洞都為等截面,可采用拉伸建模。
形成拉伸體的封閉平面圖形主要有圓、多邊形等,建模方法為:先由幾何參數生成封閉的二維圖形,再生成面域,最后沿垂直于面域的方向拉伸一定的距離形成立體。
(2)掃掠建模
掃掠方式建模是將平面區域沿任意曲線路徑掃掠形成立體,適用于等截面(如矩形梁、T形梁、箱形梁等)、管線、梁拱等立體建模。方法為:①由掃掠圖形的參數繪制二維封閉圖形;②二維封閉圖形生成面域;③由掃掠路徑參數形成掃掠路徑;掃掠路徑可以是直線、圓、圓弧、空間折線及樣條曲線等;④由面域和掃掠路徑作為參數,運用 ObjectARX開發技術,形成掃掠體。
2.2 建立拉伸和掃掠接口函數
在以上研究拉伸和掃掠建模方法和步驟的基礎上,由VC++和ObjectARX建立拉伸和掃掠立體的方法和步驟如下。
(1)圖形幾何參數定義 面域邊界和掃掠路徑可用多種類對象創建,如多段線、圓、橢圓及樣條曲線等,幾何參數為頂點坐標、法向矢量和半徑等。對二維坐標數組采用AcGePoint2dArray類定義,用于存儲二維圖形頂點坐標;用AcGepoint3dArray類定義空間實體三維坐標點數組;三維坐標點用AcGePoint3d類定義;平面的法向矢量用AcGeVector3d定義為normal(0.0,0.0,1.0),拉伸體的高度沿該方向。
(2)創建圖形實體 不同封閉幾何圖形的創建對應不同類的構造函數和參數。創建類對象指針方法為:類名*pEnt=new類名;幾種常用實體的創建方法如下。

該類參數為各頂點坐標和法向矢量,用于創建二維封閉多邊形。
②創建掃掠路徑
在ObjectARX中,掃掠路徑可以用 AcDbLine、AcDb3DPolyline、AcDbSpline等類創建。若掃掠路徑為三維多段線,則三維坐標點數組用AcGepoint3dArray類定義為pt3d,用該類成員函數set-LogicalLength(n)定義數組長度,用 pt3d[i].set(x,y,z)設置各點坐標,創建空間多段線作為掃掠路徑的方法為:

注意,poly指向不同類的封閉對象,就生成相應的面域。
(4)創建拉伸體或掃掠體的方法
①用AcDb3dSolid類先創建幾何實體的一個容器和接口[7]:AcDb3dSolid* p3dObj=new AcDb3dSolid()。
②調用建模成員函數 創建拉伸體:p3dObj->extrude(pRegions_poly,height,taper);當拉伸體錐角參數taper為0,則為柱體,非零時沿高度為呈線性遞減截面。創建掃掠體:p3dObj->extrudeAlongPath(pRegion_circle,poly3d));將面域沿路徑掃掠形成立體。
由此可知,兩種建模方法的共同之處都需面域參數;不同之處在于,拉伸需拉伸高度和錐角,掃掠要沿掃掠路徑。
③將立體添加到圖形數據庫中[8]:AddEntityToDatabase(p3dObj)。
④設置顏色:立體創建后,需添加到圖形數據庫中,并可設置顏色。方法為:p3dObj->setColor(col);其中,col為顏色號。
設置實體的材質:p3dSolid->setMaterial(material_name)。
⑤關閉對象指針。如果不對實體進行操作,則關閉指針p3dObj,否則,返回實體指針p3dObj,以便對實體進行圖形變換和布爾運算,最后再關閉指針p3dObj。
通過對圖1的箱梁設計圖進行分析可知,箱梁外形和內部結構沿跨度方向變高段分為線性變高段和非線性變高段。對箱梁外形而言,在支座處和中間跨的跨中處為等截面段,其余梁段各截面高度呈非線性變化;從箱梁內部結構看,梁端和中間橫隔板上的八邊形通孔為等截面,而箱梁靠近各支座處頂板和底板為加厚段,沿長度方向呈線性變截面。根據箱梁各部分的構造特點,可采用不同的建模方法。
3.1 線性變截面放樣建模方法
圖2(a)為箱梁左端截面1至截面3的空間位置,該段箱梁外形為等高段,放樣路徑為H1-H3;截面1至截面2之間,梁端隔板中的八邊形通孔也為等高段,放樣路徑為P1-P2,可采用沿路徑放樣進行建模。圖2(b)為箱梁外形立體和左前方為內部八棱柱體。
從截面2和截面3可看出,2個箱室的截面圖形的大小不同,所以該段為箱梁頂板和底板的加厚段,截面高度為線性變化。采用2個端截面沿一條直線路徑放樣建模,路徑應通過2個端截面同一方位的兩個頂點連線,如M2-M3,見圖2(a)。放樣體如圖2(b)右后部分為2個箱室的線框立體圖。
將圖2中的箱體與2個八棱柱和2個變截面棱柱進行差集運算形成箱體。
由2個端截面放樣(無論等截面還是線性變截面)和掃掠的區別在于:放樣需要放樣區間的2個端截面和路徑來建模,放樣路徑只能為2個截面之間的一條高線或者對應頂點連線;而掃掠僅需要一個截面圖形和掃掠路徑,且掃掠路徑可為任意曲線。

圖2 等截面和線性變截面立體建模
3.2 非線性變截面放樣
圖3是圖1中箱梁截面3~10變截面的空間位置和立體形狀。該段箱體采用非線性放樣建模,是將截面3至截面10內、外封閉圖形沿通過各頂點的導向線分別進行放樣(圖3(a)),構造出箱體外形和2個箱室立體,再差集形成非線性變截面箱體結構,如圖3(b)所示。

圖3 箱梁非線性變截面立體建模
3.3 放樣建模接口方法
在bjectARX工具中,用AcDb3dSolid類的成員函數createLoftedSolid()進行放樣,具體方法和步驟如下。
(1)創建一組封閉的截面圖形 箱梁變截面連續梁,其截面圖形是多邊形,創建截面圖形的方法與2.2節相同。
(2)形成截面的實體指針數組 形成放樣體的截面無論是什么圖形(多邊形、圓等),在創建了各截面對象后,要將各截面按形成立體的順序存儲在實體指針數組中,構成一組截面,以便沿導曲線形成放樣體。方法為:先定義實體指針數組為AcArray<AcDbEntity*>pEntsTemp,再由其成員函數append(pEnt)將各截面圖形實體添加到pEntsTemp指針數組中。
(3)構成導向線指針數組 每條導向線為通過各截面對應頂點的樣條曲線,導向線用來控制立體的表面形狀。定義導向曲線的各頂點坐標點數組為AcGe-Point3dArray pts,用該類的成員函數 append(AcGe-Point3d pt)將坐標(X,Y,Z)添加到數組中,形成導向曲線坐標數組。創建splines導向曲線、形成導向曲線指針數組的方法如下:
AcDbSpline*pSpln_1=new AcDbSpline(pts);AcArray<AcDbEntity* > pGuidesTemp;
用AcArray類成員函數append(pSpln_n)將導向線添加到實體指針數組pGuidesTemp中。
(4)創建放樣立體 在生成放樣體的各截面指針數組和引導曲線指針數組的基礎上創建放樣體。由各截面沿導向線放樣立體時,中間段的形狀由導向線通過的各截面頂點來控制。創建放樣體的方法如下:
AcDb3dSolid*p3dSolid1=new AcDb3dSolid();
p3dSolid1->createLoftedSolid(pEntsTemp,pGuides-Temp,NULL,AcDbLoftOptions::kNoNormal)。
(5)將放樣立體添加到圖形數據庫,再設置顏色。方法同拉伸體。
(6)用delete刪除截面、導向線和實體指針。
4.1 三維實體圖形變換方法
在立體生成后,要將其定位于復雜立體的指定位置和方向,可用平移和旋轉等變換方法;要放大立體,可用比例變換;也可對立體進行鏡像等變換。變換方法和步驟如下。
(1)生成三維實體變換矩陣 用ObjectARX工具對立體進行變換時,需生成三維圖形變換矩陣。用AcGeMatrix3d類定義三維幾何變換矩陣,再用該類的成員函數生成平移變換 setCoordSystem(moveBy,x,y,z)、比例變換 setToScaling(scale,moveBy)、旋轉變換setToRotation(PI/3.0,y,moveBy)、鏡像變換 setToMirroring(pln)矩陣。
(2)實體模型變換 確定圖形變換矩陣后,即可對立體進行變換:
p3dSolid->transformBy(transformation_matrix);
該函數將實體的幾何參數進行坐標變換,其拓撲特征保持不變。
(3)將變換后的實體添加到圖形數據庫中。
4.2 三維立體布爾運算
將已創建的各段梁體擺放在各自的空間位置后,運用布爾運算中的并集可將各分段建模的梁體進行合并,形成箱梁整體模型,用箱體與2個箱室體進行差集,可形成箱體中的箱室孔洞部分。對2個立體進行布爾運算[9]的方法如下:
設已創建的2個實體為pSolid1,pSolid2。
pSolid1- > booleanOper(AcDb::operation,pSolid2);
如果函數調用成功,pSolid1將指向經過布爾運算生成的新的實體,pSolid2所指向的實體將從數據庫中刪除。布爾運算類型operation取值為AcDb::kBoomlUnite(并集)、AcDb::kBoolIntersect(交集)和 AcDb::kBoolSubtract(差集)。
根據箱梁設計圖(圖1)與幾何信息[10],具體建模方法和步驟如下。
(1)建模數據組織
連續箱梁總體信息[11]:箱梁跨數,跨度,總長,箱室個數,橫截面數量,橫截面間距。
橫截面幾何信息如圖4(a)所示,包括截面的寬度和高度尺寸。
(2)連續箱梁建模
在建模數據的基礎上,建模方法如下。
①繪制空間橋面中心線,從左向右指定各橫截面在橋面中心線上的空間坐標。
②進行用戶坐標變換,依據截面參數,確定截面頂點坐標。
③用AcDbPolyline類創建截面中的封閉多邊形。④生成等截面和變截面段的放樣路徑。
⑤箱梁的等高段建模 依據3.1節的沿路徑放樣方法,建立箱梁外形、內部八邊形通孔和頂、底板加厚段立體,對孔洞部分,由箱體與內部實體差集構造穿孔,如圖2所示。
⑥箱梁變高段建模 對箱梁外形和內部非線性變高段采用導向線放樣建模,箱梁與內部實體進行差集,即可形成箱梁結構,如圖3所示。
⑦在形成各段箱體后,可采用并集形成1/2箱梁立體,再用鏡像功能形成箱梁整體,如圖4(b)所示為整座橋梁立體圖。

圖4 (80+160+80)m連續-鋼桁組合結構主梁橫截面參數和立體圖
本文在分析箱梁結構形狀、構造特點的基礎上,研究了梁體建模方法,總結了梁體結構中適合等截面、線性和非線性變截面的建模規律和方法,運用VC++和ObjectARX工具,建立了拉伸、掃掠和放樣等接口函數,實現了橋梁結構的自動化建模,通過與人機交互建模比較,結果表明,建模效率提高約80%。橋梁模型為橋梁設計、修改、評價和施工[12]提供了三維可視化手段,這種自動建模方法對橋梁CAD和三維可視化的研究具有一定的意義和參考價值。
[1]劉忠平,曾敏.武廣客運專線橋梁結構類型和特點[J].鐵道標準設計,2013(9):54-58.
[2]畢碩本,張國建,侯榮濤,梁靜濤.三維建模技術及實現方法對比研究[J].武漢理工大學學報,2010,32(16):26-30,32.
[3]張秉森,邵峰晶.CAD系統中產品設計三維實體建模方法的研究[J].工程圖學學報,2002,(4):27-32.
[4]扈春霞,王子茹.基于OpenGL的參數化斜拉橋三維可視化的研究[J].江漢大學學報:自然科學版,2008,36(2):47-49.
[5]陸鐵堅,蔣友良,余志武.橋梁三維造型及其視景仿真[J].中南大學學報:自然科學版,2005,36(3):501-505.
[6]何祎,李傳習,譚海洋.變截面梁橋三維造型技術的研究[J].中南公路工程,2004,29(1):117-119.
[7] 李世國.AutoCAD高級開發技術-ARX編程及應用[M].北京:機械工業出版社,1999:180-189.
[8]程耀東,趙建昌,徐軍.圖形數據庫應用技術研究[J].工程圖學學報,2006,27(1):143-148.
[9]程耀東,張麗萍,韓進等.計算機繪圖與二次開發方法[M].蘭州:甘肅科學技術出版社,2009:267-323.
[10] Xiong Jun He,Nguyen Phan Anh,Jiu Si Liu,Jing Ju Xiang,Xiao Yang Luo.Modeling Method of Analysis of Complicated Bridge Structures Based on Design Drawings[J].Advanced Materials Research,2011,243-249,6131-6137.
[11]劉潤舟.(70+125+70)m跨鐵路轉體連續梁橋設計[J].鐵道標準設計,2013(12):70-73.
[12]蘇國明.一聯多孔連續梁大節段快速施工設計[J].鐵道標準設計,2013(9):50-53.
Research on Automatic M odeling M ethod of Three-dimensional Entity for Box Girder
ZHU De-rong
(China Railway Shanghai Design Institute Group Co.,Ltd.,Shanghai200070,China)
Three-dimensional entity model can visually and completely reflect the geometric and characteristic information of an entity.After research on box girder structure characteristics,on model variables and on modeling process,the paper summarized themodeling rule of box girder structures,put forward themodelingmethod which is suitable for different kinds of bridge structures,and pointed out the matters needing attention in modeling process.In this paper,with the help of Visual C++and ObjectARX,and by creating the graph entity and regions,the modeling parameters were formed.Furthermore,by using object container of AcDb3dSolid class,the interface functions among stretching,sweeping and loftingwere established for the three-dimensional entity of bridge structure,then colors and material or texture were added into the entity.Finally,by means of graphic transformation and Boolean calculation,the three-dimensional entity of bridge structure was assembled integrally,thus the automatic modeling of three-dimensional entity of bridge structure were achieved.
bridge structure; computer aided design; three-dimensional entity modeling;parameterization;ObjectARX
U442.5
A
10.13238/j.issn.1004-2954.2014.03.013
1004-2954(2014)03-0054-05
2013-12-10
省級自然科學基金(1212RJZA042)
朱德榮(1966—),男,高級工程師,1990年畢業于西南交通大學橋梁與地下工程專業,工學碩士,E-mail:zydzcx@163.com。