




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、基于VB道路曲线放样程序设计II程序设计界面及使用说明本程序本文即在实践基础上编写了基于VB的道路放样程序,该程序可以在已知道路曲线基本要素的情况下,计算出道路中桩和边桩的坐标数据,将这些数据直接导入全站仪或GPS中,直接利用点放样的功能即可将道路的中桩或边桩在实地标定出来。设计界面包括以下几种控件:Label(标签)、Text Box(文本框)、Frame(框架)、Command Button(命令按钮)、option button(选择按钮)。应用本程序计算时,可以选择是单点计算或者连续点计算。选择不同的计算方式时,需要输入的已知数据时不同的。在程序运行时首先显示程序登陆界面如下图3-2所
2、示,输入登录密码后页面自动跳转到程序计算界面如下图3-3所示,该界面会将部分控件暂时隐藏,在选择相应的控件时会逐一显示所有控件。程序登陆界面模式选择本文主要编写了两个程序,一个是道路单圆曲线放样程序,另一个是道路缓和曲线放样程序,当我们使用程序时,在这里需要根据实际情况选择计算模式,然后确定。3.4.2单圆曲线坐标法计算程序单圆曲线计算界面程序说明:首先要进行曲线数据输入,要输入曲线半径R,交点里程,桩距,交点坐标,两转点坐标,根据这些已知数据,可以计算出曲线要素,其中包括圆曲线切线长T,曲线长L,曲线外矢距E,还有切曲差q,根据以上已知数据和计算结果,可以计算出各主点里程及坐标。根据给出的两
3、转点坐标,我们知道曲线计算区间,而后可计算出所有的放样数据。因为现在公路放样主要用的是全站仪,为了方便,可以把放样数据的计算结果直接以TXT格式保存,当我们工作需要时,直接可以导入到全站仪中。计算结果: 计算结果图此图便是程序计算结果,其中包括曲线数据输入,曲线要素计算,计算主点里程及坐标,还有最后的放样数据,界面清晰简洁明了,程序操作简单方便。主要代码Private Sub Command1_Click()Dim YJD As Double, XJD As Double, XZD1 As Double, YZD1 As Double, XZD2 As Double, YZD2 As Doub
4、leDim XZY As Double, YZY As Double, XYZ As Double, YYZ As Double, XQZ As Double, YQZ As DoubleDim Xi As Double, Yi As DoubleDim a1 As Double, a2 As Double, a3 As Double, a As DoubleDim L As Double, T As Double, E As Double, q As DoubleDim ZYLC As Double, YZLC As Double, QZLC As Double, JDLC As Doubl
5、eDim R As Single, JJ As Single, N As Single, S As Single, M As Double, O As StringDim pi As DoubleR = Val(Text1.Text)JDLC = Val(Text2.Text)JJ = Val(Text3.Text)N = 1pi = 3.1415926YJD = Val(Text5.Text)XJD = Val(Text4.Text)XZD1 = Val(Text6.Text)YZD1 = Val(Text7.Text)XZD2 = Val(Text8.Text)YZD2 = Val(Tex
6、t9.Text)R = Val(Text1.Text)a1 = Atn(YJD - YZD1) / (XJD - XZD1)a2 = Atn(YZD2 - YJD) / (XZD2 - XJD)If a2 - a1 < 0 Thena = pi + a2 - a1a3 = a1 - 0.5 * (pi - a) + piEnd IfIf a2 - a1 > 0 Thena = a2 - a1End IfL = R * aT = R * Tan(a / 2)E = R * (1 / (Cos(a / 2) - 1)q = 2 * T - LZYLC = JDLC - TYZLC =
7、ZYLC + LQZLC = YZLC - (L / 2)XZY = XJD - T * Cos(a1)YZY = YJD - T * Sin(a1)XYZ = XJD + T * Cos(a2)YYZ = YJD + T * Sin(a2)XQZ = XJD + E * Cos(a3)YQZ = YJD + E * Sin(a3)Text11.Text = Format(L, ".000")Text10.Text = Format(T, ".000")Text12.Text = Format(E, ".000")Text13.Tex
8、t = Format(q, ".000")Text14.Text = "K" & (ZYLC 1000) & "+" & Format(ZYLC - (ZYLC 1000) * 1000, ".000")Text15.Text = "K" & (YZLC 1000) & "+" & Format(YZLC - (YZLC 1000) * 1000, ".000")Text16.Text = "K&q
9、uot; & (QZLC 1000) & "+" & Format(QZLC - (QZLC 1000) * 1000, ".000")3.4.3缓和曲线极坐标法计 输入界面程序说明:首先输入已知数据,曲线半径R,角度观测值,缓和曲线长,交点里程,然后单击计算里程数据按钮,曲线综合要素值(包括圆曲线切线长T,圆曲线长L,曲线外矢距E,切曲差q),各主点里程就会展现出来,当输入放样桩距,单击计算放样数据,缓和曲线各段中的详细放样数据就计算出来了,因为放样桩距不定,计算结果的多少就不一定,为了展示出所有的计算结果,这里使用List控件
10、,但这也带来了不方便的结果,就是计算结果无法以txt的格式保存。曲线要素及主点里程计算结果当计算工作开始时,依次输入已知数据,曲线半径R,角度观测值,缓和曲线长L0,交点里程,单击计算里程数据按钮,就可以得到曲线综合要素值和各主店的里程数据,如果想继续计算详细放样数据,输入放样桩距,单击计算放样桩距,如果不需要,单击返回按钮。如果不需要继续计算,直接单击返回按钮。输入放样桩距实际公路工程放样中,为了放出详细桩位,需要计算详细的放样数据,包括每个桩点的偏角和距直缓点的距离(因为放样时,全站仪架设在直缓点),此时,直接输入放样桩距,然后单击计算放样数据按钮,详细的放样数据就计算出来了。放样数据计算
11、结果图此图完整的展现了从已知数据输入(曲线半径R,角度观测值,缓和曲线长L0,交点里程)到放样数据(zh-hy的放样数据,hy-yh的放样数据,hz-yh的放样数据)结果的展示,在此过程中还计算出了曲线综合要素值。这里说明一点前面的单圆曲线程序中结果放在一个Label中,而这里放在了3个List中,是因为缓和曲线的个计算单位的数学模型不同,也是为了清晰明了的展示计算结果。计算结束,单击返回按钮,回到上一层。主要代码Dim R As Single, a As Single, a1 As Integer, a2 As Integer, a3 As Single, L0 As Single, t A
12、s Single, L As Single, e As Single, q As Single, aa As SingleDim ll As Integer, tt(1 To 100) As SingleDim m As Double, p As Double, b As Double, jd As Single, zh As Single, hy As Single, qz As Single, hz As Single, yh As SingleConst pi = 3.1415926, ff = 206265Private Sub Command1_Click()R = Val(Text
13、1.Text)a1 = Val(Text2.Text)a2 = Val(Text15.Text)a3 = Val(Text16.Text)a = a1 + a2 / 60 + a3 / 3600L0 = Val(Text3.Text)m = L0 / 2 - L0 3 / (240 * R 2)p = L0 2 / (24 * R)b = L0 * 180 / (2 * R * pi)t = (R + p) * Abs(Tan(a / 2 * pi / 180) + mL = pi / 180 * R * (a - 2 * b) + 2 * L0e = (R + p) / Abs(Cos(a
14、/ 2 * pi / 180) - Rq = 2 * t - LText4.Text = tText5.Text = LText6.Text = eText7.Text = qjd = Val(Text8.Text)zh = jd - thy = zh + L0qz = zh + L / 2hz = zh + Lyh = hz - L0aa = jd + t - qIf (aa <> hz) Then MsgBox "请确认计算正确", "0,48,0", "数据检查" Exit SubElseText9.Text = z
15、hText10.Text = hyText11.Text = qzText12.Text = hzText13.Text = yhEnd IfEnd Sub数据的导出与保存计算完成后,点击界面保存按钮,数据会自动保存在(D:放样数据),生成txt格式。3-10保存结果图计算结束后,可以打开D盘,查看计算结果。附录 程序代码1. 单圆曲线Private Sub Command1_Click()Dim YJD As Double, XJD As Double, XZD1 As Double, YZD1 As Double, XZD2 As Double, YZD2 As DoubleDim XZY
16、 As Double, YZY As Double, XYZ As Double, YYZ As Double, XQZ As Double, YQZ As DoubleDim Xi As Double, Yi As DoubleDim a1 As Double, a2 As Double, a3 As Double, a As DoubleDim L As Double, T As Double, E As Double, q As DoubleDim ZYLC As Double, YZLC As Double, QZLC As Double, JDLC As DoubleDim R As
17、 Single, JJ As Single, N As Single, S As Single, M As Double, O As StringDim pi As DoubleR = Val(Text1.Text)JDLC = Val(Text2.Text)JJ = Val(Text3.Text)N = 1pi = 3.1415926YJD = Val(Text5.Text)XJD = Val(Text4.Text)XZD1 = Val(Text6.Text)YZD1 = Val(Text7.Text)XZD2 = Val(Text8.Text)YZD2 = Val(Text9.Text)R
18、 = Val(Text1.Text)a1 = Atn(YJD - YZD1) / (XJD - XZD1)a2 = Atn(YZD2 - YJD) / (XZD2 - XJD)If a2 - a1 < 0 Thena = pi + a2 - a1a3 = a1 - 0.5 * (pi - a) + piEnd IfIf a2 - a1 > 0 Thena = a2 - a1End IfL = R * aT = R * Tan(a / 2)E = R * (1 / (Cos(a / 2) - 1)q = 2 * T - LZYLC = JDLC - TYZLC = ZYLC + LQ
19、ZLC = YZLC - (L / 2)XZY = XJD - T * Cos(a1)YZY = YJD - T * Sin(a1)XYZ = XJD + T * Cos(a2)YYZ = YJD + T * Sin(a2)XQZ = XJD + E * Cos(a3)YQZ = YJD + E * Sin(a3)Text11.Text = Format(L, ".000")Text10.Text = Format(T, ".000")Text12.Text = Format(E, ".000")Text13.Text = Forma
20、t(q, ".000")Text14.Text = "K" & (ZYLC 1000) & "+" & Format(ZYLC - (ZYLC 1000) * 1000, ".000")Text15.Text = "K" & (YZLC 1000) & "+" & Format(YZLC - (YZLC 1000) * 1000, ".000")Text16.Text = "K" &
21、; (QZLC 1000) & "+" & Format(QZLC - (QZLC 1000) * 1000, ".000")Text17.Text = Format(XZY, ".000")Text18.Text = Format(YZY, ".000")Text19.Text = Format(XYZ, ".000")Text20.Text = Format(YYZ, ".000")Text21.Text = Format(XQZ, ".000&
22、quot;)Text22.Text = Format(YQZ, ".000")Label26.Caption = "桩号里程" & " X" & " Y" & vbCrLfLabel26.Caption = Label26.Caption & "K" & (ZYLC 1000) & "+" & Format(ZYLC - (ZYLC 1000) * 1000, ".000") & Format
23、(XZY, " .000") & Format(YZY, " .000") & vbCrLfIf ZYLC Mod JJ <> 0 ThenZYLC = ZYLC + (JJ - (ZYLC Mod JJ)End IfDo While (ZYLC + N * JJ) < YZLCXi = XZY + 2 * R * Sin(ZYLC + N * JJ) / 2 / R) * Cos(a1 + (ZYLC + N * JJ)Yi = YZY + 2 * R * Sin(ZYLC + N * JJ) / 2 / R) * S
24、in(a1 + (ZYLC + N * JJ)M = ZYLC + SS = JJ * NN = N + 1If M - QZLC > 0 And M - QZLC < JJ ThenLabel26.Caption = Label26.Caption & "K" & (QZLC 1000) & "+" & Format(QZLC - (QZLC 1000) * 1000, ".000") & Format(XQZ, " .000") & Format(YQ
25、Z, " .000") & vbCrLfEnd IfLabel26.Caption = Label26.Caption & "K" & (M 1000) & "+" & Format(M - (M 1000) * 1000), "000") & " " & Format(Xi, " .000") & Format(Yi, " .000") & vbCrLfLoopLabel26.Cap
26、tion = Label26.Caption & "K" & (YZLC 1000) & "+" & Format(YZLC - (YZLC 1000) * 1000), ".000") & Format(XYZ, " .000") & Format(YYZ, " .000")2. 缓和曲线Dim R As Single, a As Single, a1 As Integer, a2 As Integer, a3 As Single, L0 As
27、Single, t As Single, L As Single, e As Single, q As Single, aa As SingleDim ll As Integer, tt(1 To 100) As SingleDim m As Double, p As Double, b As Double, jd As Single, zh As Single, hy As Single, qz As Single, hz As Single, yh As SingleConst pi = 3.1415926, ff = 206265Private Sub Command1_Click()R
28、 = Val(Text1.Text)a1 = Val(Text2.Text)a2 = Val(Text15.Text)a3 = Val(Text16.Text)a = a1 + a2 / 60 + a3 / 3600L0 = Val(Text3.Text)m = L0 / 2 - L0 3 / (240 * R 2)p = L0 2 / (24 * R)b = L0 * 180 / (2 * R * pi)t = (R + p) * Abs(Tan(a / 2 * pi / 180) + mL = pi / 180 * R * (a - 2 * b) + 2 * L0e = (R + p) /
29、 Abs(Cos(a / 2 * pi / 180) - Rq = 2 * t - LText4.Text = tText5.Text = LText6.Text = eText7.Text = qjd = Val(Text8.Text)zh = jd - thy = zh + L0qz = zh + L / 2hz = zh + Lyh = hz - L0aa = jd + t - qIf (aa <> hz) Then MsgBox "请确认计算正确", "0,48,0", "数据检查" Exit SubElseTex
30、t9.Text = zhText10.Text = hyText11.Text = qzText12.Text = hzText13.Text = yhEnd IfEnd SubPrivate Sub Command2_Click()Dim i As Integer, j As Integer, c As Single, e As Integer, f As Integer, d As SingleDim zhhy(0 To 100) As Single, bb(0 To 100) As Single, xc(0 To 100) As Single, pj(0 To 100) As Singl
31、eDim hyyh(0 To 100) As Single, yhhz(0 To 100) As SingleList1.ClearList2.ClearList3.ClearList1.AddItem "放样偏角 ,放样距离"List2.AddItem "放样偏角 ,放样距离"List3.AddItem "放样偏角 ,放样距离"ll = Text14.Textzhhy(0) = zhc = zh + llc = (c 20) * llzhhy(1) = ci = 1Do While c < hyc = c + lli = i
32、+ 1zhhy(i) = cLoopzhhy(i) = hyFor j = 0 To i - 1xc(j) = zhhy(j + 1) - zhhy(0)pj(j) = xc(j) * xc(j) * ff / (6 * R * L0)e = pj(j) 3600f = (pj(j) - e * 3600) 60d = pj(j) - e * 3600 - f * 60bb(j) = xc(j)List1.AddItem e & "度 " & f & "分 " & Format(d, "#.#") &a
33、mp; "秒 " & "," & Format(bb(j), "#.#")Nexthyyh(0) = hyc = hy + llc = (c 20) * llhyyh(1) = ci = 1Do While c < qzc = c + lli = i + 1hyyh(i) = cLoophyyh(i) = qzc = qz + llc = (c 20) * lli = i + 1hyyh(i) = cDo While c < yhc = c + lli = i + 1hyyh(i) = cLoophyyh(i) = yhFor j = 0 To i - 1xc(j) = hyyh(j + 1) - hyyh(0)pj(j) = (xc(j) * ff) / (2 * R)bb(j) = 2 * R * Sin(pj(j) / ff)e = pj(j) 3600f = (pj(j) - e * 3600) 60d = pj(j) -
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中职学校工作总结模版
- 冲压工艺与模具设计课件-第三章
- 人群恐惧症的临床护理
- 统编人教版三年级语文下册《口语交际:春游去哪儿玩》教学课件
- 北京高考一二模政治哲学试题总结模版
- 统编人教版三年级语文下册《口语交际:春游去哪儿玩》示范教学课件
- 黑龙江省哈尔滨六十九中学2025届八下数学期末联考试题含解析
- 高中数学选修2-3计数原理概率知识点总结模版
- 吉林省长春市第七十二中学2025年七年级数学第二学期期末综合测试模拟试题含解析
- 设备管理润滑培训
- 汉代文化课件图片高清
- 2024年延安通和电业有限责任公司招聘笔试真题
- 【四川卷】【高二】四川省成都市蓉城名校联盟2023-2024学年高二下学期期末联考数学试题
- 液压油供应合同协议
- 艾滋病病人的心理护理
- 2025-2030煤油产业规划专项研究报告
- 香港劳务服务合同协议
- 园林喷洒器企业数字化转型与智慧升级战略研究报告
- GB/T 9065.2-2025液压传动连接软管接头第2部分:24°锥形
- 道路运输汛期教育培训
- 患者投诉处理与护理试题及答案
评论
0/150
提交评论