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