AutoCAD二次开发在隧道断面测量中的应用

2015-01-12 05:57
山西建筑 2015年33期
关键词:坐标轴二次开发轴线

张 云 鹏

(中铁电气化勘测设计研究院勘测分院,天津 300250)

·测量·

AutoCAD二次开发在隧道断面测量中的应用

张 云 鹏

(中铁电气化勘测设计研究院勘测分院,天津 300250)

针对隧道断面仪自带软件无法满足绘图要求的问题,采用AutoCAD二次开发技术编程对原始测量数据进行处理,实现了隧道断面尺寸图的自动绘制,并自动标记铁轨左右轨面的位置,极大的提高了绘图效率。

二次开发,AutoCAD,VBA语言,断面测量

0 引言

隧道断面测量是隧道设计施工中必不可少的一个阶段。目前常用的隧道断面测量方法主要有断面仪法、全站仪法和三维激光扫描仪法三种。断面仪法由于仪器价格低廉、操作简便、精度较高等优点,应用最为广泛。激光隧道断面仪采用激光测距技术和数字测角技术,根据极坐标测量原理获取隧道断面尺寸,利用图像后处理软件能够迅速得到隧道断面尺寸图。

然而,在具体工程实践当中,经常要根据工程需求对隧道断面数据进行后续处理,而断面仪自带软件功能有限,往往不能满足需求,需要另行编制数据处理程序。

本文结合京通铁路电气化改造项目中隧道断面测量的实践,详细阐述了基于VBA的CAD二次开发技术在隧道断面测量数据处理中的应用。

1 VBA简介

VBA全称Visual Basic for Applications,是由微软公司开发的一种标准宏语言,具有完整的高级语言特征。利用VBA语言对AutoCAD进行二次开发可以增加或直接修改AutoCAD中的命令、扩大图形的编辑能力、建立数据库和图形库,并能实现对当前图形的直接访问或修改。此外,VBA所附的属性数据操作更为简便,可以直接读取属性文件,或者在VBA下或CAD图上输入。VBA实现了面向对象的开发技术,改变了传统的开发模式,使开发人员不用了解AutoCAD的内核,即可利用当前流行的可视化开发语言进行内部开发,极大地提高了开发效率,是AutoCAD二次开发的理想工具。

2 工程要求

京通铁路电气化改造项目初测时采用了BJSD-2E型激光隧道断面测距仪对沿线隧道进行断面测量。由于测量工作在既有铁路上进行,在工作期间铁路正常运行,而隧道中心轴线一般在铁路左右轨之间,不便于在中轴线上架设仪器,因此,测量时将仪器直接架设在轨顶上,设置好采样间隔及测量点数以后,由软件控制仪器自动完成测量工作。根据工程需求,本次隧道断面测量需要提供以隧道中心轴线为竖轴的隧道断面实际尺寸图,并在图上标记出隧道中心轴线及铁路左右铁轨的位置。

3 程序开发的主要功能模块

本程序是针对BJSD-2E型激光隧道断面仪的测量数据开发的。BJSD-2E型激光隧道断面仪的原始测量数据可以导出为txt数据文件,文件格式如表1所示。

表1 BJSD-2E型激光隧道断面仪原始数据文件 m

程序可以实现的功能主要有断面测点的展绘,测点连线,计算隧道中心轴线位置及铁轨位置。以下对各项功能的开发做详细论述。

3.1 计算隧道中心轴线位置

BJSD-2E型激光隧道断面仪测量的数据以设站位置为测量坐标系原点,而工程要求以隧道中心轴线为竖轴,因此需要先计算出隧道中心轴线的位置,然后以隧道中心轴线为竖轴将测点坐标进行平移。

为了便于数据存储,需要先定义一个数据结构用于存储每个测点,代码如下:

Public Type ppoint

id As Integer

localtion(1 To 3) As Double

End Type

上述数据结构ppoint包括两个属性,其中id用于存储测点点号,location(1 To 3)用于存储每个测点的坐标。由于AutoCAD中默认的坐标格式是三维坐标,因此要给每个测点的location(3)赋值0。需要指出的是,原始数据中的z坐标是测量坐标系中的z,读入CAD时是当作绘图坐标系中的y坐标读入的,对应数据结构中location(2)。

由于铁路隧道断面形状比较规则,表面也较为光滑,因此隧道断面中心轴线位置可以根据断面测量点x坐标的最大值和最小值进行计算:

(1)

其中,xh为隧道中心轴线的x坐标;xmin,xmax分别为断面测点x坐标的最小值和最大值。

由式(1)可知,要计算隧道中心轴线位置需要先求出测点x坐标的最大值和最小值。

求x最大值的子过程代码如下:

Public Sub xmax(a() As ppoint)′求x最大值

Dim i As Integer, j As Integer, pmax As Double

pmax=a(1).localtion(1)

For i=2 To UBound(a)

If a(i).localtion(1)>pmax Then

pmax=a(i).localtion(1)

End If

Next i

xxmax = pmax

End Sub

代码中的xxmax即为x的最大值,求x的最小值代码与之类似。求出x坐标的最大值和最小值后就可按照式(1)计算隧道中心轴线位置。

3.2 断面测点展绘

求出隧道中心轴线x坐标后,即可将原始测量坐标平移到以隧道中心轴线为竖轴的坐标系中。

平移过程按式(2)进行:

(2)

其中,x′,y′分别为平移后测点的x坐标和y坐标;x0,z0均为测点的原始测量坐标;xh为隧道中心轴线的x坐标。平移后原始测量数据中的z坐标转换为AutoCAD绘图坐标系下的y坐标。坐标平移的过程可以通过以下代码实现:

p1(i).localtion(1) = p1(i).localtion(1)-xh

代码中的localtion(1)为测点的x坐标。经过平移后的测点坐标可直接用于展绘。绘制测点可以使用VBA中的Addpoint方法,具体代码如下:

Set pointObj = ThisDrawing.ModelSpace.AddPoint(p1(i).localtion)

测点展绘完后还需要将测点依次连接起来,可通过以下代码实现:

For i=2 To t

Set lineobj=ThisDrawing.ModelSpace.AddLine(p1(i - 1).localtion, p1(i).localtion)

Next i

Set lineobj=ThisDrawing.ModelSpace.AddLine(p1(t).localtion, p1(1).localtion)

上述代码中先利用一个For循环依次从第一点连接到最后一点,最后再将最后一点同第一点连接,使图形闭合。

展绘结果见图1。

由于绘图时对原始测量坐标进行了平移,为了便于读图还需要绘制坐标轴。绘制坐标轴时首先根据坐标的最大值和最小值确定坐标轴线的起点和终点,然后将坐标轴以相同间隔等分,并标注刻度。

将坐标轴等分时可以利用穷举法来确定等分份数,确定竖轴正半轴等分份数的代码如下:

Do While 0.5*n3 < zzmax

n3=n3+1

Loop

上述代码中以0.5 m为间隔对竖轴正半轴进行等分。zzmax为测点z坐标的最大值,n3为竖轴正轴等分份数,当0.5*n3的值大于zzmax时,n3即为竖轴正半轴等分份数。确定等分份数以后,再依次绘制坐标轴刻度线并进行标注。坐标轴刻度线本质上是一列短直线,因此绘制刻度线时可以采用AddLine方法,添加刻度值可以采用AddText方法。

绘制竖轴的核心代码如下:

Set line1obj = ThisDrawing.ModelSpace.AddLine(sp2, ep2)′绘制竖轴

For i = 1 To n3

txtp(1) = 0.15

txtp(2) = 0.5 * i

txtp(3) = 0

txtr = i * 0.5

Set txtobj = ThisDrawing.ModelSpace.AddText(txtr, txtp, 0.1)

sp1(1) = 0.12

sp1(2) = i * 0.5

sp1(3) = 0

ep1(1) = xh-xh

ep1(2) = i * 0.5

ep1(3) = 0

Set line2 = ThisDrawing.ModelSpace.AddLine(sp1, ep1)

Next i

上述代码中,sp2和ep2分别为竖轴的起点和终点,用于绘制竖轴。txtp为文字插入点的坐标,txtr为刻度数值,用于标注坐标轴刻度值。绘制横轴的过程与横轴类似。

坐标轴绘制效果见图2。

3.3 铁轨轨面位置标注

在隧道的改造过程中,铁轨轨面的位置十分重要,因此需要在图上明确标记出铁轨左右轨的位置。

由于现场作业条件的限制,断面扫描仪只能架设在铁轨的轨顶上,因此原始测量坐标系的原点在左轨或者右轨上。由于京通铁路是单线铁路,沿线隧道中只有一条轨道,因此隧道中心轴线位置大致位于铁路中心。隧道中心轴线位置xh可根据式(1)算出。根据xh的正负可以判断出左轨和右轨的位置:若xh>0则原点为左轨,根据式(2)左轨x坐标为-xh,左轨x坐标加上标准轨宽1.435 m即为右轨x坐标;若xh<0则原点为右轨,右轨x坐标为-xh,左轨x坐标为-xh-1.435 m。

4 结语

在工程实践当中,一台断面仪日均测量断面40个~50个,断面尺寸图的绘制工作量巨大,若完全由人工完成耗时较长。采用基于VBA的AutoCAD二次开发技术编程对测量数据进行处理,可以实现绘图工作的自动完成,绘图人员只需将原始测量数据导入绘图程序即可,极大地提高了工作效率。由此可以看出,将AutoCAD的二次开发技术应用于测绘工作中可以极大的提高数据处理准确性及工作效率,具有重要的现实意义。

[1] 廖胤齐.地铁隧道结构断面测量方法及对比分析.北京测绘,2014(4):84-86.

[2] 唐志炜.基于Visual Lisp的AUTOCAD的二次开发.长春:吉林大学,2008.

[3] 康保成.Auto LISP 程序在 AutoCAD 中的应用实例.山西建筑,2002,28(3):157-158.

[4] 牟 航.基于VBA的CAD二次开发无缝线路配轨系统研究.兰州:兰州交通大学,2013.

[5] 黄 武.基于Lisp的CAD二次开发在排水数据处理中的应用.地理空间信息,2014(10):137-139.

[6] 李与权.论AutoCAD的二次开发.电脑编程技巧与维护,1995(3):42-45.

[7] 陆柏树,刘云彪,李同林.AutoCAD VBA 在滑坡稳定性计算方面的应用.资源环境与工程,2007(3):331-334.

Application of AutoCAD secondary development in the tunnel section measuring

Zhang Yunpeng

(SurveyBranchInstitute,ChinaRailwayElectrificationSurveyDesignandResearchInstitute,Tianjin300250,China)

In order to solve the problem that the sofrware of tunnel laser profiler offered by manufacturer can not meet the the requirements of engineering drawings, this paper processes the original measurement data using the program compiled by AutoCAD secondary development technology. This program can draw the tunnel section size chart automatically, and marker the position of the rail tracks, which greatly improves the efficiency of drawing.

secondary development, AutoCAD, VBA language, section measuring

2015-09-14

张云鹏(1987- ),男,硕士,助理工程师

1009-6825(2015)33-0201-03

U452.14

A

猜你喜欢
坐标轴二次开发轴线
用坐标轴平移妙解斜率和(或积)为定值问题
曲轴线工件划伤问题改进研究
大咖妙语论道!于轴线之上开启广州城央最宜居的大未来!
浅谈基于Revit平台的二次开发
浅谈Mastercam后处理器的二次开发
一般性拱轴线偏差对拱桥内力和稳定性的影响
西门子Easy Screen对倒棱机床界面二次开发
巧用仿射变换妙解高考解析几何题
凸轮轴孔轴线与止推面垂直度超差问题研究
基于Pro/E二次开发的推土铲参数化模块开发