錢 敏
(交通運輸部天津水運工程科學研究所,天津 300456)
AutoCAD VBA程序開發在水運工程研究中的應用
錢 敏
(交通運輸部天津水運工程科學研究所,天津 300456)
通過對AutoCAD的VBA二次開發技術的介紹,并結合水運工程研究中遇到的實際問題和實踐經驗,給出了VBA二次開發技術在復雜流場的自動繪制、不規則水深數據的提取2個實例的應用。通過大量的研究實踐表明,采用VBA程序對AutoCAD進行二次開發,能夠對海量數據進行快速準確的處理,能夠大大提高數據和圖形處理的效率,并在水運工程研究中能夠得到廣泛的應用。
AutoCAD;VBA;自動繪制;自動提取
Biography:QIAN Min(1979-),female,engineer.
近年來隨著計算機技術的飛速發展,各類軟件、程序在管理、工程、研究等領域得到了廣泛應用,并快速有效地解決了大量問題。在水運工程設計、研究等方面,3S技術、CAD自動成圖技術等也得到了空前的應用和發展,不僅為設計人員提供了精確、精美的操作平臺,也為研究人員在現場資料處理、數據計算、成果演示等方面提供了強有力的工具[1-2]。但由于很多軟件都主要提供了應用功能,缺少二次開發的空間,因此如果大量數據在格式上或處理結果上有特別需要,一些軟件就很難直接滿足要求,這在水運工程研究中也是常常遇到的問題。因此就需要選取適合的軟件,并能夠在此基礎上進行二次編程開發,這樣既可以提高工作效率,也能夠適應處理結果的隨意性。AutoCAD繪圖軟件近年來在各類行業的設計及研究中得到了廣泛應用,該軟件不僅能夠很好地處理矢量圖,也具備VBA等二次開發功能,設計或研究人員可在此平臺上根據需要進行程序編制,實現繪圖、數據讀寫、數據計算等多種功能。本文首先對AutoCAD的VBA二次開發技術進行介紹,根據作者近年來在水運工程研究中應用VBA開發的實踐經驗,給出VBA在該領域多項應用實例。
AutoCAD是Autodesk公司于20世紀80年代為計算機應用CAD技術(Computer Aided Design)而開發的專業繪圖軟件包,由于它具有完善的繪圖功能、良好的用戶界面、易學易用等特點,近年來在各類行業的設計及研究中得到了廣泛應用。該款軟件為用戶提供了多種二次開發工具,其中常用的有AutoLISP、VBA、ObjectARX、*.net 4種方式。其中VBA是VB的一個子集,是美國微軟公司推出的程序開發工具,它簡單易學,適用面廣,也能夠在Windows平臺上被廣泛使用,是設計、研究人員進行程序設計的首選工具。近年來,對于AutoCAD軟件中VBA程序的二次開發已有過大量研究和實踐,比如在港口斷面測量的計算機成圖方面,蔣國軍、王朝[3]利用VBA對CAD進行二次開發,采用人機對話可視化界面,開發出界面友好的斷面自動成圖軟件,不僅提高了測量精度,也大大提高成圖效率。王小敏[4]提出在AutoCAD2000圖形支承平臺下,使用AutoCAD VBA及ActiveX來進行公路路線縱斷面CAD系統的開發。麥苗、高峰[5]應用VBA技術實現了提取水深數據的自動化技術。
VBA(Visual Basic for Application)是新一代標準宏語言,具有相當完整的高級語言特征。VBA在AutoCAD中主要包括語言引擎和集成開發環境(IDE),前者應用程序中被執行的逐條代碼,后者是提供編輯和調試VBA代碼的工具。VBA是在AutoCAD進程內部運行的,可直接連接到AutoCAD。其主要通過ThisDrawing對象鏈接到當前AutoCAD進程的活動圖形。利用ThisDrawing直接獲得訪問當前文檔對象和所有相關的方法、屬性。在AutoCAD環境中與繪圖相關的各類對象封裝了不同的圖形操作功能,啟動某項程序就需要使用應用程序對象。這些對象均包含屬性、方法,這些屬性和方法也是與外界的接口。下面就AutoCAD中對象的模型框架作一些簡介[6]:
(1)AutoCAD.Appilcation(應用程序對象)為最頂層,獲取它就意味著啟動了AutoCAD應用程序,也就找到了訪問其他對象的根接口。
(2)Document(圖形文檔對象)及其集合Documents是AutoCAD對象模型的第二層,Document相當于一打開的*.Dwg文件,它主要連接AutoCAD的繪圖對象集合及對象。Document對象包含Layerscollection、Linetypescollection、Textstylecollection、Utility等子對象,用戶可使用Document對象的對應屬性去訪問它們。
(3)Modelspace Entites Collectiont和Paperspace Entites Collection是AutoCAD對象模型的第三層,它們是Document的子對象,Circle、Line、Point、Polyline、shape、Text等又是它們的子對象,即第四層對象,而這些對象正是組成圖形的基本實體。
上述即為AutoCAD VBA程序語言的基本結構和原理,此處不再贅述,以下主要以幾項實例進一步闡述其應用情況。
現場大范圍多垂線水文測量以及物理模型、數學模型等試驗的模擬結果會產生大量矢量數據,采用程序快速、準確地繪制出矢量圖是必要的。以下編制的VBA程序能夠處理和繪制類似大批量流場數據,程序拓展性和隨意性強,不僅能夠結合CAD地形及方案繪制復雜流場,而且能夠在其中設置流場顏色、箭頭尺寸、旋轉角度,并可進一步拓展加入所需要的數學計算。
此外,在潮流數值模擬時,由于網格剖分的疏密往往隨關注區域不同而有所差異;物理模型流場試驗中,也會產生大量的疏密不均的原始數據,這些都會導致直接繪制的流場出現疏密不均的狀況。因此,在繪制流場前有必要對原始數據進行前處理,并采用適當的方法進行數據插值處理,將原有流場數據在空間上均勻化以使流場顯示效果更佳。數據均化的插值處理方法很多,一方面可直接采用Surfer、Tecplot等軟件進行數據的前處理,建立適當的網格進行均化插值。另外,也可以將一些插值算法直接植入程序中,常用的算法包括距離加權插值法、克里金插值法、最近鄰點插值法等,這些算法在網上或文獻中均能找到基本原理和源代碼,此處不再贅述。
以下給出VBA在AutoCAD中自動繪制流場的主體程序結構:



在提取CAD水深地形數據時,常會遇到選中的數據提取后有坐標,但沒有水深數據的情況,這主要是不同程序寫入CAD時采用的數據格式和對象不同。通常情況下,采用String對象的居多,而一旦遇到其他對象格式,則通常的程序就很難實現了。以下程序主要解決這一問題,該程序主要通過改變對象類型來實現對不同格式水深數據的提取,其中程序中的坐標值z0和文字內容zt均有選擇性地作為所需水深值。該程序的主要結構如下:


圖1 VBA程序繪制流場結果示例Fig.1 Example of flow field by VBA program
本文對AutoCAD中的二次開發程序VBA語言原理及方法進行了介紹,并結合自身經驗編制了實用VBA程序,以復雜流場的自動繪制和不規則水深數據提取2個實際案例,闡述了VBA在水運工程研究中的應用情況。大量研究實踐表明,采用VBA程序對AutoCAD進行二次開發能夠對海量數據進行快速準確的處理,也能實現矢量圖形的自動繪制,大大提高了數據和圖形處理效率,能夠在水運工程研究中得到更深入和廣泛的應用。
[1]高瑩.Acad中地形圖數據注記格式的轉換[J].水道港口,2006,27(S0):35-38.
GAO Y.Conversion of Data Annotation Format in Topographic Maps under Acad[J].Journal of Waterway and Harbor,2006,27(S0):35-38.
[2]楊鯤,陳廣利.地理信息系統與數字化測圖[J].水道港口,2000,6(2):41-42.
YANG K,CHEN G L.Geographic Information System and Digital Mapping[J].Journal of Waterway and Harbor,2000,6(2):41-42.
[3]蔣國軍,王朝.港口斷面測量計算機成圖探討[J].港工技術,2010,47(3):57-59.
JIANG G J,WANG C.Inquiry on Computer Mapping for Port Cross-section Measurement[J].Engineering Technology,2010,47(3):57-59.
[4]王小敏.基于VBA的公路縱斷面 CAD系統開發[J].交通科技,2004,202(1):31-34.
WANG X M.Basis VBA on the Research of Developing Highway Vertical Section[J].Tech.,information of Water Transportation,2004,202(1):31-34.
[5]麥苗,高峰.應用 VBA 技術實現提取水深數據自動化[J].水道港口,2006,27(2):123-126.
MAI M,GAO F.Automatic Pick-up of Water Depth Data With VBA Technique[J].Journal of Waterway and Harbor,2006,27(2):123-126.
[6]閆志剛,趙曉虎,唐宏.AutoCAD2000 在測量數據處理中的應用[J].北京測繪,2000(3):20-24.
YAN Z G,ZHAO X H,TANG H.Application of AutoCAD2000 on Survey Data Processing[J].Beijing Surveying and Mapping,2000(3):20-24.
Application of program development for AutoCAD VBA in research on port and waterway engineering
QIAN Min(Tianjin Research Institute for Water Transport Engineering,Tianjin300456,China)
The redevelopment technique for AutoCAD VBA was introduced in this paper.Combining with the problem and experience of research on port and waterway engineering,the two application examples were provided,which included the programs of automatic drawing of flow field and the extraction of irregular depth data.Lots of practices indicate that VBA can promote greatly the efficiency of processing to mass data and graph in AutoCAD,and that will be applied extensively in the research on port and waterway engineering.
AutoCAD;VBA;automatic drawing;automatic extraction
TP 311
A
1005-8443(2012)03-0270-04
2012-03-05;
2012-04-19
錢敏(1979-),女,江蘇省溧陽人,工程師,主要從事計算機軟件及遙感處理方面研究。
book=273,ebook=128