萬志剛,林超峰
(中山市測繪工程有限公司,廣東中山528403)
目前,在測繪工作中使用單一軟件不可能解決所有問題,需要多種應用軟件配合使用來處理數據、管理成果,但應用軟件種類數量的增多也增加了數據處理的工作量和復雜度。如何能夠既可以盡量多地利用已有成熟的軟件功能,又可以僅對基本數據進行管理,降低數據管理難度,提高數據處理管理的效率,是對測繪工作者日常工作的一個新的要求。
為此,筆者研究了基于COM的編程技術,在VB上實現,可以對支持COM接口的應用軟件的功能進行間接調用,將多個數據處理管理過程集中在一個工具軟件上,實現了操作一體化,為今后工作提供了一個普適的解決方案。
COM為Component Object Model的縮寫,中文稱為組件對象模型,是微軟實現各軟件之間相互交互的一項軟件技術。應用軟件通過支持COM接口,可讓外部程序訪問其內部的數據,調用內部的功能。利用此技術可實現對多個應用軟件的外部控制以及各應用軟件間的進程通信,達到多種應用軟件協同作業的目的。其原理示意如圖1所示。
現階段在微軟操作系統上運行的很多軟件都支持COM 接口,例如 Office Word、Excel,數據庫 Access、SQL server,繪圖軟件AutoCAD以及一些COM組件,例如超圖(SuperMap)地理信息系統開發組件等。利用微軟的易學易用的快速開發平臺VB6,可連接軟件開放的COM接口,訪問軟件數據,調用軟件功能,從而實現各種應用。

圖1 集成工具通過COM接口調用多個軟件數據和函數原理
以連接AutoCAD COM接口為例,啟動VB6,點擊菜單中的“工程”主菜單,在下拉菜單中選擇“引用”菜單項,會跳出引用對話框,選中所需的應用軟件提供的接口文件,確定即可。例如連接AutoCAD 2006版接口,找到“AutoCAD 2006 Type Library”的選擇行,在前面打鉤后點擊確定即可,如圖2所示,其他軟件COM接口可同樣按上述方法連接。

圖2 連接AutoCAD COM接口
點擊工具欄中的“對象瀏覽器”圖標,會跳出對話框用于查看COM接口提供的各種對象,對象中包含多個可訪問的數據和函數等,如圖3。在相應代碼段中即可添加對這些對象(數據和函數)的變量聲明、創建、訪問、編輯等操作。

圖3 訪問AutoCAD COM接口中的對象
(1)AutoCAD
AutoCAD提供的對象主要有以下幾種:
AcadApplication代表正在運行的AutoCAD軟件,AcadDocument代表打開的圖形文件;AcadDocument.ModelSpace代表此圖形文件的模型空間(創建圖形或編輯已有圖形主要在此對象中),AddText代表創建一個文本對象的函數;AcadLWpolyline代表輕量級多段線(繪圖中主要使用的線類型);AcadLWpolyline.Coordinates和Coordinate代表此多段線各節點的坐標數組屬性數據。
假設打開指定路徑下的一個圖形文件,代碼如下:

同理可循環打開多個文件。
假設pl為CAD中選中的一條多段線,plsum為此線的節點總數,coord為節點數組(只記錄 X,Y),ltscale為此圖的線型比例以控制符號大小,cir為圓。可得到這條線的所有坐標,還可以在每個節點處創建界址點符號,其代碼如下:


(2)Excel
Excel提供的COM接口對象,包括Excel.Application,Excel.Workbook,Excel.Worksheet,Excel.Application.Cells()。
假設啟動一個新的Excel軟件,新建一個表格文件,設定一個表格頁面,然后在某一單元格中讀取或填寫數值。代碼如下:

(3)SuperMap
SuperMap超圖COM組件提供了眾多的接口對象,主要使用的是核心組件,包括數據源對象soData-Source,數據集對象soDataSet,記錄集對象soRecordSet和若干幾何對象例如點對象soGeoPoint,線對象soGeo-Line,面對象soGeoRegion等。
假設連接數據源(文件數據庫),代碼如下

假設從打開的AutoCAD中選擇一條閉合多段線,轉為soGeoRegion,填入相關屬性,加入數據源中的指定面數據集,代碼如下:


基于COM技術的程序可以應用在測繪工作中的各環節(包括數據采集、內業處理、成圖、數據管理、報表生成工作等),可以間接控制多個應用軟件按流程完成項目各個環節的數據處理工作,提高工作效率,減少人為錯漏。
例如對測繪工作中常用的繪圖軟件AutoCAD,可以實現間接或交互操作AutoCAD,使其自動打開指定的圖形文件,訪問文件中相關的圖形,對其進行編輯、導出、刪除,也可新增圖形,對其添加擴展數據等操作,甚至可以自動批量打開多個圖形文件,統一做特定處理。
對Office辦公軟件,可以將數據處理的結果輸出為固定格式的報表或讀取Office文檔中的數據進行后續處理。
對于地理信息系統軟件,可以將CAD中的圖形提取出來導入地理信息系統組件中并賦予屬性或者提取地理信息系統組件中的圖形要素導出到CAD中。
利用數據庫的數據管理、查詢功能與CAD的圖形編輯以及Office軟件的文檔報表輸出的功能,結合各自優勢于一體,可以實現一個多功能的作業環境。常見應用如下:
(1)歷史圖件的管理查詢:可根據數據庫中的歷史圖件的信息(圖名、地址、編號、面積)進行文件查詢并命令CAD打開、編輯該文件。如圖4,在查詢對話框輸入尋找的文件編號,即可在主界面顯示查詢結果,雙擊結果即可在AutoCAD中打開此文件。
(2)管線圖繪制:自動讀取管線調查表(Excel表)中的數據(包括管線節點坐標、連接點點號、屬性等),在CAD中繪制出管線圖。如圖5,選取相應管線調查表文件,自動在AutoCAD上繪制成圖。

圖4 歷史圖件資料的查詢和調用

圖5 自動讀取數據繪制管線圖
(3)數據報表的生成:可以提取CAD中指定圖元的幾何和屬性信息,進行一些必要的計算處理后在Word和Excel生成報表。如圖6,選取菜單中命令后即可在AutoCAD中選取相應界址線,會自動創建新的Word文檔繪制表格填入相應坐標和邊長。

圖6 Office報表的生成
地理信息系統是管理地理要素圖形及其屬性的最佳工具,在城市管理和決策支持方面發揮著重要作用,測繪肩負地理信息系統的數據采集和整理等前期工作,與其有著緊密的聯系。如圖7所示,通過地理信息系統二次開發的COM組件,可訪問地理信息系統內部的數據,并導出到CAD等其他應用軟件中,完成相關工作;也可以自AutoCAD中選取界址線并在屬性對話框中填入相應屬性值后導入到地理信息系統組件中。

圖7 CAD、SuperMap組件間的交互
隨著對各應用軟件提供的COM接口各項屬性和功能的更深入了解,建立的應用工具也會發揮更大的作用。在數字化測繪向信息化測繪快速轉變的今天,測繪數據的處理、管理及應用的水平高低直接影響到工作的效率與質量,利用COM技術可實現數據在各應用軟件間的交互,從而可對數據進行流程化、集中化和自動化等一體化操作,拓展了應用,提高了自動化程度,使整個工作達到事半功倍的效果。
[1]Ivar Jacobson,Martin Griss,Patrik Jonsson.軟件復用-結構、過程和組織[M].北京:機械工業出版社,2003
[2]JORDAN S.Visual Basic 6編程寶典[M].北京:電子工業出版社,2004
[3]張帆.AutoCAD VBA二次開發教程[M].北京:武漢大學出版社,2006
[4]張正林.SuperMap GIS應用與開發教程[M].北京:清華大學出版社,2006
[5]北京超圖軟件股份有限公司.SuperMap Objects開發教程[M].2008
[6]CJJ61-2003.城市地下管線探測技術規程[S].