呂明巖 馮春龍
摘要:本文采用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),山東煙臺人。