5800正反算带设计高程和三心圆超欠挖综合程序
- 格式:doc
- 大小:104.50 KB
- 文档页数:4
任意坐标正反算及隧道超欠挖程序(2010-10-22)
1-JIN YU(主程序)
Lbl 4: “1→ZS,2→FS,3→CQW”:“N=”?N: “K=”? S:Prog “SJ-PM”(选择计算模式,1
为正算,2为反算,3为超欠挖)
N=1=>Goto 1:N=2=>Goto 2:N=3=>Goto 3
Lbl 1: “P=”? Z: Abs(S-O) → W:Prog “SUB1-ZS”: “X=”:Locate4,4,X: “Y=”:
Locate4,4,Y:F-90→F:S→ K:Prog“SJ-GC”:“H=”:Locate4,4,H◢
Goto 4
(正算-输入待求点里程K=、输入待求点偏距P=、显示待求点里程X=、显示待求点里程Y=、显
示待求点里程设计高程H=)
Lbl 2: “X=”? X:“Y=”? Y: X→ I: Y→ J:Prog "SUB2-FS":O+W→S: “K=":Locate4,4,
S :“P=":Locate4,4, Z:S→ K:Prog“SJ-GC” :“H=”:Locate4,4, H◢
Goto 4
(反算-输入实测点X=、 输入实测点Y=、显示实测点里程K=、显示实测点偏距P=、显示实测点
的设计高程H=)
Lbl 3: “X=”?X:“Y=”?Y: X→ I: Y→ J:Prog "SUB2-FS":O+W→S: “K=":Locate4,4,
S :“P=":Locate4,4, Z:S→ K:Prog“SJ-GC” :“H=”:Locate4,4, H◢
Prog“SJ-CQW” ◢
Goto4
(超欠挖-输入实测点X=、 输入实测点Y=、显示实测点里程K=、显示实测点偏距P=、显示实测
点的设计高程H=、输入实测高程H1=、显示超欠挖值及第几圆心上CQ→Y?=)
SJ-PM(子程序名-平面线形数据库)
If S ≥59227.681(线元起点里程):Then 2599818.013→U(线元起点X坐标):496887.918
→V(线元起点Y坐标):59227.681→O(线元起点里程):208028’39”→G(线元起点方位角):
100 →H(线元长度):1×1045→P(线元起点曲率半径):1×1045→R(线元终点曲率半径):
0 →Q(线元左右偏标志:左-1右1直0):IfEnd
If S ≥59327.681(线元起点里程):Then 2599730.112→U(线元起点X坐标):496840.237
→V(线元起点Y坐标):59327.681→O(线元起点里程):208028’39”→G(线元起点方位角):
90 →H(线元长度):1×1045→P(线元起点曲率半径):750→R(线元终点曲率半径):-1 →
Q(线元左右偏标志:左-1右1直0):IfEnd
(注:有多个平面线形,依照上面的依次变更, 每多一个,就增加一个。每次只需要修改以上的
数据或增加一个判断。)
SJ-GC(子程序名-竖曲线数据库)
If S<变坡终点里程And S≥变坡起点里程:Then大里程坡度→A:小里程坡度→B:变坡点里
程→O:变坡点高度→G:半径→R:Prog“SUB3-GC”:IfEnd
(注:1.有多个竖曲线,依照上面的依次变更,每多一个,就增加一个。每次只需要修改以上的
数据或增加一个判断。2.如整条线只有一个纵坡比喻为2﹪,那么程序应为If S<终点里程And
S≥起点里程:Then 0.02→A:0.02→B:起点里程→O:起点高程→G:1×1045→R:
Prog“SUB3-GC”:IfEnd)
SJ-CQW (子程序名-隧道数据库)
“H1=”?F
If F-H>5.845:Then √((Abs (Z))2+(F-H-0.45)2 )-7.45→W: “CQ→Y1=”:W: IfEnd:(显示超
欠和第1圆心)
If F-H≤5.845 And F-H>-1.169: Then √((Abs (Z)-1)2+( Abs (F-H-1.5)) 2)-6→W : “CQ
→Y2=”:W:IfEnd: (显示超欠和第2圆心)
If F-H≤-1.169: Then √((Abs (Z)) 2+(H-F+14.05) 2)-16.5→W: “CQ→Y3=”:W: IfEnd: (显
示超欠和第3圆心)
(注:隧道断面有多个圆心,依照上面的依次变更, 每多一个,就增加一个。每次只需要修改以
上的数据或增加一个判断。)详细数据见下图:
SUB1-ZS(正算子程序)
1÷P→ C: (P-R)÷(2HPR) → D: 180÷π→ E: 0.1739274226→ A: 0.3260725774→ B:
0.0694318442→ K: 0.3300094782→ L: 1-L→ F:1-K→ M:
G+QEKW(C+KWD)→Z[1]
G+QELW(C+LWD)→Z[2]
G+QEFW(C+FWD)→Z[3]
G+QEMW(C+MWD)→Z[4]
A×cos(Z[1])→X
X+Bcos(Z[2])→X
X+Bcos(Z[3])→X
X+Acos(Z[4])→X
U+WX→X
Asin(Z[1])→Y
Y+Bsin(Z[2])→Y
Y+Bsin(Z[3])→Y
Y+Asin(Z[4])→Y
V+WY→Y
G+QEW(C+WD)+90→F
X+Zcos(F)→X
Y+Zsin(F)→Y
SUB2-FS(反算子程序)
G-90→T: Abs((Y-V)cos(T)-(X-U)sin(T)) → W: 0→ Z:Lbl 0:Prog "SUB1-ZS": T+QEW(C+WD)
→L: (J-Y)cos(L)-(I-X)sin(L) → Z:If Abs(Z)<1E-6(注:此处1E-6可输入0.000001):then
Goto1:Else W+Z → W:Goto 0:IfEnd
Lbl 1: 0→ Z:Prog "SUB1-ZS": (J-Y)÷sin(F)→ Z
SUB3-GC(高程子程序)
O-S→L:A-B→W:Abs(R*W÷2) →T:O-T→M:O+T→P
If S≤M:ThenG-L*B→H:Goto5:Else If S≤O:Then Goto3:Else If S≤P:Then Goto4:IfEnd:
IfEnd: IfEnd
Lbl3:If W>0:Then G+(M-S)2÷2÷R-L*B→H:Goto5: Else If W<0: Then
G-(M-S)2÷2÷R-L*B→H:Goto5: IfEnd: IfEnd
Lbl4:If W>O:Then G+( S-P)2÷2÷R-L*A→H:Goto5: Else If W<O: Then
G-( S-P)2÷2÷R-L*A→H:Goto5: IfEnd: IfEnd
Lbi5:H→H: Return
说明:(正算1秒,反算和超欠挖5秒完成)
所有程序名。不同线路,只需改动SJ-PM,SJ-GC,SJ-CQW三个子程序里的内容,其它不变。
1为正算,2为反算,3为超欠挖.
K= 正算时,输入所求点里程。 反算时得出里程结果
X=,Y= 正算时得出结果。 反算时输入实测坐标
P= 正算时输入偏距。 反算时得出偏距
H= 正算时得出高程。 反算时得出高程
H1= 超欠挖时输入实测高程
CQ→Y?= 得出超欠挖值及第几圆心上