作者简介: 王泽峰(1984-),男,中国矿业大学(北京)硕士,现在从事工程物探技术工作。
在贵广高速铁路隐伏性岩溶的探测中,要求探测出0~13 m范围内直径大于等于1 m的溶洞。隧道基底部分选用了陆地声纳法,在68 km的测线上共探测出4 491个直径大于等于1 m的溶洞。由于溶洞的探查结果没有专业的软件和标准来绘制成果图,而且数据量比较大,利用AutoCAD 二次开发的特性,实现了软件智能绘制成果图。
The karst caves whose diameter is more than 1m at the depths of 0~13 m were the objects in the exploration of concealed karst of Gui-Guang Railway. Landsonar was used in the tunnel part, and 4491 karst caves more than 1m in diameter were marked along the 68km surveying line. As there is no ready-made software and standard to draw the achievement graphs in karst cave exploration, the means put forward in this paper are the best methods to take the advantage of the secondary development of AutoCAD to program a software and draw the graphs.
地球物理探查经常要面对不同的探查对象, 而且对探查资料的解释和绘制成果图是工作中非常重要的一环, 为此行业中开发了一些专用的软件, 但这些软件并不能满足所有工程的应用。Microsoft Excel 和AutoCAD 软件都是应用非常广泛的软件, 工程上使用最多的是Excel的统计特性对数据进行分类统计与筛选, 再用CAD软件根据数据绘图[7, 8]。AutoCAD 的二次开发的特性可以实现程序自动进行数据筛选并绘制成果图。笔者以贵广高速铁路隐伏性岩溶的探测为例, 基于Visual C# 语言完成对AutoCAD进行二次开发与应用, 实现了软件自动绘图并成功应用在实际工作中。
10余年前, 岩溶物探的任务是找出岩溶发育区, 但是近10年来, 我国大量工程提出在岩溶发育地区的岩溶物探, 需要的是更精细的探查, 需要给出对工程建设有指导意义的探查结果, 这就是单个溶洞的探查[2]。
本次探查工作分为铁路路基和隧道基底两个部分, 路基部分选用探地雷达, 隧道基底部分选用陆地声纳法。陆地声纳法属于弹性波方法, 操作方便、快捷, 不受钢筋等干扰, 分辨率高, 能够清晰地分辨0~100 m内深直径水平投影≥ 1 m的单个溶洞, 成为隧道基底段工作的首选[3, 4]。本次隧道部分完成14座隧道探测, 每个隧道内布置3条纵向测线, 共探测隧道22 830 m, 测线总长度68 610 m, 据统计, 仅隧道部分, 在0~13 m深的范围内共探测出水平投影直径≥ 1 m的溶洞4 491个[6]。
需要绘制的成果图包括每条测线的溶洞分布剖面图, 3条测线分三种深度的溶洞分布平面图, 并需要根据溶洞的深度与直径投影大小分级并在图中作出标示, 数据量大, 并且没有通用软件直接完成。如果手工绘图, 不仅繁琐, 速度慢, 而且容易出错。
首先, 根据原始数据, 经处理后得到陆地声纳时间剖面图, 对时间剖面图上的反映溶洞的同相轴多次校核; 然后, 由时间剖面图上解释的溶洞, 结合现场测出的波速进行计算, 得到的溶洞的里程位置、深度与大小等数据存储在统一格式的Excel工作表中, 在工作表中添加绘图时必备的参数, 如测线长度、起始里程等。
使用微软的 Visual C# 2008的编程环境, 建立基本的交互界面, 添加EXCEL和AutoCAD组件, 调用组件的接口函数实现启动AutoCAD程序, 读入数据、绘制成果图、保存成果图等模块。具体流程见图1。
要实现对Excel和AutoCAD接口函数的调用, 首先得加入对EXCEL和AutoCAD的组件的引用, 图2为在Visual C# 2008 中添加对AutoCAD 2008的组件的引用, 以便后面直接调用两者的接口函数[1]。
1) 启动AutoCAD 接口函数[1]
AcadApp=new AcadApplication();
AcadApp.Documents.Open(filePath, null, null);
AcadApp.Application.Visible = true;
2) 用数据库方式连接Excel软件中的工作表, 读取表格数据与其中的参数
OleDbConnection OleConn = new OleDbConnection (strConn);
OleConn.Open();
start1 = (int)Convert. ToDecimal (dataset1. Tables[0]. Rows[2]. ItemArray[13] . ToString());
3) 设置字体接口函数
AcadTextStyle cadtextstyle = AcadDoc . TextStyles . Add(″宋体″);
cadtextstyle.fontFile = @″C:\WINDOWS\Fonts\ SIMSUN.TTC″;
AcadDoc.ActiveTextStyle = AcadDoc. TextStyles. Add(″宋体″);
4) 设置颜色与线宽接口函数
acdcolor.SetRGB(255, 0, 0);
circle.TrueColor = acdcolor;
circle.Lineweight =ACAD_ LWEIGHT . acLnWt020;
5) 绘制基本形状接口函数[1]
AcadCircle circle = AcadDoc.ModelSpace.AddCircle(startPoint, diameter / //绘制圆代表溶洞
AcadDoc.ModelSpace.AddLine(startPoint, endPoint); //绘制直线
AcadDoc.ModelSpace.AddText(″+″ + i.ToString(), startPoint, textHeight); //添加里程坐标
(6) 保存AutoCAD文件接口函数
AcadApp.ActiveDocument.SaveAs(savefiledialog. FileName, AcSaveAsType.ac2007_dwg, null);
绘图程序实现了启动AutoCAD, 读入Excel的工作表中数据, 按软件上面的深度、大小等条件, 绘制剖面图、平面图、分深度平面图、带标示平面图, 并实现了即时读取工作表文件名保存绘制完成的AutoCAD文件, 以便连续读入数据, 绘制成果图。
1) AutoCAD提供了非常详细的开发接口, 使整个二次开发工作比较简便, 有条件快捷地实现更为复杂的成果图的表达。
2) 整个AutoCAD的绘图界面就是一个无限大的三维空间, 而且有精确的坐标, 在整个空间可以按照1:1绘图, 打印的时候可以按照要求缩放, 打印出各种精确比例的图像。
3) 可以实现快速准确地绘制不同深度和直径大小的溶洞剖面和平面图, 可以互相对比、互相参照划分出影响比较大的段落, 增加工作效率, 挖掘数据内隐藏的更多内涵。
4) 可以实现对数据进行有条件的筛选分级, 同时对数据的修改可以更快地反映到成果图中, 大大提高了绘图和后期修正的效率。
1) 对于更复杂的构造, 可以实现自定义形状的设计, 完成绘制成果图, 甚至实现在AutoCAD上实现三维绘图, 实现多个视角下的成果图。
2) 对于已经完成的AtuoCAD图, 可以在图上作修改或者标示, 再用软件把图件上的修改反馈回Excel数据, 实现数据与图件之间的交互同步。
3) AutoCAD二次开发完成的软件程序, 适用于各种物探方法解释完后的数据, 只需要把计算好的数据按格式汇总到Excel工作表中, 就可以实现AutoCAD自动绘图, 使之应用范围更加广阔。
The authors have declared that no competing interests exist.
[1] |
|
[2] |
|
[3] |
|
[4] |
|
[5] |
|
[6] |
|
[7] |
|
[8] |
|