冷繼全
(貴州省第一測繪院 貴陽 550025)
鐵路竣工用地界線資料是項(xiàng)目驗(yàn)收的關(guān)鍵資料之一,在鐵路竣工用地界線拐點(diǎn)標(biāo)注時(shí),目前CAD制圖軟件為通用功能,采用逐拐點(diǎn)標(biāo)注整飾繪制,不能批量標(biāo)注,而一條鐵路里程多達(dá)數(shù)百千米,竣工用地界線拐點(diǎn)數(shù)量更是龐大,人工反復(fù)操作,不但容易產(chǎn)生錯(cuò)誤,而且工作效率十分低下,影響項(xiàng)目竣工資料的匯編。筆者通過采用AutoCAD VAB、Excel VBA等程序語言,二次開發(fā)批量實(shí)現(xiàn)鐵路竣工用地界線拐點(diǎn)標(biāo)注,提高工作效率。
程序設(shè)計(jì)采用AutoCAD VAB、Excel VBA等語言二次開發(fā)。首先,通過選取鐵路中心線上直線段兩點(diǎn)坐標(biāo)計(jì)算線路走向方位角,利用界樁拐點(diǎn)標(biāo)記線與鐵路中心線成垂直關(guān)系,通過鐵路中心線方位角加減90°計(jì)算得界樁拐點(diǎn)標(biāo)記線方位。其次,通過拐點(diǎn)坐標(biāo)及標(biāo)志符(L、R)判斷界樁左右測拐點(diǎn)標(biāo)記線走向,設(shè)置一定的標(biāo)注長度,計(jì)算標(biāo)注長度兩點(diǎn)坐標(biāo),利用AddLightWeightPolyline()函數(shù)線,如此循環(huán)完成批量拐點(diǎn)標(biāo)注直線繪制。同理,利用拐點(diǎn)坐標(biāo)及鐵路中心線方向角,可計(jì)算邊距和里程平行于拐點(diǎn)標(biāo)注直線上下的注記點(diǎn)處坐標(biāo),通過AddText(textString,insertion-Point,height)函數(shù),實(shí)現(xiàn)分?jǐn)?shù)線式標(biāo)注,最后利用text().Rotation和text().ScaleFactor功能實(shí)現(xiàn)旋轉(zhuǎn)注記方向及字高,如此循環(huán)完成批量分子式注記。
通過在AutoCAD VAB中調(diào)入Microsoft Excel 15.0 objiect Library,設(shè)計(jì)“邊樁里程信息提取”功能,按照鐵路中心線里程前進(jìn)方向,定義左手方向?yàn)樽髠?cè)(標(biāo)識(shí)符用“L”表示),右手方向?yàn)橛覀?cè)(標(biāo)識(shí)符用“R”表示),實(shí)現(xiàn)導(dǎo)入“鐵路用地界樁表.XLS”,經(jīng)過程序整理后,形成用地界線拐點(diǎn)數(shù)據(jù),結(jié)構(gòu)如表1。
表1 用地界線拐點(diǎn)數(shù)據(jù)表
鐵路線路平面由直線、圓曲線以及連接直線與圓曲線的緩和曲線組成。在直線段可通過兩個(gè)里程樁坐標(biāo)計(jì)算方位角,方位角代表鐵路中心線走勢;鑒于一般鐵路的圓曲線和緩和曲線半徑比較大,鐵路中心線走勢為漸變過程,可理解漸變過程由若干小的直線段組成,采用計(jì)算逐直線段方位角,代替鐵路中心線走勢。K0至K1走向方位角計(jì)算公式如下:
根據(jù)Δx、ΔY正負(fù)值,確定方位角所處的象限,見圖1,其Pi=3.1415926。
圖1 中心線方位角示意圖
按《鐵路建設(shè)項(xiàng)目竣工用地平面圖圖式》要求,規(guī)定了鐵路用地界線拐點(diǎn)標(biāo)注方式和圖例符號(hào),拐點(diǎn)點(diǎn)位采用“〇”表示,標(biāo)注方式采用分?jǐn)?shù)線“S/+D”模式,其中“S”代表邊距,“+D”代表里程,垂直于鐵路中心線,方向沿小里程方向。由(1)式可以計(jì)算K0至K1走向方位角α。因拐點(diǎn)標(biāo)注線t1-t2方向垂直于K0至K1走向,則左側(cè)拐點(diǎn)標(biāo)注線方位角為β=α-Pi/2,右側(cè)拐點(diǎn)標(biāo)注線方位角為 β=α+Pi/2,利用拐點(diǎn)位置坐標(biāo)(X0,Y0)、方位角β和標(biāo)注線t1-t2長度L,利用極坐標(biāo)公式,可以計(jì)算t1、t2的點(diǎn)位坐標(biāo)。利用AddLightWeightPolyline(points)畫出標(biāo)注橫線“——”?!癝”點(diǎn)位置坐標(biāo)確定??赏ㄟ^拐點(diǎn)(X0,Y0)、方位角(α-Pi)及一定距離,先計(jì)算出平行于t1-t2方向的一過渡點(diǎn),再利用過渡點(diǎn)坐標(biāo)值、β值及適量距離,采用極坐標(biāo)法求得“S”點(diǎn)位置坐標(biāo)。“+D”點(diǎn)位置坐標(biāo)確定。可通過拐點(diǎn)(x,y)、方位角α及一定距離,先計(jì)算出平行于t1-t2方向的一過渡點(diǎn),再利用過渡點(diǎn)坐標(biāo)值、β值及適量距離,采用極坐標(biāo)法求得“+D”點(diǎn)位置坐標(biāo)?!癝/+D”模式注記旋轉(zhuǎn)角度為Pi-α,各關(guān)系之間角度如圖2所示。
圖2 拐點(diǎn)標(biāo)注之間角度關(guān)系示意圖
通過AutoCAD 2006平臺(tái)“工具”菜單欄,點(diǎn)擊“宏”下Visual Basic編輯器,進(jìn)入AutoCAD VBA環(huán)境。在ACAD Project下有AutoCAD對(duì)象、窗體。在窗體中新增form1控件,在工具箱中將Frame、TextBox、Label、CommandButton等控件增加到form1控件上。在AutoCAD VBA環(huán)境“工具”菜單欄,點(diǎn)擊“引用”,勾選Microsoft Excel 15.0 objiect Library引用相應(yīng)庫,完成程序支撐環(huán)境設(shè)計(jì),程序功能界面見圖3所示。
圖3 程序功能界面
通過GetPoint([Point][,Prompt])函數(shù)獲得鐵路中心線坐標(biāo),為計(jì)算線路方位角提供了輸入數(shù)據(jù),通過AddLightWeightPolyline(Point)函數(shù),可以繪制一定長度的分?jǐn)?shù)線標(biāo)注,通過AddCircle(centerPoint,radius)函數(shù),結(jié)合調(diào)入的鐵路用地界樁表(xls),可以繪制拐點(diǎn)樁位符號(hào),通過AddText(textString,insertionPoint,height)函數(shù),結(jié)合調(diào)入的鐵路用地界樁表(xls),可以繪制分?jǐn)?shù)式標(biāo)注“S/+D”,通過text().Rotation和text().ScaleFactor功能函數(shù),可以改變注記字寬和方向。以下列舉部分關(guān)鍵代碼:
SetTCX(0)=acadDoc.ModelSpace.AddLightWeightPolyline(ttt)
Set TCX(0)=acadDoc.ModelSpace.AddCircle(ppp,TextBox9.text)
Settext(j)=acadDoc.ModelSpace.AddText(zh1(j),www,TextBox7.text)
Set ext(j)=acadDoc.ModelSpace.AddText(l(j),mmm,TextBox7.text)
text(j).Rotation=(pi-TextBox5.text)
text(j).ScaleFactor=TextBox8.text
因篇幅所限,此處略去程序其它語句代碼。
貴廣鐵路是中國西南地區(qū)第一條按設(shè)計(jì)時(shí)速不低于250km的標(biāo)準(zhǔn)建造的高標(biāo)準(zhǔn)鐵路,全長857km(其中貴州境內(nèi)301km,廣西348.5km,廣東207.5km)。貴廣鐵路有限責(zé)任公司委托貴州省第一測繪院負(fù)責(zé)承擔(dān)新建鐵路貴陽至廣州(貴州段)竣工用地平面圖工程任務(wù)約264.3km,總面積約6000畝。
內(nèi)業(yè)在AutoCAD環(huán)境下,采用鐵路竣工用地界線拐點(diǎn)標(biāo)注程序,對(duì)鐵路施工里程DK36+960-DK301+260之間用地拐點(diǎn)進(jìn)行快速標(biāo)注,標(biāo)注效果如圖4所示。
圖4 拐點(diǎn)標(biāo)注結(jié)果局部圖
本文中基于AutoCAD VAB二次開發(fā),探索實(shí)現(xiàn)了基于垂直鐵路中心線用地界線拐點(diǎn)快速標(biāo)注,程序界面設(shè)計(jì)人性化、可視化界面,方便作業(yè)人員操作,通過測試,功能運(yùn)行穩(wěn)定,結(jié)果正確,人工編輯量少,解決了作業(yè)人員手工反復(fù)操作,長時(shí)間疲勞操作容易發(fā)生表冊(cè)與圖上不一致的問題,極大地提高了鐵路竣工圖用地界線拐點(diǎn)標(biāo)注工作效率。