5800道路程序终极版文档格式.docx
《5800道路程序终极版文档格式.docx》由会员分享,可在线阅读,更多相关《5800道路程序终极版文档格式.docx(14页珍藏版)》请在冰点文库上搜索。
LbiB
Prog"
ZBJS"
坐标正算
Fix3:
Cls
;
设置三位小数
ZH="
Locate4,1,G
第一行显示桩号
X="
Locate3,2,X
第二行显示X(N)坐标
Y="
Locate3,3,Y ;
第三行显示Y(E)坐标
GCJS"
高程计算
Z"
Locate2,4,Z+Z[C+41]
;
第四行显示Z坐标
Locate10,4,B
;
第四行显示横向距离
0→I
Do:
I+1→I:
I=1000=>
Goto1:
LpWhileNot(Getkey=57OrGetkey=27OrGetkey=26);
锁定键盘,并在几十秒后自动返回
Getkey=57=>
Goto1
IfGetkey=26=>
Prog"
SDFY"
GotoB:
EndIf
Pol(Z[C+35]-X,Z[C+36]-Y)
DL"
Locate3,1,I:
Locate12,1,Z[C+45]
→"
Locate3,2,B:
Locate12,2,Z[C+49]
FWJ"
J<
0=>
J+360→J:
J◤DMS◢
J→Z[C+46]
I→Z[C+47]
Goto1
FileName:
SDFY隧道放样
Z[C+2]→V
Z[C+41]→D
Z[C+43]→I:
DQD-Z"
I→Z[C+43]
Z[C+42]→J:
R"
J→Z[C+42]
Z[C+40]→K:
R-DL"
K:
K→Z[C+40]
Abs(V-K)→P
√(P2+(I-Z-D)2)→U
计算实际半径
Locate4,1,G
Locate2,2,U
Locate10,2,U-J
IfI-Z-D-J>
0:
ThenI-Z-D-√(J2-P2)→P:
0→O
ElseIfP-J>
0:
ThenP-√(J2-(I-Z-D)2)→O:
0→P
ElseP-√(J2-(I-Z-D)2)→O:
I-Z-D-√(J2-P2)→P
IfEnd:
IfEnd
H"
Locate2,3,O
Locate8,3,"
V"
Locate9,3,P
Locate1,4,Z+D
Locate9,4,I
0→T
T+1→T:
T=1000=>
Return:
LpWhileNot(Getkey=57OrGetkey=27);
Return
IfV-K>
ThenV-O→B:
ElseV+O→B:
ZBJS
坐标计算程序
READDAT"
Rad
G-M→Q
IFAR=0:
ThenIfA=R:
Then1→J:
Else3→J:
ElseIfA=R:
Then2→J:
Else3→J:
IfEnd判断线元类型
IfJ=1:
ThenH→F:
N+QCos(H)→X:
E+QSin(H)→Y:
直线段直接计算
IfJ=2:
ThenH+QR→F:
Rec(Abs(2Sin(Abs(0.5QR))÷
R),H+QR÷
2):
N+I→X:
E+J→Y:
圆弧段直接计算
IfJ=3:
ThenGoto5:
X+BCos(F+W)→X
Y+BSin(F+W)→Y
Lbi5
用五点通用坐标计算计算缓和段
0.5(R-A)÷
L→K
AQ→I
KQ2→J
0.0469100770→P:
H+IP+JP2→O
0.2307653449→P:
H+IP+JP2→T
0.5→P
:
H+IP+JP2→D
0.7692346551→P:
H+IP+JP2→F
0.9530899230→P:
H+IP+JP2→P
0.1184634425→I
0.2393143352→J
0.2844444444→Y
N+Q(ICos(O)+JCos(T)+YCos(D)+JCos(F)+ICos(P))→X
E+Q(ISin(O)+JSin(T)+YSin(D)+JSin(F)+ISin(P))→Y
H+AQ+KQ2→F
TURNZH(坐标反算)
INNEZ"
Z[C+37]→U
Z[C+38]→V
0→B:
M+L÷
2→G:
LbiS:
U-X→I:
V-Y→J
IfI=0AndJ=0:
ThenGotoA:
Pol(I,J)
LbiA:
Rec(I,J-F)
G+I→G:
IFAbs(I)>
0.0001:
GotoS↙
J→B
G→Z[C+1]
J→Z[C+2]
INNEZ实测坐标输入程序
LblS:
Cls
Z[C+50]=2=>
Z[C+37]→I
I<
DQD-N"
I
输入待求点N坐标
I→Z[C+37]
Z[C+38]→I:
DQD-E"
输入待求点E坐标
I→Z[C+38]
输入实测高程
I→Z[C+43]
Lbi1
I=-1=>
Then2→Z[C+50]
IfI=-2:
INFWJDLDH"
Z[C+50]=1=>
GotoS
INFWJDLDH 实测坐标(用方位角,距离,高差)输入程序
Z[C+46]→J:
DQD-FWJ"
J
Z[C+47]→I:
DQD-DL"
Z[C+48]→K:
DQD-DZ"
K→Z[C+48]
Z[C+49]→P:
RHT"
P:
P→Z[C+49]
Rec(I,J)
Z[C+35]+I→Z[C+37]
Z[C+36]+J→Z[C+38]
Z[C+44]+Z[C+45]+K-P→Z[C+43]
IfJ=-2:
1→Z[C+50]
WORK-SET测站设置程序
50→C
Z[C+32]→I:
DAT123"
I→Z[C+32]
平曲线要素数库类型选择1为内置式,2文件式,3实时输入(查看当前要素值)
Z[C+4]→I:
0123"
I→Z[C+4]
选择本程序模式0为坐标正算,1坐标反算,2横向边仰坡放样,3,纵向边仰坡放样(隧道进出口用到)
Z[C+41]→I:
GC-DH"
I→Z[C+41]
放样点高差常数
Z[C+35]→I:
STATION-N"
I→Z[C+35]
设置测站N坐标
Z[C+36]→I:
STATION-E"
I→Z[C+36]
设置测站E坐标
Z[C+44]→I:
STATION-Z"
I→Z[C+44] 设置测站Z坐标
Z[C+45]→I:
STATION-HI"
I→Z[C+45]
设置仪高
PROGMODE程序功能模式选择
Z[C+4]→I
I=0=>
Return
正算模式
I=1=>
TURNZH"
反算模式
I=2=>
HXBYP"
横向边仰坡放样模式
I=3=>
ZXBYP"
纵向边仰坡放样模式
HXBYP
横向边仰坡放样程序
Z[C+40]→I:
QPD-DL"
I→Z[C+40]
输入起坡点与中桩距离常数
QPD-DZ"
输入起坡点与中桩高差常数
Z[C+42]→I:
i"
I→Z[C+42]
输入边仰坡坡度,左仰坡(路堑)为正,右仰坡(路堑)为负,左边坡为负,右边坡为正
输入实测高程
(Z[C+43]-Z-Z[C+41])Z[C+42]+Z[C+40]→B
B-Z[C+2]◢显示与设计位置的偏差
B→Z[C+2]
ZXBYP
纵向仰坡放样程序(隧道进口使用)
Z[C+33]→I:
QPD-ZH"
I→Z[C+33]
输入起坡点桩号
Z[C+34]→I:
QPD-Z"
I→Z[C+34]
输入起坡点高程
仰坡时(隧道进出口仰坡,进口为正,出口为负)
Z[C+42](Z[C+43]-Z[C+34])+Z[C+33]→G
G-Z[C+1]◢显示与设计位置的偏差
SET设置程序
50→Z[C+22]本程序设置变量个数目前50个刚刚够用。
0→K
Z[C+5]→I:
1Or2"
I→Z[C+5]
选择1线或者2线
180Z[C+3]÷
π→J:
XZJJ"
Jπ÷
180→Z[C+3] ;
斜桩夹角
IfI=1:
ThenZ[C+8]→Z[C+6]:
Z[C+9]→Z[C+7]
Z[C+12]→Z[C+16]:
Z[C+13]→Z[C+17]:
Z[C+18]→Z[C+20]
ElseZ[C+10]→Z[C+6]:
Z[C+11]→Z[C+7]
Z[C+14]→Z[C+16]:
Z[C+15]→Z[C+17]:
Z[C+19]→Z[C+20]
Z[C+7]+3→Z[C+31]
0→I:
1PQX,2SQX,3YSDS"
1输入平曲线要素,2输入竖曲线要素,3输入1、2线夹平竖曲线交点(变坡点)数量以让程序规划内存建立要素数据为,其它值退出本程序
I≠0=>
DATLOCK"
I=1=>
Goto1:
I=2=>
Goto2:
I=3=>
Goto3
SETPFDYS"
Lbi1 ;
平曲线要素输入部分
Z[C+6]→D
-1→Z[D+3]
For1→JToZ[C+16]
PQX"
Locate9,1,J
Z[D+1]→I:
N"
I→Z[D+1]
请输入N坐标
Z[D+2]→I:
E"
I→Z[D+2]
请输入E坐标
Z[D+3]→I:
I→Z[D+3]
请输入半径R
Z[D+4]→I:
LS1"
I→Z[D+4]
请输入缓和曲线1长度
Z[D+5]→I:
LS2"
I→Z[D+5]
请输入缓和曲线2长度
D+5→D
Next
1→Z[D-2]
Lbi2
竖曲线要素输入部分
Z[C+7]→D
For1→JToZ[C+17]
SQX"
BPDZH"
请输入变坡点桩号
BPDGC"
I→Z[D+2]
请输入变坡点高程
D+3→D
1→Z[D]
Lbi3
要素点数输入部分
Z[C+12]→I:
1PQXDS"
I→Z[C+12]
输入1线平曲线点数,最小值为3
Z[C+13]→I:
1SQXDS"
I→Z[C+13]
输入1线竖曲线点数,最小值为3
Z[C+18]→I:
1JDZH"
I→Z[C+18]
输入1线平曲线第一个交点的交点桩号
Z[C+14]→I:
2PQXDS"
I→Z[C+14]
输入2线平曲线点数,最小值为3
Z[C+15]→I:
2SQXDS"
I→Z[C+15]
输入2线竖曲线点数,最小值为3
Z[C+19]→I:
2JDZH"
I→Z[C+19]
输入2线平曲线第一个交点的交点桩号
C+Z[C+22]→Z[C+8]
1线路平曲线要素指针偏移基数
Z[C+8]+5Z[C+12]→Z[C+9]
1线路竖曲线要素指针偏移基数
Z[C+9]+3Z[C+13]→Z[C+10]
2线路平曲线要素指针偏移基数
Z[C+10]+5Z[C+14]→Z[C+11]
2线路竖曲线要素指针偏移基数
Z[C+11]+3Z[C+15]→Z[C+21]
要素数据库结束指针
Z[C+21]+1→Z[C+30]
Z[C+21]→DimZ
增加额外变量
-1→K
SETPFDYS
交点要素=>
分段要素
Z[C+6]+5→D
Z[C+21]+1→F
F+6→DimZ
-1→Z[F]
设置分段要素开始标志
Z[C+20]→V
从数据库读入当前线第一个平曲线交点桩号
0→G
Pol(Z[D+1]-Z[D-4],Z[D+2]-Z[D-3])
;
计算第一条直线的距离I,计算方位角J
J→H
Z[D-4]→Z[F+1]
直线段
Z[D-3]→Z[F+2]
V-I→Z[F+3]
For1→GToZ[C+16]-2
计算第本交点与下一交点的距离I,计算方位角J
J→H
Pol(Z[D+6]-Z[D+1],Z[D+7]-Z[D+2])
I→W:
J-H→K
计算转角K,负值是左转角,正值是右转角
IFAbs(K)>
π:
ThenIfK>
ThenK-2π→K:
ElseK+2π→K:
Z[D+3]→R
从数据库读入半径R
Z[D+4]→L
从数据库读入缓和曲线1长度
Z[D+5]→M
从数据库读入缓和曲线2长度
L÷
2÷
R→B
计算缓和曲线1的B0角
M÷
R→O
计算缓和曲线2的B0角
(Abs(K)-B-O)R→P
计算圆曲线长度
L2÷
24÷
R-L^(4)÷
2384÷
R^(3)→Q
内移值计算方法2
2-L^(3)÷
240÷
R2→S
切线增长值计算方法2
M2÷
R-M^(4)÷
R^(3)→J
2-M^(3)÷
R2→I
Abs(π÷
2-Abs(K))→A
Rtan(Abs(K÷
2))+S+J÷
Cos(A)-QTan(A)→T
计算切线1
2))+I+Q÷
Cos(A)-JTan(A)→U
计算切线2
H<
H+2π→H
1→A
K<
0=>
-1→A
H→Z[F+4]
0→Z[F+5]
0→Z[F+6]
F+6→F
Rec(T,H) 缓和段1
Z[D+1]-I→N
Z[D+2]-J→E
N→Z[F+1]
E→Z[F+2]
V-T→Z[F+3]
L=0=>
GotoA
A÷
R→Z[F+6]
LbiA 圆弧段
0→J
GotoB
Pol(L-L^(3)÷
40÷
R2,L2÷
6÷
R-L^(4)÷
336÷
R^(4))
Rec(I,H+AJ)
N+I→N
E+J→E
V-T+L→Z[F+3]
H+AB→Z[F+4]
R→Z[F+5]
M=0=>
GotoC
缓和段2
Rec(2RSin(0.5P÷
R),H+AB+AP÷
R÷
2)
V-T+L+P→Z[F+3]
H+AB+AP÷
R→Z[F+4]
LbiC
Rec(U,H+K)
Z[D+1]+I→Z[F+1]
Z[D+2]+J→Z[F+2]
V-T+L+P+M→Z[F+3]
V-T+L+P+M-U+W→V
H+K→Z[F+4]
F+9→DimZ
1→Z[F+7]
V→Z[F+9]
要素终点桩号
Deg
READDAT
Z[C+32]→I
READDAT3"
If G<
MOrG>
M+L
Then;
验证要素是否可用,否则重设要素
READDAT1"
READDAT2"
READDAT1平曲线分段要素读取程序1
Z[C+30]→F
Lbi1
搜索要素
IfG<
Z[F+3]:
Then
-1=Z[F]=>
GotoE:
F-6→F:
-1→J:
Else1=Z[F+1]=>
-1=J=>
Goto2:
1→J:
F+6→F:
Lbi2
F→Z[C+30]
Z[F+1]→Z[C+23] 当前分段要素N坐标
Z[F+2]→Z[C+24] 当前分段要素E坐标
Z[F+3]→Z[C+25] 当前分段要素起点桩号
Z[F+4]→[C+26] 当前分段要素起点方位角(正北)
Z[F+5]→Z[C+27] 当前分段要素起点曲率有左偏负右偏正(注意不半径)
Z[F+6]→Z[C+28]
当前分段要素终点曲率有左偏负右偏正(注意不半径)
Z[F+9]-Z[F+3]→Z[C+29]
当前分段要素长度
LbiE
ERROR"
READDAT2 文件请输入内容为以下内容以便测试结果与本文一致。
π÷
180→J
30008.396:
ThenCls:
Stop:
IfEnd↙;
判断待求桩号是否小于本要素起点,如小于就停止运行程序
30661.038(终点里程):
Then2851422.090(起点X)→N:
513896.440(起点Y)→E:
30008.396→M:
213°
32′52″J(起点方位角)→H:
0(起点曲率)→A:
0(终点曲率)→R:
652.642起点至终点长度→L:
IfEnd↙
30921.038:
Then2850878.162→N:
513535.768→E:
30661.038→M:
32′52″J→H:
0→A:
1÷
1300→R:
260→L:
31426.367:
Then2850666.478→N:
513385.004→E:
30921.038→M:
219°
16′39″J→H:
1300→A:
505.328→L:
31686.367:
Then2850346.483→N:
512998.015→E:
31426.367→M:
241°
32′56″J→H:
0→R:
IfG>
判断待求桩号是否大于本要素终点,如大于就停止运行程序
N→Z[C+23]:
E→Z[C+24]:
M→Z[C+25]:
H→Z[C+26]:
A→Z[C+27]:
R→Z[C+28]:
L→Z[C+29]
READ