魏 蒙
(中鐵二十局集團(tuán)第四工程有限公司,山東 青島 266100)
BASIC(Beginners All-Purpose Symbolic Instruction Code)語言是一種直譯式的、設(shè)計(jì)給初學(xué)者的編程語言,由于BASIC語言簡單、易學(xué)的基本特性,且具備通過微電腦作為載體撰寫程式的優(yōu)勢,使其在科學(xué)計(jì)算和數(shù)據(jù)處理等方面普遍流行。
BASIC語言在工程測量領(lǐng)域同樣有所涉及:如內(nèi)業(yè)數(shù)據(jù)批量處理時(shí),測量人員常常會(huì)使用Microsoft Office辦公系統(tǒng)中的Excel軟件,在Excel軟件中包含的宏語言VBA(Visual Basic for Application)就是windows環(huán)境下的一種BASIC語言;另如路基、隧道等結(jié)構(gòu)物放樣時(shí),施工斷面很難通過內(nèi)業(yè)方法提前計(jì)算,需要根據(jù)實(shí)際施工里程進(jìn)行中邊樁坐標(biāo)計(jì)算,測量人員常常會(huì)使用CASIO fx-5800P計(jì)算器進(jìn)行現(xiàn)場計(jì)算,而CASIO fx-5800P計(jì)算器采用就是類結(jié)構(gòu)化BASIC語言。測量人員將需解決的問題的思路、方法和手段通過BASIC語言告訴計(jì)算機(jī)(器),使得計(jì)算機(jī)(器)能夠根據(jù)人的指令一步一步去工作,完成復(fù)雜、繁重的計(jì)算任務(wù)。
本文結(jié)合馬鞍山鄭蒲港鐵路項(xiàng)目跨X024縣道公跨鐵立交橋的線路平面設(shè)計(jì)資料,采用Excel軟件中Visual Basic編輯器與CASIO fx-5800P計(jì)算器分別撰寫B(tài)ASIC語言程式,實(shí)現(xiàn)線路中邊樁坐標(biāo)的快速計(jì)算。
設(shè)計(jì)單位提供的《曲線要素表》如表1所示。
表1 曲線要素表
依照設(shè)計(jì)單位提供的《曲線要素表》整理出《線元表》,如表2所示。
表2 線元表
采用Excel軟件中VBA方法進(jìn)行數(shù)據(jù)批量處理。
(1)在新建的Excel表中輸入需要計(jì)算的“樁號(hào)”、“偏距”、“偏角”等數(shù)據(jù),排版后添加“命令按鈕”控件,如圖1所示。
圖1 在Excel表中添加“命令按鈕”控件
(2)雙擊“命令按鈕”控件,撰寫在敲擊“命令按鈕”的行為下執(zhí)行的BASIC語言程式,包括聲明部分、自定義變量類型、建立判斷和循環(huán)等語句、設(shè)置超限、建立基礎(chǔ)數(shù)據(jù)庫、執(zhí)行計(jì)算公式、計(jì)算結(jié)果輸出等部分的內(nèi)容,程序清單如下
Private Sub CommandButton1_Click() '聲明部分
Dim A,B,C,D,E,F(xiàn),G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,Z1,Z2,Z3,Pi As Double '自定義變量類型
Pi=3.1415926 '變量賦值
A=4 '變量賦值
Do While Worksheets("X024縣道改移工程").Cells(A,1).Value<>"" '建立循環(huán)語句
B=Worksheets("X024縣道改移工程").Cells(A,1).Value
If B<0 Or B>369.308 Then
MsgBox CStr(B)& "超出計(jì)算范圍→計(jì)算中斷" '設(shè)置超限
GoTo 1
End If
If B>=0 And B<=105.666 Then '建立基礎(chǔ)數(shù)據(jù)庫
Z=105.912 852 8 C=Z*Pi/180 D=0 E=3 494 949.135 F=500 226.072 5
GoTo 2
End If
………
2:G=E+(B-D)*Cos(C) '直線計(jì)算公式
H=F+(B-D)*Sin(C)
I=Worksheets("X024縣道改移工程").Cells(A,6).Value
J=C+I*Pi/180
K=Worksheets("X024縣道改移工程").Cells(A,5).Value
N=Worksheets("X024縣道改移工程").Cells(A,10).Value
O=C+N*Pi/180
P=Worksheets("X024縣道改移工程").Cells(A,9).Value
L=G+K*Cos(J) m= h+K*Sin(J)Q=G+P*Cos(O)R= h+P*Sin(O)
Worksheets("X024縣道改移工程").Cells(A,2).Value=Z '成果輸出
Worksheets("X024縣道改移工程").Cells(A,3).Value=G
Worksheets("X024縣道改移工程").Cells(A,4).Value= h
Worksheets("X024縣道改移工程").Cells(A,7).Value=L
Worksheets("X024縣道改移工程").Cells(A,8).Value= m
Worksheets("X024縣道改移工程").Cells(A,11).Value=Q
Worksheets("X024縣道改移工程").Cells(A,12).Value=R
GoTo 6
………
6:A=A+1
Loop
1:
End Sub
說明:程序清單中省略的內(nèi)容為基礎(chǔ)數(shù)據(jù)庫、計(jì)算公式和成果輸出的其余部分,其輸入格式與列舉格式相同,因篇幅原因,不再一一展開。
(3)撰寫程式完畢后保存并退出VBA界面,返回Excel表中,先退出設(shè)計(jì)模式,后單擊“命令按鈕”控件,批量數(shù)據(jù)處理,生成計(jì)算結(jié)果,如圖2所示。
圖2 在Excel表中批量生成計(jì)算結(jié)果
(4)將設(shè)計(jì)坐標(biāo)與VBA生成坐標(biāo)進(jìn)行較差,差值均小于1 mm,如表3所示。
表3 設(shè)計(jì)坐標(biāo)與VBA生成坐標(biāo)較差表
(1)打開CASIO fx-5800P計(jì)算器,點(diǎn)擊“MODE”,選擇“5:PROG”,再選擇“1:NEW”,輸入主程序名稱“X024”,子程序的新建方法與主程序方法一致。
(2)點(diǎn)擊回車,進(jìn)入“File mode”界面,選擇“1:COMP”,進(jìn)入撰寫B(tài)ASIC語言程式,程式清單如下:
①主程序(X024) ’主結(jié)構(gòu)程序
Lbl 0:″LCZH=″:? →S:
If S>=0 AND S<105.666:Then Prog “YS1”:IfEnd:
If S>=105.666 And S<130.666:Then Prog“YS2”:IfEnd:
If S>=130.666 And S<171.234:Then Prog“YS3”:IfEnd:
If S>=171.234 And S<196.234:Then Prog“YS4”:IfEnd:
If S>=196.234 And S<196.805:Then Prog“YS5”:IfEnd:
If S>=196.805 And S<221.805:Then Prog“YS6”:IfEnd:
If S>=221.805 And S<262.481:Then Prog“YS7”:IfEnd:
If S>=262.481 And S<287.481:Then Prog“YS8”:IfEnd:
If S>=287.481 And S<369.308:Then Prog“YS9”:IfEnd:
1÷P→C:(P-R)÷(2HPR)→D:180÷π→E:”BJ(Z-,Y+)=”? →Z:”ZJ(+)=”? →N:Abs(S-O)→W:Prog”JSGS”:”X=”:X◢”Y=”:Y◢”α=”:F■DMS◢Goto 0:
②子程序(JSGS) ’計(jì)算公式
0.1739274226→A:0.3260725774→B:0.0694318442→K:0.3300094782→L:1-L→F:1-K→M:
U+W(Acos(G+QEKW(C+KWD))+Bcos(G+QELW(C+LWD))+Bcos(G+QEFW(C+FWD))+Acos(G+QEMW(C+MWD)))→X:
V+W(Asin(G+QEKW(C+KWD))+Bsin(G+QELW(C+LWD))+Bsin(G+QEFW(C+FWD))+Asin(G+QEMW(C+MWD)))→Y:
G+QEW(C+WD)→F:X+Zcos(F+N)→X:Y+Zsin(F+N)→Y:
③子程序(YS1) ’第1段線元的數(shù)據(jù)庫
3494949.1350→U:500226.0725→V:0→O:105°54′46.27″→G:105.666→H:10^45→P:10^45→R:0→Q:
說明:第2至9段線元的輸入格式與第1段線元相同,因篇幅原因,不再一一展開。
(3)將設(shè)計(jì)提供坐標(biāo)與CASIO fx-5800P計(jì)算坐標(biāo)進(jìn)行較差,最大差值為1 mm,如表4所示。
表4 設(shè)計(jì)提供坐標(biāo)與CASIO fx-5800P計(jì)算坐標(biāo)較差表
(1)通過計(jì)算實(shí)例與設(shè)計(jì)資料進(jìn)行對(duì)照,計(jì)算結(jié)果滿足規(guī)范精度要求。采用BASIC語言程序進(jìn)行數(shù)據(jù)處理,尤其是批量數(shù)據(jù)處理,與人工處理數(shù)據(jù)相比較,工作效率將得到大幅度提高。
(2)計(jì)算實(shí)例僅是過程演示,測量人員在熟練掌握各種計(jì)算原理與計(jì)算公式的基礎(chǔ)上,觸類旁通、舉一反三,合理運(yùn)用BASIC語言撰寫程式,將使其在工程測量領(lǐng)域得到更廣泛的應(yīng)用。