陳向平 ,王斌武 ,王順國
(1.華北地質(zhì)勘查局綜合普查大隊, 河北 三河市 065201;2.中南大學(xué)地球科學(xué)與信息物理學(xué)院, 湖南 長沙 410083 )
在地質(zhì)勘查成果中,一幅圖件包含有多條剖面曲線是常見的圖形,比如物探中的剖面平面圖、化探中各元素分布剖面圖等。但是目前常用軟件包括AutoCAD,Surfer,MapGis,Grapher等并不支持一次性多條繪制,往往需要分條繪制,這樣既浪費時間,也可能因為坐標定位不準而產(chǎn)生錯誤[1-2]。ModelVision、Magpic等數(shù)據(jù)處理軟件,雖然能方便快捷的制作出剖面平面圖,但是不遵守比例尺約束,也無法進一步的編輯修改。
Autodesk公司推出的Auto CAD作為計算機輔助設(shè)計(Computer Aided Design)領(lǐng)域內(nèi)的龍頭老大,在計算機繪圖和設(shè)計領(lǐng)域已經(jīng)領(lǐng)導(dǎo)潮流多年,是世界上工程研究、工程設(shè)計中使用最廣最頻繁的軟件。如此多的工程技術(shù)人員對其情有獨鐘,不只因為其強大的圖形繪制功能,還因為可將其作為一個平臺,編寫適合自己專業(yè)的腳本或者軟件進行二次開發(fā),以方便快捷的繪制各種圖件。該公司開發(fā)的用于AutoCAD與其它軟件之間進行CAD數(shù)據(jù)交換的CAD數(shù)據(jù)文件格式 DXF,是一種開放的矢量數(shù)據(jù)格式,包含對應(yīng)的DWG文件的全部信息。具有很強的移植性,絕大多數(shù)的繪圖軟件都能識別該格式,已經(jīng)成為多種軟件之間圖形交換的中介。
Golden Software公司開發(fā)的Surfer軟件已經(jīng)被物探工作者廣泛使用,該軟件同樣支持二次開發(fā)[3],可以擴充功能。
基于Auto CAD和Surfer支持二次開發(fā)的功能,根據(jù)目前的實際需要,可以利用.net平臺編寫快捷簡單繪制多剖面的軟件,從而有效解決上述問題。
將物探數(shù)據(jù)(如視極化率、視電阻率等)在Excel等軟件中整理成一定格式,保存為Excel默認格式或者文本文件。啟動程序調(diào)入數(shù)據(jù)后,在程序界面進行參數(shù)設(shè)置,計算曲線角點位置、連接AutoCAD并自動完成平剖圖的繪制。
在AutoCAD中對繪制的平剖圖進行觀察,分析圖形布置、根據(jù)需要對軟件的參數(shù)做實時修改,得到所需圖件后保存為DWG、DXF或其他AutoCAD格式,也可以輸出成圖片文件或者PDF格式。
利用同樣的思路,也可以調(diào)用Surfer進行圖件繪制,如果電腦上并未安裝AutoCAD和Surfer,軟件可以直接輸出ASCII 格式的 DXF文件。
原始的成圖數(shù)據(jù)包括了線號、點號、X坐標、Y坐標、測量值,線號與點號的數(shù)據(jù)主要用于成圖后剖面的標注,X坐標、Y坐標、測量值均通過一定的計算,用于確定剖面曲線的節(jié)點位置。將原始數(shù)據(jù)整理成如下圖格式,保存為txt、dat等文本格式(見圖1)。
根據(jù)需要,將程序的界面分為3大塊(見圖2) 。
(1) 主要是對程序的操作,包括數(shù)據(jù)的加載、連接AutoCAD、Surfer等并制圖;
(2) 原始數(shù)據(jù)的顯示,通過dataGridView窗體。
(3) 參數(shù)設(shè)置:
兩個必選類:圖幅比例、基線位置等;剖面曲線參數(shù)包括顏色、線寬、線形;
三個可選類:線號標注參數(shù)、填充參數(shù)、數(shù)據(jù)范圍;
利用工具箱可以快速的設(shè)計定制軟件界面。
圖1 數(shù)據(jù)方式
圖2 界面示例
利用函數(shù)StreamReader、ReadLine讀取原始文件,并賦于dataGridView窗體顯示,以便進行數(shù)據(jù)檢查和修改[4];讀取dataGridView窗體中X坐標、Y坐標、測量數(shù)值V與設(shè)定的參數(shù),進行數(shù)據(jù)變換,以確定剖面曲線節(jié)點(X1,Y1,0)的數(shù)值。轉(zhuǎn)換原理見圖3。
圖3 坐標換算
X、Y為實際坐標數(shù)據(jù),φ為測線方位角,d為測量數(shù)值V與縱向比例參數(shù)的比值??梢酝扑愠觯?/p>
X1=X+d×cosφ
Y1=Y+d×sinφ
AutoCAD二次開發(fā)過程如下。在Microsoft Visual Studio2010中添加引用AutoCAD 2013 Type Library,在代碼中添加using AutoCAD[5]。
AutoCAD.AcadApplication AcadApp 創(chuàng)建AutoCAD對象
AutoCAD.AcadDocument AcadDoc創(chuàng)建名為AcadDoc的文檔;
將轉(zhuǎn)變后的成圖坐標數(shù)據(jù)X1、Y1賦予double類型Coord數(shù)組變量,用函數(shù)AcadDoc.ModelSpace.Add3DPoly(Coord)完成曲線繪制。
完善剖面曲線的參數(shù)修改、標注等。標注使用 AcadDoc.ModelSpace.AddText()方法。
Surfer的二次開發(fā)跟AutoCAD的非常類似,在調(diào)用Surfer時必須添加Surfer 10 Type Library引用,代碼中添加using Surfer;
Surfer.Application SrfApp; 創(chuàng)建AutoCAD對象
Surfer.IDocuments Srfdoc;創(chuàng)建名為Srfdoc的IDocuments
Surfer.IPlotDocument SrfPDoc創(chuàng)建名為SrfDoc的IPlotDocument
Surfer.IShapes SrfShp = SrfPDoc.Shapes;創(chuàng)建名為Srfdoc的 SrfPDoc.Shapes
然后調(diào)用 SrfShp.AddPolyLine()等函數(shù)進行圖件繪制,SrfShp.AddText()函數(shù)進行文字標注等工作[6]。
ASCII格式的DXF文件輸出較為簡單,它由很多的“組碼”和“值”組成的“數(shù)據(jù)對”構(gòu)造而成,組碼指定其后的值的類型和用途。每個組碼和值必須為單獨的一行。 DXF文件被組織成為多個“段”(section),每個段以組碼“0”和字符串“SECTION”開頭,緊接著是組碼“2”和表示段名的字符串(如HEADER)。段的中間,可以使用組碼和值定義段中的元素。段的結(jié)尾使用組碼“0”和字符串“ENDSEC”來定義[7]。嚴格按照這些格式規(guī)范,將變化后的坐標、標注等圖元信息,編寫進去,輸出成DXF格式文件。
圖4為內(nèi)蒙古某鉛鋅多金屬礦區(qū)高精度磁測掃面原始數(shù)據(jù)平面剖面圖,該圖能比較好的反映出原始數(shù)據(jù)的質(zhì)量和該礦區(qū)的磁場分布狀況,據(jù)此結(jié)合地質(zhì)資料進行一些推斷解釋。圖中直線為基線,曲線為剖面曲線,右側(cè)數(shù)字為測線編號。圖中可以看到多處異常區(qū)域和數(shù)據(jù)突跳點。
該掃面區(qū)域的西南部存在大面積的礦化蝕變,東北部存在兩條條帶狀的礦體。由于容礦構(gòu)造的原因,這3處地質(zhì)信息在本次的磁法掃面中均有較好的反應(yīng)。圖中異常Ⅰ位于西南區(qū)域礦化蝕變帶的位置,且該蝕變帶走向與磁異常走向一致,判斷該處異常與蝕變帶有關(guān)聯(lián)。為獲得更多該蝕變帶的地質(zhì)信息,該處磁法數(shù)據(jù)需進行深一步的處理。異常Ⅱ、Ⅲ分別為東北部兩條礦體的表現(xiàn)。異常Ⅳ為突跳數(shù)據(jù)引起,推斷為人文干擾等非地質(zhì)因素所致,沒有找礦意義,進一步的處理時需剔除。
圖4 應(yīng)用效果
以上程序主要是用于解決物探平剖圖的繪制問題,既解決了以AutoCAD為主作圖軟件存在的困難,也滿足以MAPGIS為主作圖軟件的需求。AutoCAD和MAPGIS之間文件格式的轉(zhuǎn)化是非常簡單的,MAPGIS軟件具有此功能。將AutoCAD文件保存成DXF格式,打開MAPGIS主界面。圖形轉(zhuǎn)換=>文件轉(zhuǎn)換=>輸入=>裝入DXF,裝入需要轉(zhuǎn)換的文件后,保存為MAPGIS默認的WT、WL、WP格式的文件即可[8]。
也可以將AutoCAD中繪制的圖件通過虛擬打印機輸出成圖片格式或PDF文件,根據(jù)作者的經(jīng)驗,直接輸出的圖片格式效果不是很理想,可以先輸出為PDF文件,再用Photoshop打開此文件另存為jpg等格式文件,這樣出的圖片清晰度較高。具體步驟如下,首先添加虛擬打印機:文件=>繪圖儀管理器=>添加繪圖儀向?qū)?>下一步=>我的電腦=>生產(chǎn)商、型號,選擇對應(yīng)虛擬硬件,然后一路點擊“下一步”到完成。需要輸出文件時,調(diào)用軟件中的打印命令調(diào)出對話框,在“打印機/繪圖儀的名稱”中選擇對應(yīng)的虛擬硬件,在做完其他設(shè)置后點“確定”,選擇保存地址,完成繪制。
利用C#語言進行AutoCAD、Surfer等軟件的二次開發(fā),擴展軟件的使用功能,簡化了工作程序,提高了工作效率,節(jié)約了時間成本。
參考文獻:
[1]楊利容,賴德軍,羅 娟. 基于AutoCAD實測地質(zhì)剖面數(shù)字成圖關(guān)鍵技術(shù)[J]. 物探與化探,2011, 35(2): 261-264.
[2]王 鑄. 利用ActiveX Automation在AutoCAD中自動切取地質(zhì)剖面[J]. 工程地質(zhì)計算機應(yīng)用,2009 (4): 32-38.
[3]王成錫,張明華. MapInfo和Surfer聯(lián)合二次開發(fā)在區(qū)域重力信息系統(tǒng)中的應(yīng)用[J]. 物探與化探,2008, 32(4): 445-447.
[4]王斌武. 基于C#的數(shù)據(jù)篩選工具的開發(fā)[J]. 科技風,2013(11): 67-68.
[5]堯 燕.基于VC#.NET對AutoCAD二次開發(fā)方法的研究[J]. 科學(xué)技術(shù)與工程,2008, 8(23):6365-6367.
[6]周 陽,黃浩云,李志強. 基于C#與Surfer Automation完成大氣污染擴散等值線自動化生成[J]. 環(huán)境科學(xué)與管理,2011, 36(1): 31-34.
[7]陳 浩,陳 宏. 解讀AUTOCAD的DXF文件[J]. 貴州科學(xué),2002, 20(4):125-127
[8]于忠杰. MAPGIS和AtuoCAD間的數(shù)據(jù)轉(zhuǎn)換問題[J]. 貴州地質(zhì),2010, 27(2): 151-154.