呂明巖 馮春龍
摘要:本文采用Dephi語言、借助于AUTOCAD平臺(tái)的二次開發(fā),最終完成了三維地震勘探束狀觀測(cè)系統(tǒng)設(shè)計(jì)圖件的自動(dòng)繪制,進(jìn)而實(shí)現(xiàn)了地震勘探觀測(cè)系統(tǒng)設(shè)計(jì)的自動(dòng)化與快速化。
關(guān)鍵詞:Delphi;AutoCAD;二次開發(fā);三維地震束狀觀測(cè)系統(tǒng)
本文討論了常用勘探設(shè)計(jì)軟件MESA存在的缺陷及AutoCAD二次開發(fā)的必要性,探討了利用Delphi編程工具對(duì)AutoCAD進(jìn)行二次開發(fā)的原理及過程,最終實(shí)現(xiàn)了三維地震束狀觀測(cè)系統(tǒng)的自動(dòng)生成。
1 MESA存在的缺陷及AutoCAD二次開發(fā)的必要性
MESA三維地震勘探設(shè)計(jì)軟件能夠按照規(guī)定的要求,將炮點(diǎn)、檢波點(diǎn)鋪設(shè)在指定的勘探范圍內(nèi),但也存在許多方面的缺陷:
(1)設(shè)計(jì)成果只能保存為圖片格式,不方便再次修改;
(2)雖然可以將設(shè)計(jì)完成的炮點(diǎn),檢波點(diǎn)導(dǎo)出為文本格式,但還需要將剔除炮點(diǎn)及檢波點(diǎn)的文本記錄以此刪除,再導(dǎo)入Excel文件中,最后再通過外部編程手段,才能將設(shè)計(jì)炮點(diǎn)、檢波點(diǎn)批量導(dǎo)入到AutoCAD文件中。
AutoCAD可二次開發(fā)的特點(diǎn),使得通過外部編程工具對(duì)AutoCAD進(jìn)行二次開發(fā)成為實(shí)現(xiàn)三維地震勘探采集設(shè)計(jì)的最佳選擇。Delphi對(duì)AutoCAD二次開發(fā)的原理及可行性問題,張炯[1](《基于ActiveX和Delphi的AutoCAD二次開發(fā)技術(shù)》)及黃玲,李陶深[2] (《用Delphi進(jìn)行AutoCAD二次開發(fā)的研究》)已經(jīng)做了較為深入的研究,此處不再贅述。
2 束狀觀測(cè)系統(tǒng)簡(jiǎn)介
束狀觀測(cè)系統(tǒng)是將多道檢波器等間距地布置在若干平行線上,穿過檢波線中央布置激發(fā)點(diǎn)線。如果改變檢波點(diǎn)線的排列方式和激發(fā)點(diǎn)線距離,則可以形成不同的覆蓋次數(shù)。在估算這種三維觀測(cè)系統(tǒng)的覆蓋次數(shù)時(shí),可以先分解為兩個(gè)方向的覆蓋次數(shù):縱向覆蓋次數(shù)(沿測(cè)線方向?yàn)榭v向)和橫向覆蓋次數(shù)(沿炮線方向?yàn)闄M向),采用綜合平面圖法來觀測(cè)橫向與縱向覆蓋次數(shù),這對(duì)于習(xí)慣于用綜合平面圖畫觀測(cè)系統(tǒng)的物探人員來說是比較直觀,且容易接受的,其包括縱向多次覆蓋觀測(cè)系統(tǒng)和橫向多次覆蓋觀測(cè)系統(tǒng)兩部分,最后再把縱向覆蓋次數(shù)與橫向覆蓋次數(shù)相乘得出工區(qū)內(nèi)各點(diǎn)的觀測(cè)次數(shù)。
3 軟件開發(fā)過程
3.1 Delphi與AutoCAD的鏈接
利用Delphi進(jìn)行AutoCAD二次開發(fā)就是利用Delphi控制AutoCAD圖形文件,并在圖形文件中創(chuàng)建、編輯圖形對(duì)象的過程,其首要步驟便是將Delphi與AutoCAD軟件鏈接起來,使得Delphi開發(fā)的應(yīng)用程序可以操縱AutoCAD繪圖。
begin
boo:=False;//程序與AutoCAD未鏈接成功
try//與已經(jīng)運(yùn)行的AutoCAD程序鏈接
obj_acad:=GetActiveOleObject('autocad.application');
obj_acad.visible:=True;//將AutoCAD程序置于前臺(tái)
MessageBox(Form1.Handle,'Autocad程序啟動(dòng)成功','提示',MB_OK);
boo:=true; //程序與AutoCAD鏈接成功
end;
3.2 中點(diǎn)放炮觀測(cè)系統(tǒng)的實(shí)現(xiàn)
在上文中已經(jīng)提到了,束狀觀測(cè)系統(tǒng)由三部分構(gòu)成,即檢波線與激發(fā)線構(gòu)成的排列片、縱向和橫向多次覆蓋觀測(cè)系統(tǒng)。AtuoCAD的二次開發(fā)實(shí)際上就是對(duì)這三個(gè)過程的自動(dòng)實(shí)現(xiàn)。
排列片的實(shí)現(xiàn)是通過編程控制AtuoCAD繪圖,采用Add方法在AutoCAD模型空間(ModelSpace)中創(chuàng)建直線和圓,再控制它們的陣列方式,最終實(shí)現(xiàn)排列片的鋪設(shè)。
縱向多次覆蓋觀測(cè)系統(tǒng)是從分布在測(cè)線上的各個(gè)激發(fā)點(diǎn)出發(fā),向兩側(cè)做與測(cè)線成45o角的共炮點(diǎn)線,然后從每個(gè)激發(fā)點(diǎn)的第一個(gè)及最后一個(gè)接收點(diǎn)做與共炮點(diǎn)線垂直的共接收點(diǎn)線,共炮點(diǎn)線與共接收點(diǎn)線的交點(diǎn)決定了共炮點(diǎn)線的長(zhǎng)度,縱向觀測(cè)系統(tǒng)便繪制完成了。
begin
if not boo then
begin
MessageBox(Form3.Handle,'請(qǐng)先生成模版!','提示',MB_OK);
Exit;
end;//判斷是否已生成模版
橫向多次覆蓋觀測(cè)系統(tǒng)的實(shí)現(xiàn):
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);//橫向觀測(cè)基準(zhǔn)線
end;
obj_Acad.zoomextents;//顯示全部圖形
end;
4 結(jié)語
通過對(duì)AutoCAD的二次開發(fā),實(shí)現(xiàn)了束狀觀測(cè)系統(tǒng)排列片的自動(dòng)生成及橫向與縱向多次覆蓋觀測(cè)系統(tǒng)的自動(dòng)繪制,該程序的優(yōu)點(diǎn)是:只需輸入設(shè)計(jì)參數(shù),通過程序算法實(shí)現(xiàn)數(shù)據(jù)自動(dòng)處理,通過Delphi引用AutoCAD對(duì)象庫,從而實(shí)現(xiàn)了自動(dòng)繪制圖形,極大的縮短了工作時(shí)間,提高了繪圖的準(zhǔn)確度。
參考文獻(xiàn):
[1]張炯.基于ActiveX和Delphi的AutoCAD二次開發(fā)技術(shù)[J].武漢城市建設(shè)學(xué)院學(xué)報(bào),2000,17(2).
[2]黃玲,李陶深.用Delphi進(jìn)行AutoCAD二次開發(fā)的研究[J].計(jì)算機(jī)應(yīng)用,2001,21(5).
作者簡(jiǎn)介:呂明巖(1985),山東煙臺(tái)人。