(長江宜昌航道局 湖北宜昌 443002)
AutoCAD VBA 工程是許多代碼模塊、類型模塊和窗體的集合,它們一同運作,執(zhí)行給定的功能。工程可以存儲在AutoCAD 圖形中,也可以作為獨立的文件存儲[1]。
AutoCAD VBA是運行在AutoCAD 進程內(nèi)部的,不必通過與應(yīng)用程序進行鏈接,就可以鏈接到AutoCAD中。AutoCAD VBA是通過ThisDrawing 對象鏈接到當前AutoCAD 進程的活動圖形。通過使用ThisDrawing 直接獲得訪問當前文檔對象和所有相關(guān)的方法、屬性以及所有在該層次中的其他對象的權(quán)力[2]。本文通過VBA 編程能有效提取CAD 海圖中數(shù)字分離標注式水深,具有提取準確、自動化程度高的特點。且將以往繁雜的提取工作簡化,提高了工作效率,輸出格式為excel表格,具有良好的可操作性。
根據(jù)中國海圖圖式國標規(guī)定[3],水深標注一般采用數(shù)字分離式標注方法。如右上圖所示,數(shù)字分離式標注由整數(shù)部分和小數(shù)部分兩部分組成,沒有小數(shù)點,靠整數(shù)部分與小數(shù)部分字體大小和相對位置區(qū)分。整數(shù)部分位于小數(shù)部分左側(cè),字體比小數(shù)部分偏大,位置略高。在整數(shù)位下添加下劃線代表負號,表示干出高度(深度基準面上)。整數(shù)部分和小數(shù)部分各自獨立,兩者并不關(guān)聯(lián)。水深注記(整數(shù))的中心即為水深的實測點位。
數(shù)字分離式水深標注示意圖(水深10.3m)
打開AutoCAD 2004,然后點擊工具——宏——Vba 管理器,然后點擊新建,建立一個新的Vba 工程,然后點擊Visual basic 編輯器,打開Visual basic編輯器,點擊菜單插入——模塊,在出現(xiàn)代碼窗口輸入以下過程代碼[4][5]:
'為0層的水深數(shù)據(jù)建立一個選擇集
'區(qū)分整數(shù)text 和小數(shù)text 并分別建立索引
'提取數(shù)據(jù)并組合
以某碼頭工程數(shù)據(jù)為實例,最后處理提取出來的excel表格數(shù)據(jù),與原圖對比:
原圖
處理后
數(shù)字分離式水深標注是海圖水深標注最常用形式之一,但自動化提取水深相對困難。本文提供了一種利用VBA 編程自動提取數(shù)字分離式水深標注的方法,提高工程技術(shù)人員工作效率,節(jié)省時間與精力。因此掌握一門編程語言,對測繪工作者是很有裨益的。而VBA 由于其簡單易學(xué),功能強大,并內(nèi)嵌于AutoCAD,應(yīng)該成為我們測繪工作者學(xué)習(xí)AutoCAD二次開發(fā)的首選工具。
[1](美)杰萊(Jelen,B.),(美)斯太德(Syrstad,T.).著,郭兵英譯.Excel 2007 VBA 與宏完全剖析[M].人民郵電出版社,2008.
[2]李長勛.AutoCAD ActiveX 二次開發(fā)技術(shù)[M].國防工業(yè)出版社,2005.
[3]GB12319-1998.中國海圖圖式[S].中國標準出版社,1999.
[4]麥苗,高峰.應(yīng)用VBA 技術(shù)實現(xiàn)提取水深數(shù)據(jù)自動化[J].水道港口,2006.04..
[5]新智工作室.VB6.0中文版教程[M].電子工業(yè)出版社,2001.