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