吕明岩 冯春龙
摘要:本文采用Dephi语言、借助于AUTOCAD平台的二次开发,最终完成了三维地震勘探束状观测系统设计图件的自动绘制,进而实现了地震勘探观测系统设计的自动化与快速化。
关键词:Delphi;AutoCAD;二次开发;三维地震束状观测系统
本文讨论了常用勘探设计软件MESA存在的缺陷及AutoCAD二次开发的必要性,探讨了利用Delphi编程工具对AutoCAD进行二次开发的原理及过程,最终实现了三维地震束状观测系统的自动生成。
1 MESA存在的缺陷及AutoCAD二次开发的必要性
MESA三维地震勘探设计软件能够按照规定的要求,将炮点、检波点铺设在指定的勘探范围内,但也存在许多方面的缺陷:
(1)设计成果只能保存为图片格式,不方便再次修改;
(2)虽然可以将设计完成的炮点,检波点导出为文本格式,但还需要将剔除炮点及检波点的文本记录以此删除,再导入Excel文件中,最后再通过外部编程手段,才能将设计炮点、检波点批量导入到AutoCAD文件中。
AutoCAD可二次开发的特点,使得通过外部编程工具对AutoCAD进行二次开发成为实现三维地震勘探采集设计的最佳选择。Delphi对AutoCAD二次开发的原理及可行性问题,张炯[1](《基于ActiveX和Delphi的AutoCAD二次开发技术》)及黄玲,李陶深[2] (《用Delphi进行AutoCAD二次开发的研究》)已经做了较为深入的研究,此处不再赘述。
2 束状观测系统简介
束状观测系统是将多道检波器等间距地布置在若干平行线上,穿过检波线中央布置激发点线。如果改变检波点线的排列方式和激发点线距离,则可以形成不同的覆盖次数。在估算这种三维观测系统的覆盖次数时,可以先分解为两个方向的覆盖次数:纵向覆盖次数(沿测线方向为纵向)和横向覆盖次数(沿炮线方向为横向),采用综合平面图法来观测横向与纵向覆盖次数,这对于习惯于用综合平面图画观测系统的物探人员来说是比较直观,且容易接受的,其包括纵向多次覆盖观测系统和横向多次覆盖观测系统两部分,最后再把纵向覆盖次数与横向覆盖次数相乘得出工区内各点的观测次数。
3 软件开发过程
3.1 Delphi与AutoCAD的链接
利用Delphi进行AutoCAD二次开发就是利用Delphi控制AutoCAD图形文件,并在图形文件中创建、编辑图形对象的过程,其首要步骤便是将Delphi与AutoCAD软件链接起来,使得Delphi开发的应用程序可以操纵AutoCAD绘图。
begin
boo:=False;//程序与AutoCAD未链接成功
try//与已经运行的AutoCAD程序链接
obj_acad:=GetActiveOleObject('autocad.application');
obj_acad.visible:=True;//将AutoCAD程序置于前台
MessageBox(Form1.Handle,'Autocad程序启动成功','提示',MB_OK);
boo:=true; //程序与AutoCAD链接成功
end;
3.2 中点放炮观测系统的实现
在上文中已经提到了,束状观测系统由三部分构成,即检波线与激发线构成的排列片、纵向和横向多次覆盖观测系统。AtuoCAD的二次开发实际上就是对这三个过程的自动实现。
排列片的实现是通过编程控制AtuoCAD绘图,采用Add方法在AutoCAD模型空间(ModelSpace)中创建直线和圆,再控制它们的阵列方式,最终实现排列片的铺设。
纵向多次覆盖观测系统是从分布在测线上的各个激发点出发,向两侧做与测线成45o角的共炮点线,然后从每个激发点的第一个及最后一个接收点做与共炮点線垂直的共接收点线,共炮点线与共接收点线的交点决定了共炮点线的长度,纵向观测系统便绘制完成了。
begin
if not boo then
begin
MessageBox(Form3.Handle,'请先生成模版!','提示',MB_OK);
Exit;
end;//判断是否已生成模版
横向多次覆盖观测系统的实现:
point1[0]:=1000.050.0;point1[1]:=1000.010.0;point1[2]:=0.0;point2[0]:=point1[0];point2[1]:=1000.0+(StrToFloat(xianshu.Text)1)*strtofloat(xianju.Text)+10.0;point2[2]:=0.0;
obj_line3:=obj_ModelSpace.addline(point1,point2);//橫向观测基准线
end;
obj_Acad.zoomextents;//显示全部图形
end;
4 结语
通过对AutoCAD的二次开发,实现了束状观测系统排列片的自动生成及横向与纵向多次覆盖观测系统的自动绘制,该程序的优点是:只需输入设计参数,通过程序算法实现数据自动处理,通过Delphi引用AutoCAD对象库,从而实现了自动绘制图形,极大的缩短了工作时间,提高了绘图的准确度。
参考文献:
[1]张炯.基于ActiveX和Delphi的AutoCAD二次开发技术[J].武汉城市建设学院学报,2000,17(2).
[2]黄玲,李陶深.用Delphi进行AutoCAD二次开发的研究[J].计算机应用,2001,21(5).
作者简介:吕明岩(1985),山东烟台人。