陳向平 ,王斌武 ,王順國
(1.華北地質勘查局綜合普查大隊, 河北 三河市 065201;2.中南大學地球科學與信息物理學院, 湖南 長沙 410083 )
在地質勘查成果中,一幅圖件包含有多條剖面曲線是常見的圖形,比如物探中的剖面平面圖、化探中各元素分布剖面圖等。但是目前常用軟件包括AutoCAD,Surfer,MapGis,Grapher等并不支持一次性多條繪制,往往需要分條繪制,這樣既浪費時間,也可能因為坐標定位不準而產生錯誤[1-2]。ModelVision、Magpic等數據處理軟件,雖然能方便快捷的制作出剖面平面圖,但是不遵守比例尺約束,也無法進一步的編輯修改。
Autodesk公司推出的Auto CAD作為計算機輔助設計(Computer Aided Design)領域內的龍頭老大,在計算機繪圖和設計領域已經領導潮流多年,是世界上工程研究、工程設計中使用最廣最頻繁的軟件。如此多的工程技術人員對其情有獨鐘,不只因為其強大的圖形繪制功能,還因為可將其作為一個平臺,編寫適合自己專業的腳本或者軟件進行二次開發,以方便快捷的繪制各種圖件。該公司開發的用于AutoCAD與其它軟件之間進行CAD數據交換的CAD數據文件格式 DXF,是一種開放的矢量數據格式,包含對應的DWG文件的全部信息。具有很強的移植性,絕大多數的繪圖軟件都能識別該格式,已經成為多種軟件之間圖形交換的中介。
Golden Software公司開發的Surfer軟件已經被物探工作者廣泛使用,該軟件同樣支持二次開發[3],可以擴充功能。
基于Auto CAD和Surfer支持二次開發的功能,根據目前的實際需要,可以利用.net平臺編寫快捷簡單繪制多剖面的軟件,從而有效解決上述問題。
將物探數據(如視極化率、視電阻率等)在Excel等軟件中整理成一定格式,保存為Excel默認格式或者文本文件。啟動程序調入數據后,在程序界面進行參數設置,計算曲線角點位置、連接AutoCAD并自動完成平剖圖的繪制。
在AutoCAD中對繪制的平剖圖進行觀察,分析圖形布置、根據需要對軟件的參數做實時修改,得到所需圖件后保存為DWG、DXF或其他AutoCAD格式,也可以輸出成圖片文件或者PDF格式。
利用同樣的思路,也可以調用Surfer進行圖件繪制,如果電腦上并未安裝AutoCAD和Surfer,軟件可以直接輸出ASCII 格式的 DXF文件。
原始的成圖數據包括了線號、點號、X坐標、Y坐標、測量值,線號與點號的數據主要用于成圖后剖面的標注,X坐標、Y坐標、測量值均通過一定的計算,用于確定剖面曲線的節點位置。將原始數據整理成如下圖格式,保存為txt、dat等文本格式(見圖1)。
根據需要,將程序的界面分為3大塊(見圖2) 。
(1) 主要是對程序的操作,包括數據的加載、連接AutoCAD、Surfer等并制圖;
(2) 原始數據的顯示,通過dataGridView窗體。
(3) 參數設置:
兩個必選類:圖幅比例、基線位置等;剖面曲線參數包括顏色、線寬、線形;
三個可選類:線號標注參數、填充參數、數據范圍;
利用工具箱可以快速的設計定制軟件界面。

圖1 數據方式

圖2 界面示例
利用函數StreamReader、ReadLine讀取原始文件,并賦于dataGridView窗體顯示,以便進行數據檢查和修改[4];讀取dataGridView窗體中X坐標、Y坐標、測量數值V與設定的參數,進行數據變換,以確定剖面曲線節點(X1,Y1,0)的數值。轉換原理見圖3。

圖3 坐標換算
X、Y為實際坐標數據,φ為測線方位角,d為測量數值V與縱向比例參數的比值。可以推算出:
X1=X+d×cosφ
Y1=Y+d×sinφ
AutoCAD二次開發過程如下。在Microsoft Visual Studio2010中添加引用AutoCAD 2013 Type Library,在代碼中添加using AutoCAD[5]。
AutoCAD.AcadApplication AcadApp 創建AutoCAD對象
AutoCAD.AcadDocument AcadDoc創建名為AcadDoc的文檔;
將轉變后的成圖坐標數據X1、Y1賦予double類型Coord數組變量,用函數AcadDoc.ModelSpace.Add3DPoly(Coord)完成曲線繪制。
完善剖面曲線的參數修改、標注等。標注使用 AcadDoc.ModelSpace.AddText()方法。
Surfer的二次開發跟AutoCAD的非常類似,在調用Surfer時必須添加Surfer 10 Type Library引用,代碼中添加using Surfer;
Surfer.Application SrfApp; 創建AutoCAD對象
Surfer.IDocuments Srfdoc;創建名為Srfdoc的IDocuments
Surfer.IPlotDocument SrfPDoc創建名為SrfDoc的IPlotDocument
Surfer.IShapes SrfShp = SrfPDoc.Shapes;創建名為Srfdoc的 SrfPDoc.Shapes
然后調用 SrfShp.AddPolyLine()等函數進行圖件繪制,SrfShp.AddText()函數進行文字標注等工作[6]。
ASCII格式的DXF文件輸出較為簡單,它由很多的“組碼”和“值”組成的“數據對”構造而成,組碼指定其后的值的類型和用途。每個組碼和值必須為單獨的一行。 DXF文件被組織成為多個“段”(section),每個段以組碼“0”和字符串“SECTION”開頭,緊接著是組碼“2”和表示段名的字符串(如HEADER)。段的中間,可以使用組碼和值定義段中的元素。段的結尾使用組碼“0”和字符串“ENDSEC”來定義[7]。嚴格按照這些格式規范,將變化后的坐標、標注等圖元信息,編寫進去,輸出成DXF格式文件。
圖4為內蒙古某鉛鋅多金屬礦區高精度磁測掃面原始數據平面剖面圖,該圖能比較好的反映出原始數據的質量和該礦區的磁場分布狀況,據此結合地質資料進行一些推斷解釋。圖中直線為基線,曲線為剖面曲線,右側數字為測線編號。圖中可以看到多處異常區域和數據突跳點。
該掃面區域的西南部存在大面積的礦化蝕變,東北部存在兩條條帶狀的礦體。由于容礦構造的原因,這3處地質信息在本次的磁法掃面中均有較好的反應。圖中異常Ⅰ位于西南區域礦化蝕變帶的位置,且該蝕變帶走向與磁異常走向一致,判斷該處異常與蝕變帶有關聯。為獲得更多該蝕變帶的地質信息,該處磁法數據需進行深一步的處理。異常Ⅱ、Ⅲ分別為東北部兩條礦體的表現。異常Ⅳ為突跳數據引起,推斷為人文干擾等非地質因素所致,沒有找礦意義,進一步的處理時需剔除。

圖4 應用效果
以上程序主要是用于解決物探平剖圖的繪制問題,既解決了以AutoCAD為主作圖軟件存在的困難,也滿足以MAPGIS為主作圖軟件的需求。AutoCAD和MAPGIS之間文件格式的轉化是非常簡單的,MAPGIS軟件具有此功能。將AutoCAD文件保存成DXF格式,打開MAPGIS主界面。圖形轉換=>文件轉換=>輸入=>裝入DXF,裝入需要轉換的文件后,保存為MAPGIS默認的WT、WL、WP格式的文件即可[8]。
也可以將AutoCAD中繪制的圖件通過虛擬打印機輸出成圖片格式或PDF文件,根據作者的經驗,直接輸出的圖片格式效果不是很理想,可以先輸出為PDF文件,再用Photoshop打開此文件另存為jpg等格式文件,這樣出的圖片清晰度較高。具體步驟如下,首先添加虛擬打印機:文件=>繪圖儀管理器=>添加繪圖儀向導=>下一步=>我的電腦=>生產商、型號,選擇對應虛擬硬件,然后一路點擊“下一步”到完成。需要輸出文件時,調用軟件中的打印命令調出對話框,在“打印機/繪圖儀的名稱”中選擇對應的虛擬硬件,在做完其他設置后點“確定”,選擇保存地址,完成繪制。
利用C#語言進行AutoCAD、Surfer等軟件的二次開發,擴展軟件的使用功能,簡化了工作程序,提高了工作效率,節約了時間成本。
參考文獻:
[1]楊利容,賴德軍,羅 娟. 基于AutoCAD實測地質剖面數字成圖關鍵技術[J]. 物探與化探,2011, 35(2): 261-264.
[2]王 鑄. 利用ActiveX Automation在AutoCAD中自動切取地質剖面[J]. 工程地質計算機應用,2009 (4): 32-38.
[3]王成錫,張明華. MapInfo和Surfer聯合二次開發在區域重力信息系統中的應用[J]. 物探與化探,2008, 32(4): 445-447.
[4]王斌武. 基于C#的數據篩選工具的開發[J]. 科技風,2013(11): 67-68.
[5]堯 燕.基于VC#.NET對AutoCAD二次開發方法的研究[J]. 科學技術與工程,2008, 8(23):6365-6367.
[6]周 陽,黃浩云,李志強. 基于C#與Surfer Automation完成大氣污染擴散等值線自動化生成[J]. 環境科學與管理,2011, 36(1): 31-34.
[7]陳 浩,陳 宏. 解讀AUTOCAD的DXF文件[J]. 貴州科學,2002, 20(4):125-127
[8]于忠杰. MAPGIS和AtuoCAD間的數據轉換問題[J]. 貴州地質,2010, 27(2): 151-154.