5800道路程序终极版

更新时间:2024-03-15 20:39:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

5800道路程序终极版

功能:

坐标正反算(含高程),把要素内置化(无需改程序文件,即可更换路线,同时存两条线要素) 另含两个边仰(一个横向坡,一个纵向坡)坡放样模块.

程序浏览:

FileName:RESET 初始化程序

Norm 1:50→C:12345→J

\PW\ 为数据库增加额外变量500个,在SET、SETPFDYS程序根据实际再增减变量 50→Z[C+22]

\ 重设要素保护密码 Cls:Stop

FileName:DATLOCK 要素保护密码确定认程序 Cls:Norm 1:50→C

\ 2008-08-07修改

FileName:SHELL(外壳程序)

50→C ;在扩充变量预留前50个给别的程序用。如不够就适量加大。RESET,SHELL,SET,SETPFDYS,这几个程序中C值必需一致

Z[C+35]→I:\TION-N\ 设置测站N坐标 Z[C+36]→I:\TION-E\ 设置测站E坐标 Z[C+44]→I:\TION-Z\ 设置测站Z坐标 Z[C+45]→I:\TION-HI\ 设置仪高

Z[C+41]→I:\-DH\ 放样点高差常数

Norm 1

Z[C+23]→N 当前分段要素N坐标 Z[C+24]→E 当前分段要素E坐标 Z[C+25]→M 当前分段要素起点桩号

Z[C+26]→H 当前分段要素起点方位角(正北)单位:弧度

Z[C+27]→A 当前分段要素起点曲率有左偏负右偏正(注意不半径) Z[C+28]→R 当前分段要素终点曲率有左偏负右偏正(注意不半径) Z[C+29]→L 当前分段要素长度 Z[C+3]→W

Z[C+32]→I:\ 平曲线要素数库类型选择1为内置式,2文件式,3实时输入(查看当前要素值) 0→I

Z[C+4]→I:\ 选择本程序模式默认为坐标正算,1坐标反算,2横向边仰坡放样,3,纵向边仰坡放样(隧道进出口用到)

- 1 -

Lbi 1

Z[C+4]→I

I=1=>Prog\I=2=>Prog\I=3=>Prog\Lbi A

Deg:Norm 1:Cls

Z[C+1]→G:\ ;G桩求桩号

Z[C+2]→B:\ ;B横向距离,左正右负 Lbi B

Prog \;坐标正算 Prog \;高程计算

Fix 3:Cls ;设置三位小数 \=\ ;第一行显示桩号 \=\第二行显示X(N)坐标

\=\ ;第三行显示Y(E)坐标 Prog \;高程计算

\ ;第四行显示Z坐标 Locate 10,4,Z[C+2] ;第四行显示横向距离 0→I

Do:I+1→I:I=1000=>Goto 1:LpWhile Not(Getkey=57 Or Getkey=27) ;锁定键盘,并在几十秒后自动返回

Getkey=57=> Goto 1

Z+Z[C+41]+Z[C+49]-Z[C+44]-Z[C+45]→Z[C+48] Pol(Z[C+35]-X,Z[C+36]-Y)

Cls:\\\

J<0=>J+360→J:J◤DMS◢ 2008-08-07 修改 J→Z[C+46] I→Z[C+47] Goto 1

FileName:ZBJS 坐标计算程序

Prog\Rad

G-M→Q

IF AR=0 :Then If A=R :Then 1→J:Else 3→J :IfEnd:Else If A=R :Then 2→J:Else 3→J:IfEnd:IfEnd If J=1 :Then H→F:N+QCos(H)→X:E+QSin(H)→Y:IfEnd 直线段直接计算

If J=2 :Then H+QR→F:Rec(Abs(2Sin(Abs(0.5QR))÷R),H+QR÷2):N+I→X:E+J→Y:IfEnd 圆弧段直接计算

If J=3 :Then Goto 5 :IfEnd X+BCos(F+W)→X Y+BSin(F+W)→Y

- 2 -

Deg:Return

Lbi 5 用五点通用坐标计算计算缓和段 0.5(R-A)÷L→K AQ→I KQ2→J

0.0469100770→P:H+IP+JP2→U 0.2307653449→P:H+IP+JP2→V 0.5→P :H+IP+JP2→D 0.7692346551→P:H+IP+JP2→F 0.9530899230→P:H+IP+JP2→T 0.1184634425→I 0.2393143352→J 0.2844444444→O

N+Q(ICos(U)+JCos(V)+OCos(D)+JCos(F)+ICos(T))→X E+Q(ISin(U)+JSin(V)+OSin(D)+JSin(F)+ISin(T))→Y H+AQ+KQ2→F X+BCos(F+W)→X Y+BSin(F+W)→Y Deg:Return

FileName:TURNZH(坐标反算)

Norm 1

Z[C+37]→I:\-N\ 输入待求点N坐标 I=-1=>Prog\

Z[C+38]→I:\-E\ 输入待求点E坐标 0→B:M+L÷2→G:Prog\Lbi S:Rad

Z[C+37]-X→I:Z[C+38]-Y→J

If I=0 And J=0 :Then Goto A:IfEnd Pol(I,J)

Lbi A:Rec(I,J-F):J→Z[C+2]

G+I→G:IF Abs(I)>0.0001 :Then Prog\↙ G→Z[C+1]

FileName:INFWJDLDH 实测坐标(用方位角,距离,高差)输入程序Deg:Norm 1:Cls

Z[C+46]→J:\-FWJ\ Z[C+47]→I:\-DL\ Z[C+48]→K:\-DZ\ Z[C+49]→P:\ 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]

- 3 -

FileName:HXBYP 横向边仰坡放样程序

Cls:Norm 1

Z[C+40]→I:\-DL\ 输入起坡点与中桩距离常数 Z[C+41]→I:\-DZ\ 输入起坡点与中桩高差常数

Z[C+42]→I:\ 输入边仰坡坡度,左仰坡(路堑)为正,右仰坡(路堑)为负,左边坡为负,右边坡为正

Cls:Z[C+43]→I:\-Z\ 输入实测高程 Prog\Prog \

(Z[C+43]-Z-Z[C+41])Z[C+42]+Z[C+40]→B Fix 3:B-Z[C+2]◢ 显示与上一次测点的偏差 B→Z[C+2]

FileName:ZXBYP 纵向仰坡放样程序(隧道进口使用)

Cls:Norm 1:Z[C+33]→I:\-ZH\ 输入起坡点桩号 Z[C+34]→I:\-Z\+34] 输入起坡点高程

Z[C+42]→I:\ 仰坡时(隧道进出口仰坡),进口为正,出口为负) Cls:Z[C+43]→I:\-Z\ 输入实测高程 Prog\

Z[C+42](Z[C+43]-Z[C+34])+Z[C+33]→G Fix 3:G-Z[C+1]◢ 显示与上一次测点的偏差 G→Z[C+1]

FileName:SET 设置程序

1\\Lbi S 2\\Norm 1 3\\50→C

4\\50→Z[C+22] 5\\0→K

6\\Z[C+5]→I:\ ;选择1线或者2线

7\\180Z[C+3]÷π→J:\ ;斜桩夹角 8\\If I=1:Then Z[C+8]→Z[C+6]:Z[C+9]→Z[C+7]

9\\Z[C+12]→Z[C+16]:Z[C+13]→Z[C+17]:Z[C+18]→Z[C+20] 10\\Else Z[C+10]→Z[C+6]:Z[C+11]→Z[C+7]

11\\Z[C+14]→Z[C+16]:Z[C+15]→Z[C+17]:Z[C+19]→Z[C+20] 12\\IfEnd

13\\Z[C+7]+3→Z[C+31]

14\\0→I:\ ;1输入平曲线要素,2输入竖曲线要素,3输入1、2线夹平竖曲线交点(变坡点)数量以让程序规划内存建立要素数据为,其它值退出本程序

15\\I≠0=>Prog\ 2008-07-28 18:23修改

16\\I=1 => Goto 1:I=2 => Goto 2:I=3 => Goto 3 2008-07-28 18:23修改

- 4 -

17\\Prog\18\\Stop

19\\Lbi 1 ;平曲线要素输入部分 20\\Z[C+6]→D 21\\-1→Z[D+3]

22\\For 1→J To Z[C+16] 23\\Cls:\

24\\Z[D+1]→I:\ ;请输入N坐标 25\\Z[D+2]→I:\ ;请输入E坐标 26\\Z[D+3]→I:\[D+3] ;请输入半径R

27\\Z[D+4]→I:\ ;请输入缓和曲线1长度 28\\Z[D+5]→I:\ ;请输入缓和曲线2长度 29\\D+5→D 30\\Next

31\\1→Z[D-2] 32\\Goto S

33\\Lbi 2 ;竖曲线要素输入部分 34\\Z[C+7]→D 35\\-1→Z[D+3]

36\\For 1→J To Z[C+17] 37\\Cls:\

38\\Z[D+1]→I:\ ;请输入变坡点桩号 2008-08-07修改 39\\Z[D+2]→I:\ ;请输入变坡点高程 2008-08-07修改 40\\Z[D+3]→I:\ ;请输入半径R 2008-08-07修改 41\\D+3→D 42\\Next 43\\1→Z[D] 44\\Goto S

45\\Lbi 3 ;要素点数输入部分

46\\Z[C+12]→I:\ ;输入1线平曲线点数,最小值为3 47\\Z[C+13]→I:\ ;输入1线竖曲线点数,最小值为3

48\\Z[C+18]→I:\ ;输入1线平曲线第一个交点的交点桩号 49\\Z[C+14]→I:\ ;输入2线平曲线点数,最小值为3 50\\Z[C+15]→I:\ ;输入2线竖曲线点数,最小值为3

51\\Z[C+19]→I:\ ;输入2线平曲线第一个交点的交点桩号 52\\C+Z[C+22]→Z[C+8] 1线路平曲线要素指针偏移基数

53\\Z[C+8]+5Z[C+12]→Z[C+9] 1线路竖曲线要素指针偏移基数 54\\Z[C+9]+3Z[C+13]→Z[C+10] 2线路平曲线要素指针偏移基数 55\\Z[C+10]+5Z[C+14]→Z[C+11] 2线路竖曲线要素指针偏移基数 56\\Z[C+11]+3Z[C+15]→Z[C+21] 要素数据库结束指针 57\\Z[C+21]+1→Z[C+30]

58\\Z[C+21]→DimZ 增加额外变量 59\\-1→K 60\\Goto S

- 5 -

FileName:SETPFDYS 交点要素=>分段要素

1\\Norm 1 2\\50→C 3\\Rad

4\\Z[C+6]+5→D 5\\Z[C+21]+1→F 6\\F+6→DimZ

7\\-1→Z[F] 设置分段要素开始标志

8\\Z[C+20]→V ; 从数据库读入当前线第一个平曲线交点桩号 9\\0→G

10\\Pol(Z[D+1]-Z[D-4],Z[D+2]-Z[D-3]) ;计算第一条直线的距离I,计算方位角J 11\\J→H

12\\Z[D-4]→Z[F+1] 直线段 13\\Z[D-3]→Z[F+2] 14\\V-I→Z[F+3]

15\\For 1→G To Z[C+16]-2

16\\Pol(Z[D+1]-Z[D-4],Z[D+2]-Z[D-3]) ;计算第本交点与下一交点的距离I,计算方位角J 17\\J→H 2008-08-07 修改

18\\Pol(Z[D+6]-Z[D+1],Z[D+7]-Z[D+2])

19\\I→W:J-H→K ;计算转角K,负值是左转角,正值是右转角 2008-08-07 修改 20\\IF Abs(K)>π:Then If K>0:Then K-2π→K:Else K+2π→K:IfEnd:IfEnd 21\\Z[D+3]→R ;从数据库读入半径R

22\\Z[D+4]→L ;从数据库读入缓和曲线1长度 23\\Z[D+5]→M ;从数据库读入缓和曲线2长度 24\\L÷2÷R→B ;计算缓和曲线1的B0角 25\\M÷2÷R→O ;计算缓和曲线2的B0角 26\\(Abs(K)-B-O)R→P ;计算圆曲线长度 27\\L2÷24÷R-L^(4) ÷2384÷R^(3) →Q ;内移值计算方法2 28\\L÷2-L^(3) ÷240÷R2→S ;切线增长值计算方法2 29\\M2÷24÷R-M^(4) ÷2384÷R^(3) →J ;内移值计算方法2 30\\M÷2-M^(3) ÷240÷R2→I ;切线增长值计算方法2 31\\Abs(π÷2- Abs(K)) →A 32\\Rtan(Abs(K÷2))+S+J÷Cos(A)-QTan(A)→T ;计算切线1 33\\Rtan(Abs(K÷2))+I+Q÷Cos(A)-JTan(A)→U ;计算切线2 34\\H<0=>H+2π→H 35\\1→A

36\\K<0 =>-1→A 37\\H→Z[F+4] 38\\0→Z[F+5] 39\\0→Z[F+6] 40\\F+6→F 41\\F+6→DimZ

42\\Rec(T,H) 缓和段1 43\\Z[D+1]-I→N 44\\Z[D+2]-J→E

- 6 -

45\\N→Z[F+1] 46\\E→Z[F+2] 47\\V-T→Z[F+3] 48\\L=0=>Goto A 49\\H→Z[F+4] 50\\0→Z[F+5] 51\\A÷R→Z[F+6] 52\\F+6→F 53\\F+6→DimZ

54\\Lbi A 圆弧段 55\\0→I:0→J 56\\L=0=>Goto B 57\\Pol(L-L^(3)÷40÷R2,L2÷6÷R-L^(4)÷336÷R^(4)) 58\\Lbi B

59\\Rec(I,H+AJ) 60\\N+I→N 61\\E+J→E 62\\N→Z[F+1] 63\\E→Z[F+2]

64\\V-T+L→Z[F+3] 65\\H+AB→Z[F+4] 66\\A÷R→Z[F+5] 67\\A÷R→Z[F+6] 68\\F+6→F 69\\F+6→DimZ

70\\M=0=>Goto C 缓和段2 71\\Rec(2RSin(0.5P÷R),H+AB+AP÷R÷2) 72\\N+I→N 73\\E+J→E 74\\N→Z[F+1] 75\\E→Z[F+2]

76\\V-T+L+P→Z[F+3] 77\\H+AB+AP÷R→Z[F+4] 78\\A÷R→Z[F+5] 79\\0→Z[F+6] 80\\F+6→F 81\\F+6→DimZ 82\\Lbi C

83\\Rec(U,H+K) 84\\Z[D+1]+I→Z[F+1] 85\\Z[D+2]+J→Z[F+2] 86\\V-T+L+P+M→Z[F+3]

87\\V-T+L+P+M-U+W→V 88\\D+5→D 89\\Next

90\\H+K→Z[F+4]

- 7 -

91\\0→Z[F+5] 92\\0→Z[F+6] 93\\F+9→DimZ 94\\1→Z[F+7]

95\\V→Z[F+9] 要素终点桩号 96\\Deg

FileName:READDAT

Z[C+32]→I

I=3=>Prog\

If GM+L :Then ;验证要素是否可用,否则重设要素 I=1=>Prog\ I=2=>Prog\ Prog\IfEnd

FileName:READDAT1 平曲线分段要素读取程序1

Z[C+30]→F 0→J

Lbi 1 搜索要素 If G

-1=Z[F]=>Goto E:F-6→F:-1→J:Goto 1

Else 1=Z[F+1]=>Goto E:-1=J=>Goto 2:1→J:F+6→F:Goto 1 IfEnd Lbi 2

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] 当前分段要素长度 Return Lbi E Cls

\Stop

FileName:READDAT2 平曲线分段要素读取程序2

文件请输入内容为以下内容以便测试结果与本文一致。

π÷180→J

- 8 -

Goto 1

Lbi 1

If G<30008.396:Then Cls:Stop:IfEnd↙ ;判断待求桩号是否小于本要素起点,如小于就停止运行程序

If G<30661.038(终点里程):Then 2851422.090(起点X)→N:513896.440(起点Y)→E:30008.396→M:213°32′52″J(起点方位角)→H:0(起点曲率)→A:0(终点曲率)→R:652.642起点至终点长度→L:Goto E:IfEnd↙ If G<30921.038:Then 2850878.162→N:513535.768→E:30661.038→M:213°32′52″J→H:0→A:1÷1300→R:260→L:Goto E:IfEnd↙ If G<31426.367:Then 2850666.478→N:513385.004→E:30921.038→M:219°16′39″J→H:1÷1300→A:1÷1300→R:505.328→L:Goto E:IfEnd↙ If G<31686.367:Then 2850346.483→N:512998.015→E:31426.367→M:241°32′56″J→H:1÷1300→A:0→R:260→L:Goto E:IfEnd↙

If G>31686.367:Then Cls:Stop:IfEnd↙ ;判断待求桩号是否大于本要素终点,如大于就停止运行程序 Lbi E

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]

FileName:READDAT3 平曲线分段要素读取程序3

Norm 1

Z[C+23]→N:?N:N→Z[C+23] 当前分段要素N坐标 Z[C+24]→E:?E:E→Z[C+24] 当前分段要素E坐标 Z[C+25]→M:\ 当前分段要素起点桩号 180Z[C+26]÷π→H:H◤DMS◢

\ 当前分段要素起点方位角(正北)单位:度分秒 Z[C+27]→A:\ 当前分段要素起点曲率有左偏负右偏正(注意是半径的倒数)

Z[C+28]→R:\ 当前分段要素终点曲率有左偏负右偏正(注意是半径倒数)

Z[C+29]→L:?L:L→Z[C+29] 当前分段要素长度 Return

FileName:GCJS 高程计算

Z[C+31]→D 0→J Lbi S

D→Z[C+31] Z[D-2]→I Z[D-1]→V

- 9 -

Z[D+1]→K Z[D+2]→O (O-V)÷(K-I)→U Z[D+4]→I Z[D+5]→V (V-O)÷(J-K)→V

U-V→Z ;为正时是凸型竖曲线,负是时为凹竖曲线 Z[D+3]→I ;读入半径 Abs(IZ)÷2→T ;切线长

If G

If J=1 Or Z[D]=-1 :Then UG-UK+O→Z :Return:IfEnd ;计算高程Z -1→J:D-3→D:Goto S

Else If G0=>-I→I

O-UT+UQ+I→Z ;计算高程Z Return

Else If G0=>-I→I

O+VT+VQ+I→Z ;计算高程Z Return

Else If J=-1 Or Z[D+3]=1 :Then O+VG-VK→Z ;计算高程Z Return

Else 1→J:D+3→D:Goto S IfEnd :IfEnd:IfEnd:IfEnd

- 10 -

本文来源:https://www.bwwdw.com/article/64m8.html

Top