利用ExcelVBA程序计算曲线坐标

更新时间:2023-05-10 17:18:01 阅读量: 实用文档 文档下载

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

Excel 是大家很熟悉的办公软件,相信大家在工作中经常使用。本文利用Excel VBA 编制程序计算铁路缓和曲线的坐标,并将计算坐标转化为任意平面坐标系下的坐标,最后转化全站仪可识别的文件格式,从而实现了曲线坐标计算和现场放样的一体化。

利用ExcelVBA程序计算曲线坐标

张卫庭高强

(中铁济南勘察设计咨询院有限公司山东

济南

250022)

【摘要】Excel是大家很熟悉的办公软件,相信大家在工作中经常使用。本文利用ExcelVBA编制程序计算铁路缓和曲线的坐标,并将计算坐标转化为任意平面坐标系下的坐标,最后转化全站仪可识别的文件格式,从而实现了曲线坐标计算和现场放样的一体化。

【关键词】ExcelVBA;曲线要素;坐标转化;全站仪

1.曲线坐标计算

计算曲线坐标,难免要把角度转化为EXCEL

所识别的弧度来计算,为此首先要做的是角度转化为弧度。打开Excel,按Alt+F11即进入VBAIDE,在菜单上依次点击[插入]->[模块],然后输入如下代码

1.1角度转化为弧度

如下图,新建一个窗体,在窗体上添加文本、

命令等控件,分别存放已知曲线要素。在命令按钮“计算”的代码中加入如下主要代码:

xHZ=T(1+cosγ)yHZ=±Tsinγ

1.2.2程序的实现

PublicConstpi=3.14159265359PublicFunctionDEG(nAsDouble)

DimAAsDouble,BAsDouble,CAsDouble,DAsDouble,EAsDouble,FAsDouble,GAsDouble,KAAsDouble

D=Abs(n)+0.000000000000001F=Sgn(n)A=Int(D)

B=Int((D-A)*100)C=D-A-B/100

DEG=F*(A+B/60+C/0.36)*pi/180EndFunction

1.2曲线坐标计算

1.2.1计算曲线坐标的公式加入缓和曲线后的铁路曲线示意图(见右图)

坐标系的建立主要取决于控制点的情况。如果控制点是为测设曲线而布设的,则坐标系一般采用ZH—XY坐标系统

①ZH~HY段曲线点的坐标根据缓和曲线方程计算:

xA=lA-

lA40R2l0

3

7

5

lAlA

-yA=±

0336R3l0

"

#%%%%%$%%%%%&

PrivateSubCommandButton1_Click()

DimbjAsSingle,pjAsString,loAsSingle,iAsIntegerDimzjhAsInteger,gsAsInteger'标志加号的位置DimxsdAsInteger'小数点位置

DimtdzxAsSingle'将hz里程加直线长结果赋予该变量DimzxzdlcAsString'终点里程DimzczjhAsIntegerDimdyzxAsString

DimdyzxjhAsInteger'曲线后第一里程加号DimwsgsAsInteger'DimyqgsAsInteger

bj=Val(TextBox1.Text):pj=TextBox2.Text:lo=Val(TextBox3.Text)

Worksheets(1).Select

Worksheets(1).Cells(2,4)=Round(lo/2-(lo^3/(240*bj^2)),3)

Worksheets(1).Cells(2,5)=Round(lo^2/(24*bj),3)

Worksheets(1).Cells(2,1)=Round(Worksheets(1).Cells(2,4)+(bj+Worksheets(1).Cells(2,5))*Tan((dfmzhd(pj))/2),3)

Worksheets(1).Cells(2,2)=lo+bj*dfmzhd(pj)

Worksheets(1).Cells(2,2)=Round(Worksheets(1).Cells(2,2),3)

Worksheets(1).Cells(2,3)=Round((bj+Worksheets(1).Cells(2,5))/(Cos(dfmzhd(pj)/2))-bj,3)

Worksheets(1).Cells(2,6)=dzdfm(90*lo/(pi*bj))WithWorksheets(1).Cells

.HorizontalAlignment=xlCenter.VerticalAlignment=xlBottom.WrapText=False.Orientation=0EndWith

Worksheets(1).Range("a1:g10").ColumnWidth=12'UserForm1.Hide

'zhlc=Application.InputBox("ZH点里程:","请输入",,,,,,1+2)

Worksheets(1).Cells(4,1)="桩号":Worksheets(1).Cells(4,2)="X(N)坐标":Worksheets(1).Cells(4,3)="Y(E)坐标":Worksheets(1).Cells(4,4)="附注"

With

Worksheets(1).Range("a4:e4").Cells

当曲线右偏时yA坐标为正,左偏时yA坐标为负。②HY~YH段曲线点的坐标为:

xB=RsinαB+m

yB=±[R(1-cosαB)+p]

式中αB=KB-KHY+β0,曲线右偏时yB坐标为正,左偏时yB坐标为

负。

③YH~HZ段曲线点在以HZ点为原点,以HZ点切线为X轴,交点至HZ方向为正向的测量坐标系(HZ—X'Y')下的坐标为

x=-lC-'C

lClC

-y'C=±

0336R3l0

!lC40R2l0

5

"

7

3

"

'C'C

HZHZ

#%%%%%$%%%%%&

式中,lC为C点到缓和曲线起点的曲线长;按里程增加方向,当曲线右偏时y'C坐标为正,左偏时y'C坐标为负。

根据坐标平移、旋转公式,将YH~HZ段曲线点的坐标换算到ZH—XY坐标系下,为

xcosγ=(()y-sinγ

CCsinγ

cosγxx

+(**+*yy

式中,γ为两坐标系X轴间的夹角,其与线路转向角的关系是:γ=

αZ或γ=-αY;xHZ、yHZ为HZ点在ZH—XY下的坐标,且为

822

Excel 是大家很熟悉的办公软件,相信大家在工作中经常使用。本文利用Excel VBA 编制程序计算铁路缓和曲线的坐标,并将计算坐标转化为任意平面坐标系下的坐标,最后转化全站仪可识别的文件格式,从而实现了曲线坐标计算和现场放样的一体化。

.HorizontalAlignment=xlCenter.VerticalAlignment=xlBottom.WrapText=False.Orientation=0.Font.Size=12.Font.Bold=True.Font.Italic=True.Font.ColorIndex=3EndWith

1.2.3结果显示单击计算按钮,在EXCEL下显示结果如下:

调入全站仪现场放样,这样既方便又简洁。

Leica全站仪文件格式中,以21.324开头的表示水平角,以22.324开头的表示竖直角,以81..00开头的表示X坐标,以82..00开头的表示Y坐标,其它格式可参考仪器说明书来确定。知道了仪器文件的格式含义,就可以把坐标和高程转化为仪器可识别的格式。主要代码如下:

IfWorksheets(1).Cells(sjgs+4,4)=""Then

txt.WriteLine"*11"&Format(sjgs,"0000")&"+"&补零(Worksheets(1).Cells(sjgs+4,1))&""&"21.324+"&"0000000000000000"&""&"22.324+"&"0000000000000000"&""&"31..00+"&"0000000000000000"&""&"51..1.-"&"000000000000+000"&""&"81..00"&添加号(Trim(Worksheets(1).Cells(sjgs+4,3)))&""&"82..00"&添加号(Worksheets(1).Cells(sjgs+4,2))&""&"83..00+"&"0000000000000000"

Else

txt.WriteLine"*11"&Format(sjgs,"0000")&"+"&补零(Worksheets(1).Cells(sjgs+4,1))&""&"21.324+"&"0000000000000000"&""&"22.324+"&"0000000000000000"&""&"31..00+"&"0000000000000000"&""&"51..1.-"&"000000000000+000"&""&"81..00"&添加号(Trim(Worksheets(1).Cells(sjgs+4,3)))&""&"82..00"&添加号(Worksheets(1).Cells(sjgs+4,2))&""&"83..00"&添加号(Worksheets(1).Cells(sjgs+4,4))&""&"31..00+000000000000767488..10+000000000000138533..10+0000000000001847"

EndIf

上述仪器格式在LeicaTC1800及LeicaTCR1101都可以识别读取数据,在现场放样中直接从仪器调出要放样的数据,省去了许多现场计算和记录的手续。

2.坐标转化

2.1数学公式上述生成的坐标为以ZH点为坐标原点,ZH点到JD的切线为X轴,垂直该切线为Y轴坐标系下的各点坐标,如何转化为任意坐标系下的坐标呢?具体如下:

坐标转化数学公式:X=xcosθ+ysinθ+x0

4.结束语

由于VBA与Excel2003结合得非常紧密,因此Excel2003提供的各个功能都可以直接使用VBA操作。在Excel2003中使用VBA其益处在于:首先,它可以将大量的、尤其是重复的操作记录为一个VBA程序,用户则只需利用一个简单的菜单命令或工具栏按钮就可实现复杂操作的自动化;其次,它可以通过控制Excel2003对象,在一个工作表中灵活地控制其它工作表、数据表或文档,从轻松实现不同工作表之间的交互;最后,利用VBA编辑器中提供的丰富的控件设置,用户还可以创建自己的VBA应用程序,从而实现一个企业级的信息控制系统。科

Y=ycosθ-xsinθ+y0

式中X,Y为转化后的坐标;x,y为原坐标;θ为新坐标X轴相对于旧坐标X轴的旋转角;x0、y0为旧坐标原点在新坐标系下的坐标。

2.2主要实现代码

DimkAsInteger

Dimyhzb,yhqdAsInteger'HZ以后的坐标Fork=5To(9+2*n+yhqd+yhzd)

Worksheets(2).Cells(k,2)=Round(Worksheets(1).Cells(k,2)*Cos(dfmzhd(TextBox2.Text))+Worksheets(1).Cells(k,3)*Sin(dfmzhd(TextBox2.Text))+Val(TextBox1.Text),3)

Worksheets(2).Cells(k,3)=Round(Worksheets(1).Cells(k,3)*Cos(dfmzhd(TextBox2.Text))-Worksheets(1).Cells(k,2)*Sin(dfmzhd(TextBox2.Text))+Val(TextBox3.Text),3)

Nextk

3.生成全站仪格式文件

将上述生成的坐标,如果转化为仪器可识别的文件,就可以直接

【参考文献】

[1]Excel2000中文版VBA开发实例指南,电子工业出版社,2000年8月.[2]铁道工程,中国铁道出版社,2000年3月.[3]测量学原理,中国林业出版社,2002年10月.

作者简介:张卫庭(1974.7—),男,大学本科(学士),中铁济南勘察设计咨询院有限公司工程师,主要从事铁路工程专业。

[责任编辑:翟成梁

(上接第821页)件)加入Lynx中的场景,并根据飞机校靶的运动特点,设置其相应参数,生成缺省的视景仿真文件.adf文件。用MFC通过调用Vega函数库,通过引入.adf文件并编写代码,采集识别外部信号,对飞机校靶过程进行交互控制,最后生成实时应用程序,实现飞机校靶仿真,为部队飞机校靶提供了较好的方法。经教学试用,能够很好提高地勤人员对飞机校靶的操作熟练程度。科

【参考文献】

[1]李云华,虚拟现实技术综述[J].重型机械科技,2004(4).

[2]柴毅,史晶晶,冯大龙.基于Vega的航天发射场视景仿真系统实现[J].计算机仿真,2007,6(63-65).

[3]龚卓蓉.Vega程序设计[M].北京:国防工业出版社,2002,8.[4]龚卓蓉.lynx图形界面[M].北京:国防工业出版社,2008,8.

作者简介:王建军(1966—),男,汉族,河南人,硕士研究生,副教授,研究方向是装备训练虚拟现实。

张勤安(1965—),男,汉族,河南人,硕士研究生,高级工程师,研究方向是火力控制。

和麦成(1967—),男,汉族,河南人,硕士研究生,高级工程师,研究方向是装备监造。

[责任编辑:张慧]

823

本文来源:https://www.bwwdw.com/article/46oe.html

Top