張俊英, 丁德豪
(1.內蒙古交通設計研究院有限責任公司, 內蒙古 呼和浩特 010010; 2.中交第二公路勘察設計研究院有限公司)
對于中小跨徑橋梁設計,上下部結構采用標準圖紙,設計人員的主要工作為高程和坐標的計算。盡管只是簡單代數問題,卻有一些工程發生過因高程計算錯誤而導致的質量事故。為此,設計者會投入大量的人力計算和復核高程坐標。而一條路線往往會有幾十至幾百座橋梁,計算和復核工作量非常大。且很多橋梁為了服從路線走向,布置為斜橋,斜橋的高程計算更為復雜。
斜橋高程計算的數學模型如圖1所示,直線AC為墩(臺)跨徑線,AC與路線切線交角為α,P為AC上一點,若要求解P點的路面高程,首先要計算P點的設計樁號,因跨徑線是斜向的,故跨徑線的設計樁號并非是P點設計樁號;其次要計算P點設計樁號處的設計高程;再次計算P點設計樁號處的橫坡,當AC位于緩和曲線上,因超高是漸變的,常需進行繁瑣的內插計算;最后根據P點的設計高程、橫坡、至設計高程線的距離,計算P點的路面高程。每一個點的計算需要4步,一座橋往往需要計算很多特征點,重復很多次。且每一步還需從路線項目中查找數據,在AutoCAD圖上量取數據,再輸入EXCEL表進行計算,頻繁地切換軟件,設計工作量非常大。為提高設計效率,非常有必要開發一款高程計算程序。

圖1 斜交橋梁橋面高程計算示意
斜橋高程計算程序可以開發為AutoCAD的插件,也可以開發為獨立的應用程序。 開發為AutoCAD的插件,有兩個優勢:① AutoCAD可以自動加載該插件,節省了查找和切換軟件的時間;② 程序在讀入和輸出數據時,可以與AutoCAD圖形進行交互,豐富了程序的功能。故選擇采用AutoCAD二次開發工具進行程序的開發。
AutoCAD提供了多種方法進行二次開發,包括LISP、VBA、ObjectARX、.NET API等。Lisp與VBA較為簡單,易上手,主要用于簡單程序的開發。ObjectARX是Autodesk公司推出的基于C++的二次開發軟件包,軟件包提供了大量訪問AutoCAD軟件底層的接口,能直接調用AutoCAD的函數,能快速訪問AutoCAD圖形數據庫,開發功能非常強大。從AutoCAD2006開始,Autodesk公司又推出.NET API,它提供了一系列托管的外包類,封裝了絕大部分ObjectARX軟件包里的函數,目前已經擁有了與 ObjectARX相似的強大功能。可以看出,.NET API與傳統ObjectARX的區別主要在于:一個是.NET環境下開發應用程序;另一個是VC環境下開發應用程序。
使用.NET開發程序具有以下優勢:① 可以利用.NET框架下豐富的類庫;② 內存自動管理;③ 采用統一的異常處理;④ 支持多種語言,如VB.Net,C#,托管C++等。這些特點讓開發程序變得容易、高效。相比掌握VC++和ObjectARX來說,掌握.NET API更容易,故該文選用.NET API工具開發此程序,采用C#語言基于Visual Studio 2010和AutoCAD2012平臺開發。
程序由5個模塊組成,分別為讀寫模塊、坐標及方位角計算模塊、樁號計算模塊、高程計算模塊和橫坡計算模塊。讀寫模塊負責讀取路線平縱橫數據和跨徑線信息,并將計算結果輸出屏幕,讀寫模塊的好壞直接關系到用戶體驗,好的讀寫模塊會讓用戶節省很多時間。路線平縱橫數據是比較復雜的,讀寫模塊盡量做到自動讀取路線軟件的接口文件,而不需要人工手動錄入。以某路線軟件為例,該軟件提供了一個接口,生成的接口文件包括了項目的所有平縱橫數據,用戶只需在CAD命令行輸入命令,調出文件瀏覽窗口,選擇接口文件,自動讀取數據。.NET API提供了打開文件對話框的類PromptOpenFileOption,可以很容易實現上述功能,極大地提高了編程效率。跨徑線信息包括跨徑線樁號、斜交角、計算點至設計線的距離等,通過AutoCAD的命令行讀取。計算結果也通過AutoCAD的命令行輸出。坐標及方位角計算模塊是基礎模塊,功能為計算任意樁號的坐標和方位角,功能獨立,封裝為一個模塊,供后續函數調用。樁號計算模塊是核心模塊,功能為計算跨徑線上點的設計樁號。高程計算模塊的功能是計算豎曲線任意點中樁高程;橫坡計算模塊的功能是計算任意樁號的橫坡。根據以上功能,計算流程可歸納為圖2。

圖2 計算流程
此類問題的數學模型為已知線元的起點樁號、起點坐標、起點方位角,求線元上任一點坐標及方位角。公路平曲線包含直線、圓曲線和緩和曲線,每一段曲線稱為一個線元,線元的計算理論成熟,可參照文獻[1]、[2]進行。程序中求解上述模型可分為3個步驟:
(1) 判斷樁號位于哪一個線元。根據路線的起始樁號以及每一個線元的長度,計算出每一個線元的起終點樁號,再通過比較運算得到已知樁號所在的線元。
(2) 判段線元的類型。設線元起點半徑為R1,終點半徑為R2,當R1=R2=∞時,線元為直線;當R1=R2≠∞時,線元為圓曲線;當R1=∞,R2≠∞或R1≠∞,R2=∞時,線元為完整緩和曲線;當R1≠R2≠∞,線元為不完整緩和曲線。
(3) 依據線元類型,選擇相應計算方法計算。每一種計算方法可編寫為一個函數。
此類問題的數學計算模型如圖3、4所示,已知跨徑線AC與路線設計線交于O點,O點樁號L0已知,斜交角為α,P點距設計線的垂直距離為l,求P點樁號。該類問題的關鍵點在于確定P點到路線的垂足的位置。按照求解過程可分為解析法和數值法,下面分別介紹。
常見的路線曲線類型分為直線、圓曲線和緩和曲線。對于直線,如圖3(a)所示,Q點為垂足,P點的樁號計算公式如式(1)所示,正負號根據P點所在路線的左右側確定。
LP=L0±1/tanα
(1)

圖3 解析法樁號計算示意
對于圓曲線,如圖3(b)所示,E點為圓曲線圓心,R為半徑,圓心坐標(XE,YE)及半徑R為已知。由于O點樁號給定,通過調用坐標及方位角計算模塊,求得O點的坐標為(XO,YO),方位角為β,在圖示坐標系下,過O點跨徑線AC的方程為:
(2)
以E點為圓心,(R-l)為半徑的圓曲線方程為:
(X-XE)2+(Y-YE)2=(R-l)2
(3)
聯立方程(2)、(3),求得P點坐標為(XP,YP)。PO點的距離DPO為:
(4)
按照圖3(b)所示的幾何關系,P點樁號計算公式如式(5)、(6)所示,正負號根據P點所在路線的左右側確定。
(5)
LP=LO±R·θ
(6)
對于緩和曲線,無法直接用解析法,可采用數值法,具體計算方法如下。
如圖4所示,假設設計線上任一點B為所求點,通過調用坐標及方位角計算模塊,求得B點的坐標為(XB,YB),方位角為βB,過B點的路線法線方程為:
X=tan(-βB)·Y+[XB-tan(-βB)·YB]
(7)

圖4 數值法樁號計算示意
聯立方程(2)、(7),求得交點P′的坐標為(XP,YP),PB點的距離DPB為:
(8)
如果B點假設正確,那么有d=l。程序中通過二分法進行迭代計算,初始樁區間設為[L0,L0±2ltanα],正負號根據所求點在路線左右側確定。經試算,迭代的收斂速度很快,在給定的誤差允許范圍內,即可找到所求的樁號。

實際應用中,結合計算對象,選擇解析法、數值法或解析與數值相結合的方法。
此類問題的數學模型為,已知各轉坡點的樁號、半徑及高程,求任意樁號的中樁高程。公路豎曲線由直線和二次拋物線組成。高程計算分為3個步驟:
(1) 豎曲線要素計算(圖5)

圖5 豎曲線要素計算示意
由于豎曲線半徑都很大,故采用下式近似計算,結果可滿足工程要求。
(9)
式中:R為豎曲線半徑;L為豎曲線曲線長;T為豎曲線切線長;E為豎曲線外距;ω為相鄰縱坡差的絕對值,i1>i0,為凹曲線,i1 (2) 豎曲線始終點樁號計算 豎曲線始點樁號=轉坡點樁號-T。 豎曲線終點樁號=轉坡點樁號+T。 (3) 豎曲線上任意點高程計算 凸曲線上的高程=坡線高程-y。 凹曲線上的高程=坡線高程+y。 編寫程序時,先要判斷所計算樁號位于哪一段曲線,再根據豎曲線類型選擇相應的計算方法進行計算。 此類問題的數學模型為,已知各橫坡變化點的樁號和橫坡值,求任意樁號處的橫坡值。盡管超高的變化可能是線性,也可能是三次拋物線,但無論何種變化方式,本質都是采用內插法計算。編寫程序時,首先判斷超高變化方式,再選擇相應的計算方法計算。 按照前文思路,采用C#語言,在Visual Studio 2010平臺上,完成斜交橋梁橋面高程計算程序的開發。正交橋梁是斜交橋梁的一個特例,程序稍加修改,也可進行正交橋梁的高程計算。目前,該程序已經成功用于高速公路的橋梁設計中,為設計人員節約了大量的時間。 橋面高程計算是中小橋梁設計中一個重要環節,斜交橋梁橋面高程計算過程繁瑣,結合路線軟件提供的接口,開發適合于工程的小程序,可極大地提高工作效率。AutoCAD.NET 提供了良好的平臺,使軟件開發變得容易,降低了對編程知識的要求,路橋設計人員可根據需要開發自己的程序。4.4 橫坡計算
4.5 工程應用
5 結語