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