                      高速公路坐标高程计算软件
    高速公路坐标高程计算软件是在多年的施工放样工作中总结出来的一个很有效的程序。
它是公路、铁路施工放样的好助手，可以帮你完成以前你用很大的精力和时间完成的计算。
它能在工作中给予很大的方便，使你能从繁琐的计算工作中解脱出来，你只要按要求将已
知的几个数据输入即可，并大大的提高了计算精确性和准确性。操作简便、实用，适合采
用坐标法放样，如具有全站仪和测距仪的测量放线工作，快速准确定位，很有推广价值。
    高速公路坐标高程计算软件可以帮你完成直线、圆曲线、缓和曲线(完全缓和曲线和
不完全缓和曲线)、S形曲线、复曲线、试车场高速环道布劳斯曲线的中桩和任意长度、任
意角度边桩坐标和高程的计算，并可根据你有要求加任意点的坐标。计算方法根据曲线是
否完整对称可以选择交点法计算和特殊点计算方法。生成的坐标成果可以直接通过数据线
导入全站仪，也可以导入Excel中便于打印，导入AUTOCAD中生成DWG图形，根据线形是否平
顺来检验坐标准确性。
    高速公路坐标高程计算软件应用于公路、铁路、等坐标高程计算，可用来计算桥梁桩基、
立柱、支座垫石、护栏、桥面系及涵洞通道坐标高程，可计算试车场高速环道布劳斯曲线坐
标，是施工放样和图纸坐标高程复核的好帮手，还可以用来复核工程上广泛应用的可编程计
算器CASIO 5800坐标高程避免出错。
    他是一个免费软件，没有任何限制。附送CASIO4850，5800程序及算法。
下载地址：天空软件站，搜索高速公路坐标高程计算。

本软件简要说明：
一、线元法计算平曲线（主程序）
1、J为起算点里程，C、D为起算点的X、Y坐标，F为起算点的切线方位角，R为圆曲线半径
（左偏取负，右偏取正），A、B为第一、第二缓和曲线回旋参数，O为圆曲线长度，Ki为该
分段的终点里程；
2、对于直线段或圆曲线段，起算点可取直线或圆曲线上的任意一点；
3、对于带第一、第二缓和曲线的平曲线段，起算点应取HY点；
4、K为所求点的里程，T、P为第一偏距、偏角，S、Z为第二偏距、偏角，偏角取从该点的
切线顺时针旋转的夹角；
5、分段法则：直线单独分段；单一的圆曲线单独分段；缓和曲线1+圆曲线+缓和曲线2为一
个整体单独分段，若不存在第一或第二缓和曲线（即不完全缓和曲线）仍然可以计算；
若不存在圆曲线，则O取零；
6、对于两圆夹一段缓和曲线分段这种类型，缓和曲线应该分到半径较小的那个圆上，因为
程序算法本来就是从HY和YH点小半径R向大半径∞方向进行推算的，不同于以往从ZH或HZ点计算，
从ZH或HZ点推算是从大半径∞向小半径R方向进行推算的。
这种情况下回旋参数A=根号下√abs(Ls*R1*R2/(R1-R2))，Ls为缓和曲线长，R1，R2为半径。
7、若第一或者第二缓和曲线不存在，此时A或B可取零；
8、F、Q切线方位角输入输出均为度.分秒的格式，例如153°24′05.24″=153.240524。
Q改变时，可按照新方位角为基准，结合第一第二偏距、偏角重新计算所求点；
9、输入平曲线参数后，默认为计算全线坐标，可修改来计算某段曲线，默认间距也可修改；
10、可参考CAD图《平曲线计算图例》；
11、生成的中桩CAD脚本设置成在世界坐标系下生成，注意的是世界坐标系与大地测量坐标系
的区别是XY坐标是互换的，否则画出的图形与实际相反。先打开CAD，设置好图层名称、颜色，
并设置为当前层，然后单击CAD的工具==>运行脚本==>选中生成的脚本文件即可。
12、输出的坐标结果可以导入到EXCEL中，操作办法为：打开EXCEL，然后把坐标数据复制到
单元格里，然后单击数据==>分列==>选中分隔符号==>下一步==>选中TAB键和逗号==>下一步
==>完成即可。下一次可直接在此表中粘贴，数据自动分列。

二、缓和曲线计算（辅助程序）
1、本程序为辅助程序，用来从ZH点或HZ点计算整条完全的缓和曲线，
若不知道HY点X、Y、Q参数，可用此程序计算出来，然后输入平曲线参数；
2、参数设置参考平曲线计算；
3、导出到EXCEL的办法同平曲线计算；

三、直线计算（辅助程序）
1、本程序为辅助程序，若已知P1（X1，Y1），P1-->P2的距离I及方位角J（度.分秒格式），
可计算坐标P2（X2，Y2）。

四、方位角计算
1、已知两点的坐标，可计算P1-->P2的距离及方位角；
2、角度可以进行加减运算。（单位：度.分秒格式）

五、竖曲线计算（主程序）
1、J为起算点里程，Y为起算点的高程，R为圆曲线半径（取绝对值），E、F为第一、
第二坡度，不带%号，例如2.5%的坡度就输入2.5,上坡取正值，下坡取负值；
2、K为所求点的里程，T为边桩到设计高程点的斜距，I为横坡，向外流水取正，
向中心流水取负，G为边桩的高程；
3、分段法则：以两竖曲线之间直线段中间的任意一点为分界，如上图中的K1、K2、K3；
注意分离式路基一般要单独分段，分段时如果从起点就开始变坡，第一个分段起点必须
与终点里程应相同或小1毫米，否则程序不能计算第一个分段的横坡；
4、无论任何时候R不能取零，否则可能导致被零除的错误；
5、可参考CAD图《竖曲线计算图例》；
6、导出到EXCEL的办法同平曲线计算；

六、交点法点计算平曲线（辅助程序）
1、交点法计算平曲线功能，是用来计算对称的完全缓和曲线的，如果特征点里程与图纸不符，
必须查明原因，比如是由断链或者不完全缓和曲线引起的。
2、最后一个交点如果R、Ls、T、L如果不知道，R随便输入一个不为零的数字比如111，
Ls、T、L输入零就可以了。

七、其他说明
1、本程序是在WINXP下编译的，如果在WIN98、WIN2000下运行提示少DLL文件的话可以从网
上下载,拷贝到%windir%\system及system32目录,并用示例的格式来注册。
2、本软件由心梦(QQ704728827)和陈晓猫(QQ43308724)共同编写完成，有错误欢迎指正。
EMAIL：liuzhao3@163.com。

    遥想当年光明顶上，碧水潭畔，紫衫如花，长剑胜雪，不知倾倒了多少豪杰。
                                             ——刘钊
                                                 2005-4-12
1.2版更新：
1、增加了直线上两点的方位角的计算；
2、增加了“生成PENTAX R-322N型全站仪文件”的按钮，生成的文件可直接导入全站仪；
3、通过Round()函数修正了各模块中切线方位角Q可能出现类似314.5960(60秒)的Bug；
4、在Win ME以下的操作系统中，由于该软件使用了CommonDialog的控件来进行文件输入输出，
可能要利用程序提供的“注册控件comdlg32.ocx”批处理文件来注册CommonDialog控件，
并安装VB6.0的运行库支持文件，否则程序可能运行不正常；

1.3版更新：
1、软件界面更改成标签样式，更直观；
2、默认可计算全线坐标、高程；
3、生成CAD中桩坐标设置在世界坐标系下生成；

1.4版更新：
1、坐标高程可以直接导出到Excel文件，当断面较少时可以导出到Excel文件，注意断面较多时
导出到Excel用的时间较长；

1.43版更新：
1、增加了直线及角度加减辅助计算功能。

1.44版更新：
1、修正了角度转换及角度加减为负数时的错误。
2、增加了直线计算中P1、P2点坐标拷贝功能。

1.5版更新：
1、增加了特征点辅助计算功能，用来计算对称的完全缓和曲线。
2、由于窗体上控件总数超过了255，把大部分的label改成了控件数组。

1.51版更新：
1、增加了取ZY点（直圆点）坐标方位角功能，用来计算直线直接接圆曲线时的特征点计算。
2、取ZH点（直缓点）、ZY点（直圆点）、HY点（缓圆点）的同时把分段终点里程计算出来，
如果与实际不相符要查明原因并修改。
3、再次声明的是缓1+圆+缓2是作为一个整体进行计算的，只要知道起算点（HY点）的坐标方位角及
圆半径R，回旋参数AB，圆曲线长O就可以计算缓1+圆+缓2上面的任意一点，分段的终点就是HZ点或公切点。
4、增加了根据交点参数生成平曲线参数的功能（仅供参考），把生成的平曲线参数载入到平曲线
计算页面就可以计算整条线路的中边桩坐标。
注意该功能预设的全线计算起点是第一个交点里程K1，把第一个交点K1到K1+T1之间的线型当成直线
来计算的，如果与设计不符要修改起点里程。
对于匝道类的不完全缓和曲线分段起点或终点等参数要改成与实际相符。
对于有断链情况，需要在断链处断开并处理。
实际里程短于设计里程叫短链； 
实际里程长于设计里程叫长链。
长链会出现两个一模一样的桩号，注意这两个桩号的坐标是不一样的。
短链就不一样了，你会发现中间会少一段。
用自动生成的平曲线参数计算坐标时，一定要进行复核，复核的方法很简单：
把生成的平曲线参数载入到平曲线计算页面→生成中桩的CAD脚本文件→打开CAD→工具→运行脚本→
选中生成的脚本文件→zoom→all，中桩一定很平顺，如果有某个地方断开，一定要查明原因并修改参数。
例如交点参数中圆半径R=4000，左偏要取-4000，右偏取+4000，看看是否忽略了正负号。

1.52版更新：
1、导出中桩坐标CAD脚本增加了Z=K和Z=0两个选项，Z=K可以在CAD中看到里程，
Z=0的时候计算平面面积(比如地界)很方便。
2、高程计算中起算点名字直接改成交点，避免误解。
3、注意坐标计算有两种方法：交点法和线元法。
交点法适用于对称的完全缓和曲线，就是先在特征点计算标签中输入各交点坐标及曲线要素==>
生成平曲线参数==>在平曲线标签中导入==>计算坐标。
线元法适用于线形复杂的任意曲线，比如含有不完全缓和曲线的匝道，按照分段原则，
先逐段输入各段起算点的坐标方位角及曲线要素==>保存==>计算坐标。

1.53版更新：
1、参考李运胜博士《布劳斯曲线在高速环道几何设计中的应用》及《高速环道几何线形的运动学评价》，高速环道是汽车试验场中专供汽车进行连续高速行驶试验的闭合循环跑道，其常用的几何设计方法有布劳斯曲线设计法和麦克康纳尔曲线设计法。在以上两种高速环道几何设计方法中，我国道路设计工作者对麦克康纳尔曲线设计方法已经有所了解，但对布劳斯曲线的研究却少之又少。目前中国已经建成投产的试车场有海南汽车试验场、定远总后汽车试验场、襄樊汽车试验场、通县交通部公路交通试验场、农安一汽汽车试验场等，其高速环道几何设计都无一例外地采用了麦克康纳尔曲线，但李运胜博士的研究成果表明:在同等设计条件下如果几何线形改用布劳斯曲线，则其高速环道的运动特性可以得到全面的提高。因此，在今后中国高速环道几何设计中，他推荐优先考虑采用布劳斯曲线作为高速环道的几何线形，以获得比麦克
康纳尔曲线更佳的运动学特性和行驶舒适性。
2、利用泰勒展开式和积分，我终于首次完成了布劳斯曲线的坐标方程推导，并在程序中增加了布劳斯曲线的分段计算。
主程序只需要按照原来的办法分段就行了，在ZH、HY、YH、HZ点断开，第一布劳斯曲线起算点是ZH点，第二布劳斯曲线起算点是HZ点，起算方位角是前进方向上的起算点方位角。中间圆曲线起算点可以是圆上的任意一点。

1.54版更新：（2011年2月23日）
1、修正了边桩高程起点横坡无法计算的问题。
2、把平曲线及竖曲线计算中里程间距、设计高程到中桩距离TS、边桩向下的差值保存到相应的参数文件中，避免下次打开重复输入。
3、把程序用Smart Install Maker5.02汉化版重新打包，避免360误判为木马的问题。
4、导出到excel格式水平和竖直方向居中，加边框线，外围边框线加粗。增加了设置顶端标题行和页边距、页脚功能，这个功能的增加虽然让打印更美观，但是也增加了导出到excel的时间，没办法，这是VBA的弱点。
5、增加从平曲线文件导入所求点桩号、第一偏距、偏角、第二偏距、偏角，固定基准切线方位角的功能，结果导出到excel或者cad中，便于计算桥梁涵洞通道坐标。(文件扩展名为wsc，淮息五标有样本)
文件格式，前3行是说明行，不能删除。
第4行输入桥梁涵洞基准切线方位角，格式为度.分秒，例如230度04分05秒输入230.0405，若在[0,360]度之间表示平行布置，否则表示径向布置。
涵洞通道一般为平行布置，盖板等长，0号和1号墙身平行，以涵洞中心里程切线方位角为基准方位角，横向轴线与该基准方位角成一定角度。
桥梁梁板长度相同，一般以桥梁中心桩号或者中心桩号前后的一个墩中心切线方位角为基准方位角，各墩台均与该基准方位角成一定角度，墩台平行，这种情况下是平行布置，该情况下墩台横向轴线与该墩台中心切线法方位角所成角度均不相等。如果各墩台分别与墩台中心切线方位角成一个固定夹角，这种情况下是径向布置。
第5行以后输入点号，里程，第一偏距，第一偏角，第二偏距，第二偏角，注意第一第二偏距均为斜距,用逗号隔开。
点号，里程，第一偏距，第一偏角，第二偏距，第二偏角
点号，里程，第一偏距，第一偏角，第二偏距，第二偏角
点号，里程，第一偏距，第一偏角，第二偏距，第二偏角
……
6、增加从竖曲线导入所求点桩号、偏距、偏角来批量计算高程的功能。(文件扩展名为zap，淮息五标有样本)
文件格式，文件前3行是说明行不能删除，从第4行开始是数据行。数据文件格式如下：
依次输入点号，里程，偏距，偏角，以英文逗号隔开，回车后输入下一行。
注意偏角输入的格式为度.分秒，例如80度04分05秒输入80.0405。
7、为了避免误解，把平曲线起算点名称在程序中明确提示。把竖曲线坡度是否带百分号在程序中明确提示。
8、在导出到cad脚本文件，Z=0模式下时，同时在cad中标出里程，便于查看里程。文字标注高度为间距的十分之一，如果标注了20m的间距，想要标注100m间距的大字体，只需要按照100m间距重新生成脚本文件，在cad中新建图层，然后工具→运行脚本文件即可看到，cad脚本文件是非常灵活的图形生成方式，支持不同cad版本，也可以直接在脚本文件中修改文字样式高度style之后生成。
9、布劳斯曲线改用辛普森法微积分来计算。Casio计算器程序中增加利用积分函数计算的说明。

1.55版更新：
1、明确线元法和交点法计算平曲线的标签。程序内部全局数组赋值前先清空数组便于多次载入不同曲线参数，变体变量和数组赋值用val()函数转换，避免出现错误。
2、导出到CAD中新建一个图层“特征点标注”，在这个新建图层中标明特征点，文字高度可以直接搜索“特征点标注”，“宋体”后就是文字高度。“里程标注”也是一样修改。
3、导出到excel中增加了是否导出特征点的提示。如果间隔等于终点里程-起点里程，可以输出全线特征点坐标方位角。

1.6版更新：（2011年4月2日更新）
1、增加了一个很实用的功能：载入正确的参数后直接生成卡西欧5800主程序,便于校核！
话说CASIO4800、4850已停产，4850计算器是这个系列中的经典，5800计算器运行慢，他的类BASIC语句让人觉得不上不下的，而且对程序不熟悉的人一不小心就会修改了程序，没办法，技术掌握在日本人手里，这里只生成5800程序。利用软件生成的CASIO主程序，输入卡西欧5800计算器后，输入配套的ZX,HUAN，YUAN,PQX,GC子程序就能够计算全线中边桩坐标高程了，边桩高程考虑线性超高和抛物线超高。
2、卡西欧程序用完了A～Z的26个字母变量，保证所有变量程序下次运行保留数值，对于系统专用微积分变量KLMN，以及系统极坐标算法的极径极角IJ有所保留，且没有扩充变量节约内存空间（一个变量占12字节）。尽可能用常用变量表达各参数意思，平竖曲线计算变量不冲突，各变量意义：
平曲线：AB缓1缓2回旋参数，CD起算点坐标，EF起算点方位角，GH边桩坐标，I左右偏判定，J起算点里程，K所求点里程，L缓和曲线长，MN置镜点坐标，O圆曲线长，P第一偏角，Q切线方位角，R圆曲线半径，S第二偏距，T第一偏距，UV切线支距坐标系坐标，W判定第一第二缓和曲线，XY中桩坐标，Z第二偏角。
竖曲线：KV中边桩里程，J起算点里程，Y交点高程，R书曲线半径，EF第一第二坡度不带百分号，T偏距左负右正，P偏角，H设计高程，G边桩高程。中间变量W坡度差，Q切线长，U曲线凸凹判定。

1.7版更新：
1、修正了生成卡西欧5800超高程序的一个bug，利用cdec函数提高计算精度。
2、增加线性超高和三次抛物线超高选项，每段均可以选择超高类型。
改变横坡参数存储格式，新版本的hpo文件保存了线性超高和三次抛物线超高类型。
3、增加宽度渐变计算，宽度参数扩展名kdu，每一段均可以选择超高类型,增加生成卡西欧5800计算器宽度渐变计算，导出特征点到excel时加黑体。注意匝道连接部两条线路之间的路基宽度，与两条路线中心线之间的距离有关，不是简单的线性渐变或者抛物线渐变，分段距离参照图纸连接部间距来设置，分段间距过大与图纸误差较大。因为超高计算和加宽计算公式很简单，生成CASIO 5800程序没有使用通用公式，直接在具体分段上列出公式，这样正常段落计算更简练。
4、对线元法参数进行简单的有效性检验，检验里程是否从小到大排列，检验两圆夹一缓类型分段终点是否有错误(正确的分段应该把缓分到半径小的圆)。加入里程从大到小的判定。
5、打开导出的文本文件名加上引号，打开含有空格目录的文件。
6、平曲线交点法计算考虑不等长缓和曲线，输入的参数有所变化。
老版本sct文件需要输入交点里程Kjd，交点坐标XY，圆半径R，缓和曲线长Ls1，切线长T1，曲线总长L。
新版本sct文件需要输入交点里程Kjd，交点坐标XY，圆半径R，缓1长Ls1,缓2长Ls2。
第一个交点的里程作为线元法计算的起点里程，其坐标作为定向用，不用输入半径和缓和曲线长参数。
第二个交点的里程用来推算下一个里程。
第三个交点及以后的交点输入坐标XY后，才能推算其里程，原理是K3=K2+D23-(T21+T22-Lz2)，碰到断链修改即可。建议输完所有的坐标之后从第三个交点开始推算交点里程，如果推算的里程与设计图纸有误差（由四舍五入引起），就以设计图纸为准。这样做减少了参数输入的工作量，可以从直线曲线及转角一览表中任意截取一段来计算。
最后一个交点里程是最后一段的HZ点，作为线元法计算的终点里程，坐标做定向用，不用输入半径和缓和曲线长参数。
7、增加了交点法圆曲线半径的判定，左偏取负右偏取正，与线元法对半径的正负取值保持一致。建议输完所有的交点坐标之后再判定。

1.8版更新：
1、在宽度计算标签中加入横断面生成CAD脚本和导出到Excel表格的功能，即土石方戴帽子的功能。所谓的戴帽子就是将原地面测量结果用断面图表示，再将设计高程在相应的原地面断面上表示出来，用以计算每个断面的挖方和填方的数量。但只能计算单纯的挖方或者填方的横断面积和数量，不能计算半填半挖段落的横断面积和方量，半挖半填段落面积需要在cad图形中用aa或者area命令点选拐点后按F2查看面积。
（1）设计线文件扩展名：sjx，格式如下：
说明：前3行是说明行不能删除，第4行之后是数据行。平距左负右正。
里程1,设计高程1，平距1，高差1，平距2，高差2，平距3，高差3……
里程2,设计高程1，平距1，高差1，平距2，高差2，平距3，高差3……
里程分段越小越好，一般间距为10米，间隔1米最好，可以由程序间隔一定距离自动生成，或者由excel表格配合“&”连接符号生成。
设计高程可以是最终路面顶，也可以是路床顶部或其他路基控制层面高程。高差是距路基某一控制层面的差值。
设计线文件最好通过excel生成，具体办法是首先载入宽度渐变参数，然后按照一定的间距或者lch里程文件生成左右幅的路基宽度，然后用excel计算路基某一控制层面的高度，利用excel的连接符“&”生成zap竖曲线点号、里程、偏距、偏角文件，在竖曲线中计算后分别生成左右幅设计标高，然后利用excel的连接符“&”生成设计线sjx文件。
注意第一个平距和最后一个平距高差一般是边坡上的点，边坡坡长一定要足够长(可以按照坡度把平距高差加大)，与原地面才有交点。
最后不能有空行。
（2）地面线文件扩展名：dmx，格式如下：
说明：前3行不能删除，第4行之后是数据行。平距左负右正。
里程1，平距1，高程1，平距2，高程2，平距3，高程3……
里程2，平距1，高程1，平距2，高程2，平距3，高程3……
地面线数据最好也通过excel生成，利用excel的连接符“&”直接生成以上格式。地面线数据里程要在设计线里程中存在才能计算横断面积。最后不能有空行。
（3）运行cad脚本文件之前，首先应该检查脚本输入的优先级。在cad中单击工具→选项→用户系统配置→坐标数据输入的优先级→选中第二个【键盘输入】→确定。
启动autocad→工具→运行脚本→选中生成的脚本文件之后就能够输出设计线各特征点的平距、高程、坡脚线或者开挖线的平距高程，生成地面线的平距高程，生成地面线和设计线。
cad分层如下：
中线：路基轴线放在这一层，长短划线。
中线标注：路基里程、设计高程、中桩高程、填挖高、横断面积放在这一层。
注意里程的格式可以在文本框中设置，类似excel，例如匝道的cad脚本可以设置为AK0+000、BK0+000……。
设计线：用红色线标出设计线位置。
设计线标注：绿色，标注引线、设计线各特征点的平距高程。
坡脚线标注：绿色，标注坡脚的引线、平距高程。
地面线：白色图层，存储地面线。
地面线平距：浅红色，存储地面线平距。
地面线标高：白色，存储地面线特征点标高。
不同的标注放在不同的图层关闭或者显示便于打印。如果间距较小，生成cad脚本的时间可能较长。
生成cad脚本默认的字体是true type仿宋字体，字体名是SimSun.ttc，但cad脚本只支持ttf和shx字体文件，ttc字体是通过字体名“宋体”来访问的，由于cad2008中采用宋体不能正常运行，所以默认字体采用仿宋字体，在脚本中可以把simfang.ttf修改为你想要的字体，必须是true type字体,例如华文仿宋.ttf等其他ttf字体即可。
2、由于excel页面设置需要时间太长，取消了页面设置功能。
3、竖曲线zap里程偏距偏角文件可以不输入点号，只需要输入里程偏距偏角即可。
4、在宽度计算标签中导出到excel时生成zas文件参数，参数引用的是相应单元格，可以在相邻单元格用公式计算路基任一控制层面的宽度，计算后选择性粘贴数值复制回去，zas文件格式如下：
说明：前3行是说明行不能删除，第4行之后是数据行。平距左负右正。
里程1，平距1，平距2，平距3，……
里程2，平距1，平距2，平距3，……
生成zas里程平距文件之后，在竖曲线计算标签中，单击编辑zas文件，新建或者打开一个zas文件，把excel生成的zas文件拷贝到第三行，载入之后就可以计算对应宽度的标高，并生成部分设计线sjx文件，坡脚的平距高差需要自己用公式调整输入，坡脚一定要足够长才能算出交线。生成sjx文件之后与dmx文件之后就可以戴帽子了。
5、完善了不完全缓和曲线辅助计算，主要用来辅助计算HY点坐标，需要输入YH或者HY点的里程确定计算范围。起算点可以是缓和曲线上任意一点，同时方位角必须是这个起算点对应的方位角，回旋参数A，B最好精确到小数点后4位数以上，否则有误差。半径为圆曲线半径，左负右正。

1.9版更新：
1、增加了交点法计算不完全缓和曲线的功能。在交点法计算中，如果遇到了不完全缓和曲线，只需要单击“手工输入AB”按钮，手工输入第一第二回旋参数就可以进行不完全缓和曲线计算。对于完全缓和曲线，A1=sqr(R*Ls1)，对于不完全缓和曲线，A1=sqr(|Ls1*R1*R2/(R1-R2)|)。切线长、曲线总长，偏角根据输入的参数自动计算。
2、提供了一个简单地生成交点CAD脚本的功能。生成CAD脚本之后，在CAD中单击工具→运行脚本→选中生成的脚本文件就可以画出交点位置。交点线和交点标注分别放在两个图层中。

2.0版更新：
1、完善交点法计算不完全缓和曲线的功能。一般交点法计算中，第一第二缓和曲线的半径都是靠近圆曲线方向半径减小，此时第一第二回旋参数AB取正值，对于两圆夹一缓这种卵形曲线，根据切点的选择位置不同，可能出现靠近圆曲线方向半径增大，此时AB应该输入负值，这种情况很少见。线元法中AB没有正负之分，取正值负值结果都一样。
2、考虑到交点法计算各种类型的复杂性及计算的准确性，各交点的里程仍然通过手工输入，而不是通过只输入起点里程来推算，这样容易处理断链，而且不会出现因为某一个交点计算错误造成其后所有的特征点都计算错误的问题。
3、对于卡西欧5800所需要的ZX、YUAN、HUAN、PQX、CEYI、GC等子程序，都在开始菜单里面有Word的快捷方式，密码是只读密码，防止被误修改的，单击只读即可打开。
4、360杀毒软件会提示有病毒属于360误判，请更换金山毒霸或者瑞星杀毒软件，他们也永久免费了。曾经因为360的误判更换了打包软件，后来被误杀情况太多了，甚至一个注册控件的bat文件和注册一个文件类型都被提示病毒，很无奈，索性懒得管了，没有必要为一个不入流的杀毒软件和菜鸟折腾。相信就用它，不相信不用就是了，免费软件，你有选择的自由。

2.1版更新：
1、完善交点法计算不完全缓和曲线导出到线元法参数中回旋参数的变化。
2、完善线元法计算中生成CAD脚本时标注重复的问题。
3、路基土石方戴帽子增加两个横断面间距输入，简化脚本加快绘图速度。
4、对于复杂断面设计线的生成可以利用excel计算各特征点平距高程之后另存为csv文件，会自动以逗号作为分隔符，如果有重复的逗号，先在excel中利用公式把逗号调整为偶数，然后批量替换两个逗号为一个逗号即可。
5、利用公式填充优化导出到excel的代码，提高导出到excel的速度。戴帽子增加设计高程、中桩高程、高差的显示。
6、竖曲线标签分开编辑zap、zas文件的选项，打开文件类型增加对这两种参数的过滤选择。
7、增加对不同小数位输出的一个简单文本框。

2.2版更新：
1、增加已知坐标反算里程偏距的功能。反算里程偏距因为一直觉得用处不大，一直没有考虑，实现起来也非常简单。结合卡西欧4850可编程计算器说下利用切线迭代法计算的算法及主要思路，只要算法成熟高效通用，无论用计算器或者是软件实现起来不过是几行代码而已。
MNK:                              提示输入所求点P的坐标MN以及大致里程K
Lbl 1:Prog "ZK"◢                 调用正算程序ZK首先计算近似里程K点的中桩坐标方位角XYQ
Pol(M-X,N-Y):                     计算K点到P点的距离方位角IJ
J<0→J=J+360△                    如果J小于0，调整到[0,360)之间
ABS(I*cos(J-Q))>0.001→            如果KP的方位角与P点的方位角之差不等于90度或270度就继续迭代
K=K+I*cos(J-Q):goto 1:            利用切线长作迭代增量迭代
≠→                              如果垂直就显示里程偏距KT
"K=":K◢                          显示反算出的里程K
"T=":T=I*sin(J-Q)/ABS(sin(J-Q))△ 显示反算出的偏距I，左负右正
切线迭代法的算法来自于重庆交通大学土木建筑学院冯晓教授的论文《不同类型缓和曲线的正算与反算的通用算法》。
①利用变量重用尽可能避免扩充变量，因为扩充变量占用内存空间得不偿失。
②反算的算法要高效通用。切线迭代法收敛于真值的速度很快，直线段1次即可收敛，其他曲线5次左右就可以达到精度要求。正算是反算的基础，正算的算法大家研究的很多了，判断点位落在哪个曲线段是通过正算程序来判断的，因此无论是那种线形，例如直线、圆、回旋线、麦克康纳尔曲线、布劳斯曲线、各种高次抛物线、半波正弦线等等种类繁多的200多种缓和曲线，只要正算能算出来，以上代码都可以反算出里程偏距。
③ZK可以分成两部分，不用显示输出的XYQTPSZGH，把ceyi子程序分离即可，而显示参数可以达到正反合一，不再详述。
④反算程序的精度要根据实际情况调整，没有必要过分追求精度，以上精度可以达到0.001m，想要更高精度，减小余弦值即可。
⑤要考虑无解和多解的情况，多解的情况最高效的办法还是通过输入大致里程的办法来减少避免多解。5800如下：
?M:?N:?K:
Lbl 1:Prog "ZK"◢ 
if ABS(I*cos(J-Q))>0.001 :then
K+I*cos(J-Q)→K:goto 1:
else
"K=":K◢
I*sin(J-Q)/ABS(sin(J-Q))→T："T=":T◢
:ifend

2.21版更新：
1、增加了从excel文件导入XYK批量反算里程偏距的功能。excel格式，前两行是表头，第三行开始是数据行，内容依次为X坐标，Y坐标，大致里程Kd，反算里程K，反算偏距T，大致里程输入全线起点里程即可。

2.3版更新：
1、导出到excel时只创建一个excel进程，如果已经有打开的excel进程，就利用这个进程新建工作表，只创建一个excel进程的好处是在两个工作表中可以复制粘贴公式，否则只能以对象方式粘贴纯文字，还减小了内存的开销。
2、从lch导入里程、从zap、zas导入宽度数据时，为了便于拷贝到土方计算表中，输出到excel增加了单行双行的选择。
3、利用excel的indirect间接引用函数提供了一个简单的《单行双行转换模板.xls》，把需要转换的数据粘贴过去即可。

2.4版更新：
1、从zas导入宽度数据时，导出到excel中显示各断面左右幅横坡，生成的sjx设计线文件以填方段1:1.5坡比为例。

2.5版更新：
1、竖曲线计算，按照一定的间距导出到excel时，同时导出左右幅横坡，左右边桩标高按照文本框中距中桩距离确定。
2、土石方戴帽子，设计线增加了平距高程的格式，格式和地面线类似：
说明：前3行不能删除，第4行之后是数据行。平距左负右正。
里程1，平距1，高程1，平距2，高程2，平距3，高程3……
里程2，平距1，高程1，平距2，高程2，平距3，高程3……

2.6版本：
1、对一些按钮进行重新排版，使之更美观。

2.7版本：
1、平曲线、缓和曲线、交点法生成cad脚本时，默认以脚本名字为基础，增加三个图层，分别为中桩、里程标注、特征点标注。
例如如果输入生成脚本名字为AK，那么在cad中会增加AK中桩、AK里程标注、AK特征点标注三个图层，运行脚本后会把当前层设置为0层。
增加了图层颜色的设置框，1红色 2黄色 3绿色 4青色 5蓝色 6洋红 7白 8灰，可以查看cad颜色索引1-249。
2、修改了zap，zas的浮动提示。zap为斜交单偏距文件，zas为正交多偏距文件。

2.8版本：
1、增加了直接从excel导入点号、里程、偏距偏角来计算桩位坐标的功能，注意excel格式必须用设定好的格式，开始菜单有格式，这个格式也可以通过建立wsc文件导出后获得，基准切线方位角，格式为度.分秒，例如230度04分05秒输入230.0405，若在[0,360]度之间表示平行布置，否则表示径向布置。路基一般为径向布置，就是与该点的切线方位角垂直，所以基准方位角随便输入一个负值即可。
2、增加了直接从excel导入点号、里程、偏距偏角来计算任意交角边桩高程的功能，注意excel格式必须用设定好的格式，开始菜单有格式，这个格式也可以通过建立zap文件导出后获得。






