CASIO fx-5800P放样程序(优化)

声明:编程使用的通用积分公式出自李艳阳前辈!在此致敬!
     本程序加入了测站,方便喜爱用方位角、平距放样的朋友!
正算主程序[KB-MN]
?X:?Y
Lbl 1:Fix 3:X→S:?K:?B:90→A
Prog“YS-1”:Prog“ZDYS”:S→X:M-X+×10-9→I:N-Y+×10-9→J:Pol(I,J):J<0=>J+360→J:Cls:Locate 1,1,“J=”:Locate 4,1, J°:Locate 1,2,“I=”:Locate 9,2,I:Locate 1,3,“M=”:Locate 6,3,M:Locate 1,4,“N=”:Locate 7,4,N◢
Cls:Goto 1
反算主程序[MN-KB]
?K
Lbl 0:Fix 3:?M:?N:M→E:N→Q
Lbl 1:90→A:0→B:Prog“YS-1”:Prog“ZDYS”
Pol(E-M+×10-9,Q-N+×10-9):Isin(L-J)→A:Icos(L-J)→B
If Abs(A)>0.001:Then K+A→K:Goto 1:Else Cls:Locate 1,1,“K=”:Locate 7,2, K:Locate 1,3,“B=”:Locate 9,4,B◢
IfEnd:Goto 0
数据库子程序[YS-1]
If K<线元终点里程:Then线元起点切线方位角→C:线元起点X坐标→U:线元起点Y坐标→V:线元起点里程→O:线元长度→F:±线元起点曲率半径(左转为负,直线及右转为正)→P:±线元止点曲率半径→R:Return:IfEnd
If K<下一线元终点里程:Then线元起点切线方位角→C:线元起点X坐标→U:线元起点Y坐标→V:线元起点里程→O:线元长度→F:±线元起点曲率半径→P:±线元止点曲率半径(左转为负,直线及右转为正)→R:Return:IfEnd

子程序[ZDYS]
0.5(1÷R -1÷P)÷F→D:K-O→X
U+∫(cos(C+180(X÷P+DX2)÷π,0,X)→M
V+∫(sin(C+180(X÷P+DX2)÷π,0,X)→N
C+180(X÷P+DX2)÷π+A→L:M+Bcos(L)→M:N+Bsin(L)→N

正算主程序[KB-MN]
输入:X—测站X坐标   Y—测站Y坐标    K—桩号     B—距中(左负 右正 中零)

结果:J=测站到放样点的方位角             I=测站到放样点的平距
     M=放样点X坐标                      N=放样点Y坐标

若果求斜交时边桩坐标,主程序[KB-MN]中90→A修改为 斜交角度→A

反算主程序[MN-KB]
输入:K—待反算点附近的大概桩号   M—待反算点X坐标    N—待反算点Y坐标

结果:K=反算点的桩号        B=反算点的距中(左负 右正 中零)

备注:字母后所带数字为次方,如:DX2式中2均为平方。
1、当线元为直线时,其起点、止点的曲率半径为无穷大,以10的45次代替。
2、当线元为圆曲线时,无论其起点、止点与什么线元相接,其曲率半径均等于圆弧的半径。
3、当线元为完整缓和曲线时,起点与直线相接时,曲率半径为无穷大,以10的45次代替;与圆曲线相接时,曲率半径等于圆曲线的半径。止点与直线相接时,曲率半径为无穷大,以10的45次代替;与圆曲线相接时,曲率半径等于圆曲线的半径。
4、当线元为非完整缓和曲线时,起点与直线相接时,曲率半径等于设计规定的值;与圆曲线相接时,曲率半径等于圆曲线的半径。止点与直线相接时,曲率半径等于设计规定的值;与圆曲线相接时,曲率半径等于圆曲线的半径。
优化:SENDY  CHAN    QQ:82811489



本程序经过优化,减少了数据库的字节,同时可以计算多条线路,修改如下:
正算主程序[KB-MN]
“1,2,3,4,5”?Z:?X:?Y
Lbl 1:Fix 3:X→S:?K:?B:90→A
Z=1=>Prog“YS-1”
Z=2=>Prog“YS-2”
Z=3=>Prog“YS-3”
Z=4=>Prog“YS-4”
Z=5=>Prog“YS-5”
Prog“ZDYS”:S→X:M-X→I:N-Y→J:Prog“C”:Cls:Locate 1,1,“J=”:Locate 4,1, J°:Locate 1,2,“I=”:Locate 9,2,I:Locate 1,3,“M=”:Locate 6,3,M:Locate 1,4,“N=”:Locate 7,4,N◢
Cls:Goto 1
反算主程序[MN-KB]
“1,2,3,4,5”?Z:?K
Lbl 0:Fix 3:?M:?N:M→E:N→Q
Lbl 1:90→A:0→B
Z=1=>Prog“YS-1”
Z=2=>Prog“YS-2”
Z=3=>Prog“YS-3”
Z=4=>Prog“YS-4”
Z=5=>Prog“YS-5”
Prog“ZDYS”:Pol(E-M+×10-9,Q-N+×10-9:Isin(L-J→A:Icos(L-J→B
If Abs(A)>0.001:Then K+A→K:Goto 1:Else Cls:Locate 1,1,“K=”:Locate 7,2, K:Locate 1,3,“B=”:Locate 9,4,B◢
IfEnd:Goto 0
数据库子程序[YS-1]
If K<线元终点里程:Then线元起点切线方位角→C:线元起点X坐标→U:线元起点Y坐标→V:线元起点里程→O:线元长度→F:±线元起点曲率半径(左转为负,右转为正,直线为零)→P:±线元止点曲率半径(左转为负,右转为正,直线为零)→R:Return:IfEnd
If K<下一条线元终点里程:Then线元起点切线方位角→C:线元起点X坐标→U:线元起点Y坐标→V:线元起点里程→O:线元长度→F:±线元起点曲率半径(左转为负,右转为正,直线为零)→P:±线元止点曲率半径(左转为负,右转为正,直线为零)→R:Return:IfEnd
子程序[C]
I+×10-9→I:J+×10-9→J:Pol(I,J:J<0=>J+360→J
子程序[ZDYS]
P=0=>×1045→P:R=0=>×1045→R:0.5(1÷R -1÷P)÷F→D:K-O→X
U+∫(cos(C+180(X÷P+DX2)÷π,0,X)→M
V+∫(sin(C+180(X÷P+DX2)÷π,0,X)→N
C+A+180÷π(X÷P+DX2→L:M+Bcos(L→M:N+Bsin(L→N

正算主程序[KB-MN]
输入:1,2,3,4,5—选择待正算的线路
X—测站X坐标   Y—测站Y坐标    K—桩号     B—距中(左负 右正 中零)
结果:J=测站到放样点的方位角             I=测站到放样点的平距
M=放样点X坐标                   N=放样点Y坐标
若果求斜交时边桩坐标,主程序[KB-MN]中90→A修改为 斜交角度→A
反算主程序[MN-KB]
输入:1,2,3,4,5—选择待反算的线路
K—待反算点附近的大概桩号   M—待反算点X坐标    N—待反算点Y坐标
结果:K=反算点的桩号        B=反算点的距中(左负 右正 中零)

使用说明:字母后所带数字为次方,如:DX2式中2为平方。
1、当线元为直线时,其起点、止点曲率半径为零。
2、当线元为圆曲线时,无论其起点、止点与什么线元相接,其曲率半径均等于圆弧的半径。
3、当线元为完整缓和曲线时,起点与直线相接时,曲率半径为零;与圆曲线相接时,曲率半径等于圆曲线的半径。止点与直线相接时,曲率半径为零;与圆曲线相接时,曲率半径等于圆曲线的半径。
4、当线元为非完整缓和曲线时,起点与直线相接时,曲率半径等于设计规定的值;与圆曲线相接时,曲率半径等于圆曲线的半径。止点与直线相接时,曲率半径等于设计规定的值;与圆曲线相接时,曲率半径等于圆曲线的半径。


From:SENDY  CHAN    QQ:82811489

网友评论(9 条)

  1. Guest 2010-01-21 15:31

    错误提示在子程序[ZDYS]
    0.5(1÷R -1÷P)÷F→D:K-O→X
    R的后面,,帮忙分析下原因,,输入字符无误

  2. Guest 2010-01-23 03:06

    反算主程序[MN-KB]
    ?K
    Lbl 0:Fix 3:?M:?N:M→E:N→Q
    Lbl 1:90→A:0→B:Prog“YS-1”:Prog“ZDYS”
    Pol(E-M+×10-9,Q-N+×10-9):Isin(L-J)→A:Icos(L-J)→B
    里面的+×怎么同时出现了

  3. Guest 2010-04-02 01:43

    怎么运行了半天都不出来

  4. zhangsongxu888 2010-04-09 13:16

    顶李艳阳程序简单实用

  5. 一刀斩春风 2010-11-17 09:49

    好东西,不过现在我觉得用这样的计算方式,有点过时了

  6. 晓明明 2010-12-30 13:41

    可有步骤简明的计算。

  7. zyb8686 2011-06-12 02:34

    不错不错

  8. lft20 2011-12-11 12:10

    我用的也是积分这个程序,很好用。但是有一定的误差。谁能帮帮分析分析

  9. wzp07331 2012-04-15 09:36

    谢谢学习学习中

发表评论

您的邮箱不会被公开。* 为必填项