汲姣,張永彬,汪金花,郭麗娜,楊少強(qiáng),劉佳麗
(華北理工大學(xué)礦業(yè)工程學(xué)院,河北唐山063009)
基于AutoCAD VBA的導(dǎo)線平差程序設(shè)計
汲姣,張永彬,汪金花,郭麗娜,楊少強(qiáng),劉佳麗
(華北理工大學(xué)礦業(yè)工程學(xué)院,河北唐山063009)
導(dǎo)線平差;程序設(shè)計;VBA;AutoCAD;Excel
在導(dǎo)線測量中,為了得到更為可靠的導(dǎo)線點坐標(biāo),必須對數(shù)據(jù)進(jìn)行平差計算,而傳統(tǒng)導(dǎo)線平差計算工作量大、過程繁瑣,且易受人為因素影響。因此,根據(jù)導(dǎo)線的近似平差原理,以AutoCAD內(nèi)置的菜單編程語言VBA為開發(fā)平臺,設(shè)計程序進(jìn)行導(dǎo)線平差計算,并在Auto-CAD中繪出平差結(jié)果及導(dǎo)線的幾何圖形,從而實現(xiàn)了可視化。
導(dǎo)線測量是平面控制測量中常用的方法之一,導(dǎo)線的線型簡單,測量計算方便,所以得到了廣泛的應(yīng)用[1-3],也因而出現(xiàn)了許多測量平差程序設(shè)計,但大多采用C語言、Visual C++語言及Visual Basic語言進(jìn)行程序的編制,這些語言在生成軟件、進(jìn)行封裝等方面比較有優(yōu)勢[3-6]。然而,僅僅就實際應(yīng)用的情況而言,在國內(nèi)外廣為流行使用的繪圖工具AutoCAD卻有著巨大的優(yōu)勢,而其自帶的二次開發(fā)語言VBA也逐漸成為一門重要的語言,VBA不僅結(jié)合了AutoCAD和VB的功能,同時可實現(xiàn)與Office系列軟件之間的互操作性,進(jìn)而能夠快速計算出滿足用戶要求的數(shù)據(jù),提高用戶工作的效率[7-10]。因此,該項目選擇VBA為編程語言,通過Excel VBA和AutoCAD VBA進(jìn)行交互式編程,實現(xiàn)導(dǎo)線近似平差的計算與導(dǎo)線網(wǎng)的繪制,方便用戶結(jié)合實地地形做規(guī)劃設(shè)計。
在導(dǎo)線的平差計算中,主要有嚴(yán)密平差和近似平差2種方法。嚴(yán)密平差比較繁瑣,要進(jìn)行多次的平差改正,而且其計算公式和方法也是相當(dāng)復(fù)雜;而近似平差一般都是配附,在一般的測圖作業(yè)、工程測量作業(yè)等項目中,近似平差是完全可行的。近似平差與精密平差的平差結(jié)果只相差在毫米級,但計算過程相對簡單,可以大大減少工作量,提高工作效率[2]。而且當(dāng)觀測精度較高時,選用近似平差完全可以滿足實際工程需要,因此近似平差有很高的實用價值。
導(dǎo)線測量的目的是獲得各導(dǎo)線點的平面直角坐標(biāo),它是根據(jù)已知點坐標(biāo),以及觀測角度和邊長,用近似平差方法進(jìn)行導(dǎo)線測量的計算。導(dǎo)線近似平差的基本思路是將角度誤差和邊長誤差分別進(jìn)行平差處理,先進(jìn)行角度閉合差的分配,在此基礎(chǔ)上再進(jìn)行坐標(biāo)閉合差的分配,通過調(diào)整坐標(biāo)閉合差,以達(dá)到處理角度的剩余誤差和邊長誤差的目的。導(dǎo)線主要包括:附和導(dǎo)線、閉合導(dǎo)線和支導(dǎo)線[11-12]。
2.1 程序設(shè)計思路
本程序充分利用Excel工作表強(qiáng)大的計算功能,計算得到導(dǎo)線點的坐標(biāo)和連接角,然后利用AutoCAD實現(xiàn)Excel表格的繪制和導(dǎo)線網(wǎng)幾何圖形的繪制。根據(jù)平面控制導(dǎo)線平差的主要內(nèi)容,設(shè)計了程序的總體框架圖,如圖1所示:
圖1 導(dǎo)線平差程序總體框架圖
2.2 關(guān)鍵程序的實現(xiàn)
導(dǎo)線近似平差計算與導(dǎo)線網(wǎng)繪制主要程序如下:(1)角度閉合差及方位角的計算
For i=5To n+3
Spreadsheet1.Cells(i,12).Value=Spreadsheet1.Cells(i-1,12).Value+
Spreadsheet1.Cells(i,9).Value-180
Next i
JDC=(Spreadsheet1.Cells(i,12).Value-B)*3600;%角度閉合差。
For i=4To n+3
Spreadsheet1.Cells(i,11).Value=Spreadsheet1.Cells(i,9).Value+fJD
Next i;%平差后的坐標(biāo)方位角。
(2)坐標(biāo)增量閉合差及坐標(biāo)的計算
dx=ZJX-ZX
dy=ZJY-ZY;%坐標(biāo)增量閉合差。
For i=4To n+2
Spreadsheet1.Cells(i,20).Value=Spreadsheet1.Cells(i-1,20).Value+
Spreadsheet1.Cells(i,18).Value
Spreadsheet1.Cells(i,21).Value=Spreadsheet1.Cells(i-1,21).Value+
Spreadsheet1.Cells(i,19).Value
Next i;%平差后的坐標(biāo)值。
(3)Excel表格在AutoCAD中的繪制
ptLT(0)=ptInsert(0)+excelrg.Left-ranges.Left
ptLT(1)=ptInsert(1)-(excelrg.top-ranges.top)
ptLT(2)=0
Set objLine=ThisDrawing.ModelSpace.AddLine(ptLT,PtLB);%繪制表格的邊框。
Dim objText As AcadText;%繪制表格中的文字。
(4)導(dǎo)線網(wǎng)幾何圖形在AutoCAD中的繪制
Set objLine=AddLineXY(x1,y1,x2,y2);%繪制導(dǎo)線。
Set AddDimAligned=ThisDrawing.ModelSpace.AddDimAligned(pt1,pt2,Position);%標(biāo)注導(dǎo)線長度。
Set AddDimAngular=AddDimAngular(CenterPoint,F(xiàn)irstPoint,SecondPoint,TextPoint);%標(biāo)注連接角。
VBA語言編程進(jìn)行數(shù)據(jù)處理的特點和優(yōu)點為近似平差計算提供了良好的平臺,可以實現(xiàn)閉合導(dǎo)線、附合導(dǎo)線和支導(dǎo)線的近似平差計算,圖2是程序的操作界面。
圖2 導(dǎo)線近似平差操作界面
以石家莊市井陘縣某項目觀測的附合導(dǎo)線數(shù)據(jù)為例進(jìn)行計算。表1為外業(yè)觀測數(shù)據(jù),其中A,B為已知點,坐標(biāo)為(739728.2800,764871.8600),其地理坐標(biāo)表示如圖3所示。
圖3 A(B)點地理坐標(biāo)
表1 附合導(dǎo)線觀測數(shù)據(jù)
程序解算流程為:
(1)按照提示把已知數(shù)據(jù)和觀測數(shù)據(jù)導(dǎo)入到程序中,并選擇導(dǎo)線等級和坐標(biāo)精度保留格式。
(2)單擊“平差計算”,即可在界面中直接讀取平差結(jié)果,同時可以檢核自己的測量結(jié)果是否符合規(guī)范要求,進(jìn)而考慮是否需要重測。
(3)單擊“平差結(jié)果”即可導(dǎo)出Excel表格文件,可以根據(jù)需要進(jìn)行保存或者打印。
(4)單擊“平差后圖形”即可在AutoCAD中顯示附合導(dǎo)線的幾何圖形,包括點號、連接角和導(dǎo)線長度,同時也可將(3)中的Excel表格繪制在AutoCAD中,方便用戶結(jié)合實際情況目測判斷自己的測量數(shù)據(jù)是否符合實際地形情況,也可用于碎部測量的檢核。用戶可根據(jù)需求將此結(jié)果一并保存或者打印,方便日后的再次利用。最終的可視化結(jié)果如圖4所示,圖4中左下角為附合導(dǎo)線平差計算結(jié)果圖,放大后效果如表2所示。
圖4 附合導(dǎo)線網(wǎng)形圖
表2 附合導(dǎo)線平差結(jié)果圖
(1)研究使用VBA開發(fā)平臺,以面對對象的設(shè)計模式,并對平面控制測量中導(dǎo)線測量的近似平差計算進(jìn)行了程序設(shè)計。大大減少了人工計算的工作量,提高了工作效率,并且通過實例驗證其計算結(jié)果可滿足要求,進(jìn)而避免了人為計算中出現(xiàn)的錯誤。
(2)本程序最終可在工程繪圖軟件AutoCAD中實現(xiàn)可視化,既可方便用戶實地踏勘檢驗使用,也可方便用戶熟練進(jìn)行其他操作,如檢核碎部測量,具有很高的實用價值。然而本程序還未能實現(xiàn)高程問題的解算,這是本文后續(xù)研究的主要內(nèi)容。
[1] 徐文.導(dǎo)線網(wǎng)平差系統(tǒng)的設(shè)計與實現(xiàn)[D].西安:西安電子科技大學(xué),2011.
[2] 潘正風(fēng),程效軍,成樞,等.?dāng)?shù)字測圖原理與方法[M].武漢:武漢大學(xué)出版社,2004.
[3] 何尤剛.導(dǎo)線平差程序設(shè)計與應(yīng)用[J].華南金融電腦,2009,(06):50-52.
[4] 張賀,徐茂林,宮雨生.基于Visual Basic的導(dǎo)線平差程序設(shè)計[J].遼寧科技大學(xué)學(xué)報,2014,37(05):504-508.
[5] 劉科,廖中平,余澤彬.Excel VBA在導(dǎo)線近似平差計算中的應(yīng)用[J].地礦測繪,2015,32(02):31-34.
[6] 向繼平,駱忠愛.Excel在導(dǎo)線平差計算中的應(yīng)用[J].礦上測量,2012,(06):32-37.
[7] 李祥,李遙玉.基于Excel VBA與CAD VBA聯(lián)合編程技術(shù)實現(xiàn)快速編制繪圖程序[J].企業(yè)技術(shù)開發(fā),2015,34(10):36-38.
[8] 張帆.AutoCAD VBA二次開發(fā)教程[M].北京:清華大學(xué)出版社,2006.
[9] 葉以農(nóng).AutoCAD2000Active與VBA參考手冊[M].北京:中國電力,2009.
[10] Sutphin,Joe.AutoCAD 2006VBA:A Programmer's Reference[M].Apress,2014.
[11] 任國棟.導(dǎo)線平差程序設(shè)計[J].露天采礦技術(shù),2015,(07):45-49.
[12] 李智勇.導(dǎo)線近似平差計算[J].全球定位系統(tǒng),2014,39(03):97-99.
Program Design of Traverse Adjustment Based on AutoCAD VBA
JI Jiao,ZHANG Yong-bin,WANG Jin-h(huán)ua,GUO Li-na,YANG Shao-qiang,LIU Jia-li
(College of Mining Engineering,North China University of Science and Technology,Tangshan Hebei 063009,China)
traverse adjustment;programming;VBA;AutoCAD;Excel
In order to get more reliable traverse point coordinates,the adjustment computation of data should be carried out in traverse survey,but the work of the traditional adjustment calculation of the traverse is too heavy,the process is too complicated,and it is more influenced by human factors.Therefore,according to the principle of approximate adjustment of the traverse,this program was designed with the VBA programming language,which is built in AutoCAD,as the development platform.Then the adjustment of the traverse was calculated and the adjustment results and the geometric figure were drawn out with AutoCAD software.Thus the visualization of result is realized.
P207+.2
A
2095-2716(2016)04-0032-06
2016-04-10
2016-07-14