張博
【摘 要】本文簡(jiǎn)述了利用VB編程語(yǔ)言對(duì)AutoCAD進(jìn)行二次開(kāi)發(fā)的原理和方法,并結(jié)合筆者的實(shí)踐,以編制水文斷面繪圖程序?yàn)槔接懥薞B與AutoCAD的連接、繪制縱斷面的數(shù)據(jù)格式、數(shù)據(jù)轉(zhuǎn)換,以實(shí)現(xiàn)快速繪制縱斷面。
【關(guān)鍵詞】AutoCAD;二次開(kāi)發(fā);VB
0 概述
AutoCAD是由美國(guó)Autodesk公司于20世紀(jì)80年代初為微機(jī)上應(yīng)用CAD技術(shù)而開(kāi)發(fā)的繪圖程序軟件包,經(jīng)過(guò)不斷地完善,現(xiàn)已經(jīng)成為國(guó)際上廣為流行的繪圖工具。由于它具有完善的繪圖功能、良好的用戶界面、易學(xué)易用等特點(diǎn),因而被廣泛地應(yīng)用于測(cè)繪、規(guī)劃、設(shè)計(jì)、土地管理等行業(yè),AutoCAD為用戶提供了多種二次開(kāi)發(fā)工具,其中主要有AutoLISP、ObjectARX和VBA。
AutoLISP是一種解釋性的表結(jié)構(gòu)處理語(yǔ)言,具有語(yǔ)言結(jié)構(gòu)簡(jiǎn)單、開(kāi)發(fā)周期短、不依賴于操作平臺(tái)的特點(diǎn),但是作為解釋語(yǔ)言,其運(yùn)行速度和保密性方面有一定的缺陷,并且不適合開(kāi)發(fā)有復(fù)雜運(yùn)算的軟件。
ObjectARX是一種較新的開(kāi)發(fā)AutoCAD應(yīng)用程序的工具,它以C++為編程語(yǔ)言,采用先進(jìn)的面向?qū)ο蟮木幊淘?,提供可與AutoCAD直接交互的開(kāi)發(fā)環(huán)境,能使用戶方便快捷地開(kāi)發(fā)出高效簡(jiǎn)潔的AutoCAD應(yīng)用程序。但是C++語(yǔ)言較復(fù)雜,開(kāi)發(fā)ARX應(yīng)用程序需要較多的軟件開(kāi)發(fā)經(jīng)驗(yàn),也不適合作為非軟件開(kāi)發(fā)專業(yè)人員的測(cè)繪工作者的開(kāi)發(fā)工具。
Visual Basic(VB)是美國(guó)微軟公司推出的程序開(kāi)發(fā)工具,它簡(jiǎn)單易學(xué),適用面廣,在Windows平臺(tái)上被廣泛使用。為此,可以作為測(cè)繪工作者進(jìn)行程序設(shè)計(jì)的首選工具。
1 ActiveX Automation技術(shù)與VB
1.1 ActiveX Automation技術(shù)
ActiveX Automation是微軟公司的一個(gè)技術(shù)標(biāo)準(zhǔn),其宗旨是在Windows系統(tǒng)的統(tǒng)一管理下協(xié)調(diào)不同的應(yīng)用程序,允許這此應(yīng)用程序之間相互溝通、相互控制,但兩個(gè)應(yīng)用程序間的溝通不是對(duì)等的,其中,一個(gè)程序稱為客戶程序(Client),另一個(gè)程序稱為服務(wù)程序(Server),一般情況下,由客戶程序提出需要進(jìn)行什么操作,服務(wù)程序針對(duì)操作申請(qǐng),完成相應(yīng)的命令。AutoCAD R14后的版本中就引入了ActiveX Automation技術(shù),利用AutoCAD ActiveX技術(shù),可以從其它外部應(yīng)用程序(如VB)或AutoCAD內(nèi)部(AutoCAD VBA)操作AutoCAD對(duì)象。VB是最為常用的支持ActiveX Automation技術(shù)的開(kāi)發(fā)工具,它可以編制出ActiveX的客戶程序,用來(lái)操作AutoCAD。即利用VB編制能與AutoCAD相溝通的應(yīng)用程序,以此來(lái)實(shí)現(xiàn)AutoCAD的二次開(kāi)發(fā)。
2 開(kāi)發(fā)AutoCAD2004應(yīng)用程序?qū)嵗?/p>
筆者用VB6.0編制了水文斷面機(jī)助制圖程序,程序設(shè)計(jì)流程圖、界面及部分源代碼見(jiàn)下圖。該程序通過(guò)讀取野外采集的縱斷面數(shù)據(jù)文件,自動(dòng)計(jì)算和提取完成制圖所需的亙長(zhǎng)和高程數(shù)據(jù)并寫(xiě)成文件,然后完成縱斷面的繪制,并可通過(guò)對(duì)界面的操作來(lái)控制制圖的橫向比例尺及縱向比例尺。
2.1 程序設(shè)計(jì)整體流程
2.2 數(shù)據(jù)預(yù)處理
外業(yè)采集數(shù)據(jù)時(shí)有時(shí)一天可能采集多個(gè)轉(zhuǎn)角之間的斷面數(shù)據(jù),本段程序主要就是根據(jù)已知的轉(zhuǎn)角坐標(biāo)、把外業(yè)采集的數(shù)據(jù)自動(dòng)進(jìn)行分類,不同轉(zhuǎn)角耐張之間的數(shù)據(jù)生成一個(gè)文件。下面以一個(gè)耐張之間的數(shù)據(jù)簡(jiǎn)單介紹一下:
首先把新建一個(gè)轉(zhuǎn)角坐標(biāo)文件,本例中命名為ZUO.TXT。運(yùn)行程序的數(shù)據(jù)預(yù)處理,點(diǎn)擊原始數(shù),在提示窗口中選擇外業(yè)采集的數(shù)據(jù),本例中命名為斷面數(shù)據(jù).TXT。在點(diǎn)擊轉(zhuǎn)角數(shù)據(jù),提示窗口中選擇已經(jīng)建好的ZUO.TXT。最后點(diǎn)擊預(yù)處理命令,生成數(shù)據(jù)文件如圖5,在點(diǎn)擊程序中的生成斷面數(shù)據(jù)命令,即生成數(shù)據(jù)文件如圖6。主要代碼如下:
3 結(jié)束語(yǔ)
本文以編制水文斷面繪圖程序?yàn)槔接懥薞B與AutoCAD的連接、繪制縱斷面的數(shù)據(jù)格式、數(shù)據(jù)轉(zhuǎn)換,以實(shí)現(xiàn)快速繪制縱斷面。如今,計(jì)算機(jī)科學(xué)的飛速發(fā)展和數(shù)字化測(cè)繪的日益普及,對(duì)我們測(cè)繪工作者也提出了更高的要求,如果測(cè)繪工作者能夠掌握一種編程語(yǔ)言,會(huì)對(duì)自己的工作大有裨益。而VB由于其簡(jiǎn)單易學(xué),功能強(qiáng)大,應(yīng)該成為我們測(cè)繪工作者學(xué)習(xí)編程語(yǔ)言的首選工具。
【參考文獻(xiàn)】
[1]段興.Visual Basic6.0控件實(shí)用程序設(shè)計(jì)100例[M].人民郵電出版社,2002,10.
[2]申石磊,季超.Visual Basic程序設(shè)計(jì)基礎(chǔ)[M].高等教育出版社,2010,03.
[責(zé)任編輯:薛俊歌]