當用VBA開發(fā)基于AutoCAD的應(yīng)用程序時,幾乎總是在重復(fù)下面的幾種工作: (1) 創(chuàng)建和編輯實體。作為計算機設(shè)計軟件,AutoCAD最主要的工作時完成設(shè)計目標并為下一階段的實際制造提供參考。圖紙仍然時其主要的工作產(chǎn)品,因而大部分的二次開發(fā)應(yīng)用程序最終都要將結(jié)果用圖形實體表現(xiàn)出來,這時AutoCAD二次開發(fā)的一個基礎(chǔ)。 (2) 和用戶交互。應(yīng)用程序本身可以通過窗體或者命令行完成和用戶交互。比較特殊的時與圖形相關(guān)的用戶交互,列如提示用戶選擇一條多段線、輸入一個整數(shù)、輸入一個角度值等。 (3) 利用隊形特性來組織實體。AutoCAD作為一種CAD軟件,其內(nèi)在的特點決定了所有的圖形實體不具有屬性特征。也就是說,如果繪制一條直線來作為一條道路,在AutoCAD中是無法標識出他是一條道路的,通常的解決方法是創(chuàng)建一個名為“道路”的圖層,然后將所有的代表道路的線都放在這個圖層中統(tǒng)一管理。 (4) 處理圖形文件,在文件之間交換數(shù)據(jù)。在進行設(shè)計是,把所有的圖形元素放在一個圖形文件中并不總是個好主意,最常見的后果就是圖形文件太大導(dǎo)致操作起來太慢。解決這個問題的辦法就是按某種法則將圖形元素分布到幾個圖形文件中,在需要的時候交換圖形文件之間的數(shù)據(jù)。 (5) 視圖管理。在AutoCAD中繪圖時,為了便于計算和觀察圖形,人們總時會很頻繁地改變視圖,列如縮放、平移或改變視點。而在開發(fā)VBA應(yīng)用程序時,這方面的要求相對來說會低一點,一般只需在創(chuàng)建實體之后給出一個合適的觀察角度即可。 (6) 文字。在AutoCAD的基本圖形元素中,文字是比較簡單的一個,但是在實際使用中它的可變性最大。列如,不同類型的說話需要不同的文字樣式,還有一些特殊的符號以及行為公差都是通過文字來表現(xiàn)的。 (7) 管理塊的屬性。塊是將若干個圖形對象定義成一個組,在需要的地方可以多次引用它。這帶來兩個好處,一是減小圖形的尺寸,二是修改起來方便,只需要修改塊的定義便可以更新所有引用。塊和屬性結(jié)合起來使用,能夠大大簡化一些特定類型設(shè)計工作。 (8) 在三維空間工作。某些工作必須在三維空間中完成,列如機械零件的建模以及裝配,或者處理三維建筑模型。三維空間中工作所要處理的一個主要問題是三維坐標系,電腦屏幕本身是一個二維的平面,要反映并操作三維的對象,必須借助于用戶坐標系和視角的變化。 (9) 響應(yīng)AutoCAD中的事件。很多操作都會引發(fā)AutoCAD的事件,如用戶創(chuàng)建、移動、雙擊、刪除了某個實體,或者執(zhí)行了一個命令、打開了一個圖形等,使用這個特性能視線一些有趣的特性。填充圖案和填充邊界的關(guān)聯(lián)就是通過事件響應(yīng)來實現(xiàn)的。 (10) 布局和打印操作。完全可以把布局看作是一張?zhí)囟愋偷膱D紙,AutoCAD的這種模型和布局分開的思想非常好,就如同現(xiàn)實生活中的一輛車可以從多個角度拍多張照片來表現(xiàn)它一樣。 (11) 擴展數(shù)據(jù)和擴展記錄來標識實體。AutoCAD識一個非常純粹的CAD軟件,其中任何的實體都么現(xiàn)實意義,但是它提供了擴展數(shù)據(jù)和擴展記錄作為實體屬性的附加機制。通過這兩種手段,可以給某條直線追加一個“屬性”,比如為直線增加一個“輸電線”的“名稱”,或者為閉合多段線設(shè)置一個“公園”的“名稱”等。 (12) 訪問文件和數(shù)據(jù)庫。CAD程序同文件和數(shù)據(jù)庫打交道非常平常,因為CAD程序中經(jīng)常有一些數(shù)據(jù)不方便保存在圖形文件中。如果要創(chuàng)建一個標準零件庫,就可以在數(shù)據(jù)庫中保存零件庫的數(shù)據(jù),在創(chuàng)建零件的時候訪問數(shù)據(jù)庫讀取其特征數(shù)據(jù),然后在AutoCAD中創(chuàng)建該零件對應(yīng)的圖形元素即可。 (13) 和Office程序交換數(shù)據(jù)。某些情況下;僅靠圖紙還不能很好的說明問題,或者還需要使用Excel對圖形中的某些對象作一個統(tǒng)計,那么就必須同Office程序交換數(shù)據(jù)。 (14) 使用Windows API ( Windows應(yīng)用程序編程接口 )增強程序功能。VBA的語法是基于Visual Basic 6.0的,并且在可以使用的對象上僅包含了Visual Basic 6.0的一部分,所幸VBA仍然可以訪問Windows API,能通過Windows API來實現(xiàn)一些VBA基本對象無法實現(xiàn)的功能。 (15) VBA應(yīng)用程序的發(fā)布。編程者大多情況下恐怕不是程序的最終使用者,那么程序編寫完成后總要以一種合適的方式發(fā)布到使用者的計算機上才行,因此就避免不了學(xué)習(xí)VBA應(yīng)用程序的發(fā)布。 (16) 其它方面的操作。如將VBA程序移植到Visual Basic上、使用DLL來保護源代碼的安 |