CAD_vba開發(fā)手冊_第1頁
CAD_vba開發(fā)手冊_第2頁
CAD_vba開發(fā)手冊_第3頁
CAD_vba開發(fā)手冊_第4頁
CAD_vba開發(fā)手冊_第5頁
已閱讀5頁,還剩222頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、-作者xxxx-日期xxxxCAD_vba開發(fā)手冊【精品文檔】VBA開發(fā)人員手冊 姓名:高化奎深圳愛華勘測工程有限公司第一章:VBA入門本章將為你介紹AutoCAD VBA工程及VBA交互開發(fā)環(huán)境(VBA IDE)。盡管大部分VBA環(huán)境在行為上都是相似的,但AutoCAD VBA IDE還是有些獨有的特性。在AutoCAD中還有些相關的命令可以用于裝載工程、運行工程,或打開VBA IDE環(huán)境。本章將概要介紹VBA工程、VBA命令和VBA IDE的使用。本章具體內容如下:了解嵌入和全局VBA工程、用VBA管理器組織工程、處理宏、用VBA IDE編輯工程、更多的信息、回顧AutoCAD VBA 工

2、程術語、回顧AutoCAD VBA 命令第一節(jié):了解嵌入和全局VBA工程AutoCAD VBA 工程是代碼模塊、類模塊和窗體的集合,它們組合起來以執(zhí)行給予的功能。工程可保存在AutoCAD圖形中,或作為獨立的文件保存。嵌入工程是保存在AutoCAD圖形中。當包含有這些工程的圖形中AutoCAD打開時,他們可以自動地裝載,這種方法可以很方便地分發(fā)工程給用戶。嵌入工程也有它的極限,它不能打開或關閉AutoCAD圖形,那是由于他們的函數只存在于工程所在的文檔中。使用嵌入工程不需要在運行程序之前查找并裝載工程文件。舉個含有嵌入工程的圖形的例子,當圖形打開時,一個時間日志被觸發(fā)。通過這樣一個宏的應用可以

3、登記并記錄用戶在該圖形上所花費的時間。這時用戶不必去記住在打開圖形之前裝載工程,這就是自動操作的一個很好的例子。全局工程保存在獨立的文件中,它更加通用,因為他們能在AutoCAD圖形中運行,也能打開、關閉AutoCAD圖形,但它在圖形打開時不能自動裝載。用戶必須知道他們所需要的宏包含在哪個工程文件中。然而,全局工程非常容易與其它使用者共享,它可以將通用的宏做為很好的庫而存在。舉個例子,你保存在一個工程文件中的宏是有關多個圖形的材料清單。這個宏可以在工作周期的末期由管理員運行,這樣就可以收集到所有圖形的信息。在特定的時間,用戶可以在同個AutoCAD進程中同時裝載嵌入工程和全局工程。AutoCA

4、D VBA 工程與Visual Basic 工程在二進制結構上是不兼容的。然而,其中的窗體、模塊和類可以通過在VBA IDE環(huán)境中使用輸入和輸出VBA命令來在工程之間進行轉換。關于VBA IDE的更多信息,可以查看“用VBA IDE編輯工程”第二節(jié):用VBA管理器組織工程你可以使用VBA管理器查看裝載在當前AutoCAD進程的所有VBA工程。VBA管理器一個AutoCAD工具,它允許你裝載、卸載、保存、創(chuàng)建、嵌入和分離VBA工程。打開VBA管理器的步驟:1.在工具菜單中選擇宏-VBA管理器。 2.或者,在AutoCAD中調用VBAMAN命令。 本節(jié)的內容:裝載現(xiàn)存的工程、卸載工程、嵌入工程到圖

5、形中、從圖形中分離工程、創(chuàng)建新的工程、保存嵌入工程。裝載現(xiàn)存的工程當你裝載工程到AutoCAD中,所有的公用的子程序(也稱為宏)都可以使用。 嵌入于圖形中的工程在圖形打開時就被裝載。保存在DVB文件中的工程必須單獨裝載。裝載現(xiàn)存的VBA工程文件1.在VBA管理器中,使用裝載項可彈出打開VBA工程對話框。 2.在打開VBA工程對話框中,選擇打開的工程文件。該VBA工程對話框允許你打開有效的DVB文件。如果你嘗試打開不同類型的文件,你將會得到出錯信息。 3.選擇打開。 你也可以使用VBALOAD命令直接出現(xiàn)打開VBA工程對話框以裝載工程文件。另外,當工程裝載后,該工程所引用的其它工程將會自動地裝載

6、。還有,AutoCAD在啟動時將自動裝載名稱為acad.dvb的工程文件。 相關主題:病毒警告 每次當你裝載工程時,你會看到啟用或禁用工程中的代碼以阻止宏病毒的警告框。如果你選用啟用代碼,如果工程中含有宏病毒時病毒可能會發(fā)作。如果你禁用代碼,工程同樣會裝載,但工程中的所有代碼將不能運行。想查看更多關于病毒保護的信息,請參考“設置工程選項”。 卸載工程 卸載工程以釋放內存并保持裝載的工程列表的長度以方便管理。你不能卸載嵌入工程或由其它已裝載工程所引用的工程。卸載VBA工程的操作 1.在VBA管理器中,選擇要卸載的工程。 2.選擇卸載。 或者,使用VBAUNLOAD命令,它將提示你所要卸載的工程。

7、 嵌入工程到圖形中 當你嵌入一個工程時,你是將工程的一個副本置于圖形數據庫中。無論何時,當所包含工程的圖形打開或關閉時,工程會同時被裝載和被卸載。一個圖形只有在同一時間包含一個嵌入工程。如果圖形已經包含有一個嵌入工程,你必須在同樣地入其它工程之前將該嵌入工程分離出。嵌入工程到AutoCAD圖形中的操作 。1.打開VBA管理器并選擇你所要嵌入的工程。 2.選擇嵌入。 從圖形中分離工程 當你分離工程時,其實是將工程從圖形數據庫中刪除,同時會提示你將工程保存為外部的工程文件。如果你沒有將其保存為外部工程文件,該工程的數據將會刪除。從AutoCAD圖形中分離工程的操作 1.打開VBA管理器并選擇要從圖

8、形中分離的工程。 2.選擇分離。 3.如果你想保存工程信息為外部工程文件,可以在“你是否想在刪除VBA工程前將其輸出?”的提示下選擇“是”,此時會顯示另存為對話框,允許你保存文件。 如果你不想保存該工程信息到外部文件,可以在“你是否想在刪除VBA工程前將其輸出?”的提示下選擇“否”,此時工程信息將在沒有保存的情況下從圖形中刪除。 創(chuàng)建新的工程 新的工程將作為未保存的全局工程被創(chuàng)建。當工程創(chuàng)建時,你可以將工程嵌入圖形中,或將其保存為工程文件。創(chuàng)建新的VBA工程的操作 1.打開VBA管理器。 2.選擇新建。 新創(chuàng)建的工程將使用默認的工程名稱ACADproject。你必須到VBA IDE中才可以更改

9、工程名稱。查看更多關于命名工程的信息,請參考“命名工程”。 保存嵌入工程 嵌入工程是在圖形保存時同時保存的。全局工程必須使用VBA管理器或VBA IDE進行保存。使用VBA管理器保存工程的操作 1.打開VBA管理器并選擇要保存的工程。 2.選擇另存為,此時另存為對話框打開。 3.選擇用于保存工程的文件。 4.選擇保存 第三節(jié):處理宏與設置VBA工程選項一樣,宏對話框允許你運行、編輯、刪除和創(chuàng)建宏。宏是公用(可執(zhí)行)的子程序。每一工程通常至少一個宏。打開宏對話框的操作1.從工具菜單中選擇宏-宏。 2.或在AutoCAD中調用VBARUN命令。 在對話框中顯示的是所有在有效范圍內的宏名稱。你可通過

10、下拉列表來改變有效范圍。該列表指定所要顯示的宏所在的工程或圖形。你可在以下列表內容選擇所要顯示宏范圍所有圖形和工程所有圖形所有工程在當前所打開的單獨圖形在當前所裝載的單獨工程通過限制有效范圍你可控制顯示在列表中的宏名稱的數量。它可幫助你注意到當前有多少宏裝載到圖形中或指定工程中有多少宏。本節(jié)內容:運行宏編輯宏逐語句運行宏創(chuàng)建新的宏刪除宏設置工程選項運行宏運行宏就是在當前AutoCAD進程中執(zhí)行宏代碼。當前活動圖形指的是當宏執(zhí)行開始時處于打開并處理激活狀態(tài)。所有在全局工程的宏中所涉及的ThisDrawing對象將指向當前活動圖形。在嵌入工程中,ThisDrawing對象通常指向嵌入該宏的圖形。運

11、行宏的操作1.打開宏對話框并選擇要運行的宏。 2.選擇運行。 編輯宏編輯宏將打開VBA IDE并打開所選定宏的代碼窗口。詳細的介紹請參考“用VBA IDE編輯工程”。編輯宏的操作1.打開宏對話框并選擇要編輯的宏。 2.選擇編輯。 逐語句運行宏逐語句運行宏指的是開始運行宏并在第一行代碼時暫停。VBA IDE也隨之打開所選定的宏的代碼窗口并高亮顯示所執(zhí)行宏所在的行。逐語句運行宏的操作1.在宏對話框中,選擇要逐語句運行的宏。 2.選擇逐語句。 創(chuàng)建新的宏你可以創(chuàng)建一個空的新宏。創(chuàng)建新宏的操作1.打開宏對話框并輸入新宏的名稱。 2.在宏位置下拉列表中選擇所創(chuàng)建宏所要存在的位置。 3.選擇創(chuàng)建。 如果所

12、指定宏的名稱已經存在,系統(tǒng)將提示你是否替換現(xiàn)在的宏。如果你在提示下選擇“是”,則現(xiàn)在的宏代碼將被刪除,而一個新的而沒有內容的宏也會以指定名稱而創(chuàng)建。如果你在提示下選擇“否”,這時會返回宏對話框以輸入另外的宏名稱。如果你在提示下選擇“取消”,宏對話框將消失,宏也沒有創(chuàng)建。刪除宏你可以從工程中刪除宏刪除宏的操作1.打開宏對話框并選擇要刪除的宏 2.選擇刪除。系統(tǒng)會提示你是否確認刪除。 3.在提示下,選擇“是”而刪除宏,或者選擇“否”以取消刪除的操作。 設置工程選項在AutoCAD VBA工程中可以設置三個選項:啟用自動嵌入出錯時允許中斷啟用宏病毒保護設置AutoCAD VBA工程選項的操作1.從工

13、具菜單中選擇宏-宏以打開VBA宏對話框。 2.從VBA宏對話框中,選擇選項以打開選項對話框。 3.從選項對話框中,選擇你所要設置的選項。 4.選擇確定。 本節(jié)內容:啟用自動嵌入出錯時允許中斷啟用宏病毒保護啟用自動嵌入自動嵌入特性將在打開圖形時自動為所有圖形創(chuàng)建嵌入的VBA工程。出錯時允許中斷在遇到錯誤時允許VBA進入中斷模式。中斷模式是在交互開發(fā)環(huán)境中暫時掛起程序的執(zhí)行。在中斷模式中,你可以檢查、調試、復位、跳過或繼續(xù)程序的執(zhí)行。當該選項啟用時,在執(zhí)行VBA宏的過程中如發(fā)現(xiàn)的未處理的錯誤,將會掛起執(zhí)行的宏并在VBA IDE中顯示宏的出錯點。當該選項禁用時,當執(zhí)行VBA宏的過程中如發(fā)現(xiàn)出錯時,將

14、出現(xiàn)錯誤警告提示框,然后結束宏的執(zhí)行。啟用宏病毒保護病毒防護機制將在你打開可能含有宏病毒的圖形時顯示內建的警告信息。第四節(jié):用VBA IDE編輯工程當工程裝載到AutoCAD后,你可以使用VBA交互開發(fā)環(huán)境編輯其代碼、窗體及進行引用。你也可以在VBA IDE中調試和運行工程。本節(jié)內容:打開VBA IDE查看工程信息定義工程的部件輸入現(xiàn)存的部件編輯部件運行宏命名工程保存工程引用其它VBA工程設置VBA IDE選項打開VBA IDE當打開VBA IDE時,它就可以訪問所有已裝載的工程。按需要打開VBA IDE的操作:你可以從命令行或從菜單欄中打開VBA IDE 從命令行,可輸入VBAIDE,或從工

15、具菜單,使用宏-Visual Basic 編輯器。在AutoCAD啟動時自動打開VBA IDE的操作:如果你想在每次開始AutoCAD時自動打開VBA IDE,你必須在acad.rx文件中包含以下行:查看工程信息VBA IDE包含名稱為工程窗口的窗口,其中顯示了所有已裝載VBA工程的列表。它也顯示包含在工程中的代碼、類和窗體模塊,還有關聯(lián)到該工程的文檔,在該工程所引用的VBA工程,以及工程的物理位置(也稱路徑)。工程窗口有它自己的工具欄,使用其工具欄可打開不同的工程部件進行編輯。使用查看代碼按鈕可打開選定模塊的代碼。使用查看對象按鈕可顯示如窗體之類的選定對象。VBA IDE工程窗口工程窗口默認

16、為可見。如果不可見,可從查看菜單中選擇工程窗口,或按CTRL+R。定義工程的部件每個工程可包含多個不同的部件。在工程中包含的不同部件可以是對象、窗體、標準模塊、類模塊和引用。對象對象部件聲稱了VBA代碼可訪問的對象或文檔的類型。在AutoCAD VBA工程,該對象聲稱為當前AutoCAD圖形。窗體:窗體部件包含了當前你在工程中為了使用而建立的自定義對話框。標準模塊:該代碼部件包含了普通程序和函數。標準模塊也歸類為代碼模塊或簡單的模塊。類模塊:類模塊部件包含你所有定義為類的自己的對象。引用:引用部件包含所有引用其它的工程和庫。增加新部件增加新的部件是在工程中創(chuàng)建一空白的部件。你可在工程中增加新的

17、模塊、窗體和類模塊。你有責任更新所有部件的屬性(如部件的名稱)并在其中寫入適當的代碼。當命名一個新的部件,請記住可能其它開發(fā)都會在以后的應用程序中用到你的部件。在你的開發(fā)項目中應該跟隨適當的名稱約定。增加新的部件到工程的操作1. 在VBA IDE的工程窗口中,選擇你要增加部件的工程。 2. 從插入菜單中,選擇用戶窗體、模塊或類模塊以增加新的部件到你的工程中。 新的模塊將被增加到你的工程中并出現(xiàn)在工程窗口中。輸入現(xiàn)存的部件輸入功能允許你增加現(xiàn)存的部件到工程中。你可以輸入窗體、模塊或類模塊。輸入的窗體文件為FRM文件,輸入的模塊文件為BAS文件,輸入的類模塊文件為CLS文件。當你輸入一個部件文件,

18、文件 的一個副本將輸入并增加到工程中。而原來的文件也會保持不變。在輸入部件中所做的 不會影響到原來的部件文件。如果你用現(xiàn)存的同樣的名稱輸入部件,該文件將添加到工程中相應的部件上。從工程中輸入現(xiàn)存的部件的操作1. 在VBA IDE的工程窗口中,選擇你要增加部件的工程。 2. 從文件菜單中,選擇輸入文件以打開輸入文件對話框。 3. 從輸入文件對話框中,選擇所要輸入的文件,然后按打開。 該輸入部件將增加到你的工程中并在工程窗口中出現(xiàn)。編輯部件的屬性,可選擇工程窗口的該部件。所選部件的屬性將在屬性窗口中列出并可編輯。編輯部件在工程中編輯工程的操作1. 在VBA IDE的工程窗口中,選擇你要編輯的部件。

19、 2. 選擇工程窗口中的查看代碼按鈕以打開代碼窗口。 3. 選擇工程窗口中的查看對象按鈕以打開用戶窗體窗口和關聯(lián)的工具箱。 你可同時打開你所有模塊中的代碼窗口,所以你可很容易地 不同窗體或模塊中的代碼,并在它們之間進行復制和粘貼。訪問關聯(lián)在窗體中的代碼的操作在窗體窗口中雙擊任何控件。關聯(lián)在該控件中的代碼將會在代碼窗口中打開。使用代碼窗口代碼窗口包含兩個下拉列表、一個分隔條、一個邊界標識條欄和全模塊視圖和過程模塊視圖的圖標。在代碼窗口的頂部有兩個下拉列表,它們顯示當前對象和過程。你可通過更改在此下拉列有中的對象或過程來在工程中移動。在代碼窗口的右側在一分隔條,它允許你在垂直方向分隔窗口。單獨拖動

20、該分隔條呆創(chuàng)建另外的窗口窗格。該特性允許你同時查看相同模塊中的兩部分代碼。關閉窗格時,可將分隔條拖回其原先的位置。邊界標識條欄是在代碼窗口的左側。它用于顯示在代碼編輯和調試期間的邊界標識條。全模塊視圖和過程模塊視圖圖標位于代碼窗口的左下角,它可在單過程模塊視圖和全模塊視圖之間切換。使用用戶窗體窗口用戶窗體窗口允許你在工程中創(chuàng)建自定義對話框。增加控件可簡單地從工具箱中拖動想要控件并擺放在窗體中。你可從選項對話框中的常規(guī)選項卡中設置控件的對齊柵格。你可查看窗體柵格并可從選項對話框的常規(guī)選項卡中設定柵格線的大小。(參考“設置VBA IDE選項”以得到更多的信息。)你設計的每一窗體都有最大化、最小化和

21、關閉按鈕。這些按鈕已經為你準備好。將代碼增加到控件中,可簡單地雙擊擺放在窗體中的控件。此時將打開相應控件的代碼窗口。運行宏和在宏對話框中運行宏一樣,你也可以在VBA IDE中運行宏。從VBA IDE中運行宏的操作從菜單中,使用運行宏菜單選項。如果當前沒有宏或窗體,將顯示一對話框允許你選擇所要運行的宏。如果當前已經提供了宏(即光標已經在一過程中),此時將直接執(zhí)行宏。命名工程工程名稱和保存工程的.dvb文件名稱是兩個不同的值。當你保存工程時你所設定的為保存工程的.dvb文件名稱。而工程名稱是在VBA IDE的屬性窗口中設置的。如果你沒有設定工程名稱和文件名稱,AutoCAD將自動地以以下默認的名稱

22、進行分配:工程名稱:ACADProject更改工程名稱的操作1. 在VBA IDE的工程窗口中,選擇要更改的工程。 2. 在屬性窗口中,編輯工程的名稱屬性。 更改工程的文件名稱操作1. 在VBA IDE中,從文件菜單中選擇保存項。 2. 在另存為對話框中,輸入工程文件新的名稱和路徑。 保存工程在AutoCAD的VBA工程中,沒有直接的保存命令。取而代之,保存命令被置于VBA IDE的文件菜單中和VBA管理器中。當發(fā)生以下事件時,VBA工程中所進行的更改將訪問一標準的保存VBA工程對話框:你在VBA IDE中拾取了保存命令你在VBA管理器中選擇了另存為項在VBA工程沒有保存的情況下結束或退出Au

23、toCAD進程注意:當你保存工程時,它將分配一默認的文件名稱project.dvb。尤其重要的是在你保存工程時你應該為工程文件分配一新的名稱。如果你使用默認的文件名稱project.dvb保存工程,你將不能再創(chuàng)建新的空工程了。每一次你創(chuàng)建新的工程,你將得到的是裝入已經存為project.dvb文件名稱的工程。引用其它VBA工程從其它工程中引用VBA工程可開發(fā)者容易分享代碼。開發(fā)者可使用宏來創(chuàng)建公用的庫,然后在需要時引用庫中的內容。這樣可將共享代碼公開并讓眾多的開發(fā)利用該代碼。引用其它VBA工程的操作1. 在VBA IDE的工程窗口中,選擇你要增加引用的工程。 2. 從工具菜單中,選擇引用項以打

24、開引用對話框。 3. 從引用對話框中,按瀏覽按鈕打開添加引用對話框。 4. 從添加引用對話框中,選擇你要引用的工程文件,然后按打開按鈕。 5. 從添加引用對話框中,選擇確定按鈕完成引用的添加。 當另外的工程被成功以引用,你將會注意到在VBA IDE的工程窗口中有一新的文件夾。該新的文件夾是引用的標題,它包含著引用工程的名稱。當你引用了一個工程,你可使用工程中公用的代碼或部件。當引用了其它工程的工程被裝載到AutoCAD中,被引用的工程也自動地裝載到AutoCAD中。該被引用工程在引用它的工程沒有關閉之前是不能關閉的。你不能進行循環(huán)引用。也就是說,你不能引用包含第一個工程的工程。如果你不小心創(chuàng)建

25、了一個循環(huán)引用,你將會得到VBA的一個警告提示。注意:你不能引用嵌入工程或從其它應用程序中的VBA工程。設置VBA IDE選項你可使用選項對話框更改VBA IDE的特征??墒褂霉ぞ卟藛尾⑦x擇選項來打開選項對話框。選項對話框包含四個選項卡:編輯器、編輯器格式、通用和可連接。編輯器編輯器選項卡指定代碼窗口和工程窗口的設置。代碼設置包括自動語法檢測要求變量聲明自動列出成員自動顯示快速信息自動顯示數據提示自動縮進Tab寬度窗口設置包括編輯時可拖放文本缺省為查看所有模塊過程分隔符顯示編輯器格式編輯器格式選項卡指定Visual Basic代碼的外觀。你可以更改代碼的顏色更改文本列出項更改前景更改背景更改邊

26、界標識條更改文本字體和大小顯示或隱藏邊界標識條顯示或隱藏你設置的示例文本通用通用選項卡指定當前Visual Basic工程的設置、出錯處理和編譯設置。你可以更改窗體柵格的柵格設置顯示或隱藏工具提示設定工程折疊收起時自動隱藏窗口在丟失當前狀態(tài)前通知決定出錯時的處理方法設定工程編譯時為需要時編譯或進行后臺編譯??蛇B接的可連接的選項卡允許你選擇要進行泊留在主窗口上的窗口(也就是非浮動狀態(tài))。進行介紹性練習現(xiàn)在你可能已經學習了在AutoCAD VBA中進行編程的基礎知識,那就試試創(chuàng)建一個簡單的“Hello World”的練習示例。在本練習中你將創(chuàng)建一個新的AutoCAD圖形,在圖形中增加一行文本,然后

27、保存圖形,所有的這些操作都在VBA中完成。創(chuàng)建“Hello World”文本對象1 打開從AutoCAD的命令行中輸入以下命令打開VBA IDE:命令:VBAIDE2 在VBA IDE的視圖菜單中選擇代碼項打開代碼窗口。3 通過從VBA IDE的插入菜單中選擇過程項在工程中創(chuàng)建一個新的過程。4 當提示需要過程信息時,輸入如Hello World這樣的名稱。確定類型選定的是Sub,而范圍選定的是Public。5 選擇確定。6 在行Public Sub Hello World()和行End Sub之間輸入以下代碼(功能是打開新的圖形):7 緊接著第6步輸入以下代碼(它創(chuàng)建文本字符并定義它的插入位置

28、)。Dim insPoint(0 To 2) As Double 定義插入點Dim textHeight As Double 定義文本高度Dim textStr As String 定義文本字符Dim textObj As AcadText 定義文本對象insPoint(0) = 2 設定插入點X坐標insPoint(1) = 4 設定插入點Y坐標insPoint(2) = 0 設定插入點Z坐標textHeight = 1 設定文本高度為1.0textStr = Hello World! 設定文本字符創(chuàng)建文本對象Set textObj = ThisDrawing.ModelSpace.AddT

29、ext _(textStr, insPoint, textHeight)8 緊接著第7步輸入以下代碼(保存圖形)ThisDrawing.SaveAs(Hello.dwg)9 通過從VBA IDE的運行菜單中選擇運行過程/用戶窗體項運行你的程序。當程序運行完成后,回到AutoCAD應用程序中,你可看到在圖形中出現(xiàn)有“Hello World!”的文本。該圖形名稱為Hello.dwg。第五節(jié):更多的信息關于VBA IDE及Visual Basic編程語言的更多信息可在微軟提供的幫助文件中找到。訪問微軟VBA IDE幫助文件的操作從VBA IDE的幫助菜單中,選擇Microsoft Visual Ba

30、sic幫助。第六節(jié):回顧AutoCAD VBA 工程術語常規(guī)工程保存在.dvb文件的VBA工程。嵌入工程保存在AutoCAD圖形中的VBA工程。正常文檔沒有包含VBA嵌入工程的AutoCAD圖形?;钴S文檔包含VBA嵌入工程的AutoCAD圖形。當前工程在VBA IDE中當前選定的工程。ThisDrawingThisDrawing是用于聲稱當前圖形的VBA編程項目。在常規(guī)工程中,ThisDrawing通常指向AutoCAD的活動文檔。在嵌入的工程中,ThisDrawing通過指向包含該工程的文檔。VBA IDE指的是VBA交互開發(fā)環(huán)境。該應用程序允許你編輯工程中的代碼和窗體,或從其它工程中復制代

31、碼和窗體。它也允許你設定引用其它應用程序的對象模塊。VBA 管理器VBA管理器允許你管理工程。你可以創(chuàng)建、刪除、嵌入或分離工程。你也可以查看工程是否嵌入于打開的圖形中。宏對話框宏對話框允許你運行、刪除和創(chuàng)建新的宏,也提供訪問VBA工程選項。第七節(jié):回顧AutoCAD VBA 命令VBAIDE打開VBA IDE。該VBA IDE允許你交互式地編輯、運行及調試程序。盡管VBA IDE只能在AutoCAD運行時才能調用,但它可獨立于AutoCAD應用程序窗口進行最小化、打開和關閉。VBALOAD在當前AutoCAD進程中裝載VBA工程。VBARUN從宏對話框中或從AutoCAD命令行中運行VBA宏。

32、VBAUNLOAD從當前AutoCAD進程中卸載VBA工程。如果VBA工程已被修改但還沒有保存,系統(tǒng)會彈出保存工程對話框(或在命令行)提示是否保存。VBAMAN顯示VBA管理器,允許你查看、創(chuàng)建、裝載、關閉、嵌入和分離工程。VBASTMT從AutoCAD命令行中執(zhí)行VBA語句。第二章:理解ActiveX自動操作基礎如果想有效地使用AutoCAD ActiveX自動操作,你必須熟悉AutoCAD圖元、對象和與你用于開發(fā)的應用程序類型相關聯(lián)的特性。對于對象的圖形和非圖形屬性認識越深,通過AutoCAD ActiveX自動操作對其進行操作就越容易。記住你隨時都可以調出AutoCAD ActiveX自

33、動操作的幫助文件-只要按一下F1鍵就行。如果你對對象、方法或屬性的細節(jié)有何不清楚之處,可在VBA IDE中選中相應對象、方法或屬性并按F1鍵。本章具體內容如下:理解AutoCAD對象模型,訪問對象層次,通過集合對象操作,理解屬性和方法,理解父對象,定位類型庫,在數據庫中返回第一個圖元,在方法和屬性中使用變體,使用其它程序語言第一節(jié):理解AutoCAD對象模型一個對象就是AutoCAD ActiveX界面的一個主要組成塊。每一暴露的對象描繪了AutoCAD的精確部分。在AutoCAD ActiveX界面中有許多不同類型的對象。例如圖形對象,如線、弧、文本和標注都是對象樣式設置,如線型和標注樣式均

34、為對象組織結構,如圖層、組合和圖塊也是對象圖形顯示,如視圖和視口都是對象甚至圖形和AutoCAD應用程序本身也是對象對象是通過分層方式來組織的,應用程序對象為根對象。這種分層結構的視圖被歸結為對象模型。對象模型提供了你訪問下一層對象的途徑。本節(jié)內容:簡要介紹Application(應用程序)對象簡要介紹Document(文檔)對象簡要介紹Collection(集合)對象簡要介紹圖形和非圖形對象簡要介紹Preferences(參數選擇)、Plot(打印出圖)和Utility(實用工具)對象簡要介紹Application(應用程序)對象應用程序對象是AutoCAD ActiveX自動操作對象模型的

35、根對象。通過應用程序對象,你可訪問其它的對象,或指派對象的屬性和方法。例如,應用程序對象具有Preferences(參數選擇)屬性,它返回Preferences(參數選擇)對象。該對象提供訪問在選項對話框中設定的注冊信息。(圖形信息設定包含在DatabasePreferences對象,它在后面會介紹到。) 應用程序對象的其它屬性提供你訪問應用程序指定數據,如應用程序的名稱和版本、還有AutoCAD的窗口大小、位置和可見性等。應用程序對象的方法執(zhí)行應用程序指定的動作,如列出、裝載、卸載ADS和ARX應用程序,還有退出AutoCAD。 應用程序對象也提供通過Documents(文檔)集合鏈接到Au

36、toCAD圖形、通過MenuBar和MenuGroups集合鏈接到AutoCAD菜單和工具欄,還有通過稱為VBE屬性鏈接到VBA IDE。應用程序對象也是ActiveX界面的全局對象。也就是說應用程序對象的所有方法和屬性在全局名稱空間都是有效的。簡要介紹Document(文檔)對象 文檔對象,實際上就是AutoCAD圖形,它可在Documents(文檔)集合中找到,它提供訪問所有圖形還有大部分非圖形的AutoCAD對象。通過提供的ModelSpace(模型空間)和PaperSpace(圖紙空間)訪問圖形對象(線、圓、弧等),通過提供的如Layers(圖層)、Linetypes(線型)和Text

37、Styles(字型)這樣名稱的集合訪問非圖形對象(圖層、線型、字型等)。Document(文檔)對象也提供訪問Plot(打印出圖)和Utility(實用工具)對象。簡要介紹Collection(集合)對象 AutoCAD組合大部分的對象在集合中。盡管這些集合包含不同類型的數據,但它們是通過相似的技術進行處理。每一集合都有添加對象到集合中的方法。大多數集合使用Add(添加)方法以達到目的。不同的是,圖元對象通常使用標頭為Add這樣的方法來進行添加。例如,添加一條直線你必須使用AddLine方法。 集合也擁有共用的一些其它方法和屬性。Count(記數)屬性可用于獲取集合中對象的數目。Item(項目

38、)方法可用于獲取集合中的對象。簡要介紹圖形和非圖形對象 圖形對象,也稱為圖元,它是構成圖形的可見對象(如直線、圓、光柵圖像等)。創(chuàng)建這些對象,可用近似于Add方法。修改或查詢這些對象,可使用對象自身的方法和屬性。每一圖形對象都有方法允許應用程序執(zhí)行大部分的AutoCAD編輯命令,如復制、刪除、移動、鏡像還有其它。這些對象也有相應方法可以設定及返回擴展數據(xdata)、高亮和更新、返回對象的邊框范圍等。圖形對象具有如圖層、線型、顏色和句柄這樣典型的屬性。它們也有其特殊的依賴于這些對象類型的屬性,如圓心、半徑和面積等。 非圖形對象為不可見(指示性)對象,它們是圖形的一部分,就如Layers(圖層

39、)、Linetypes(線型)、DimStypes(標注樣式)、SelectionSets(選擇集)等。創(chuàng)建這些對象,可在父集合對象中使用Add(添加)方法。而修改或查詢這些對象,可使用對象自身的方法和屬性。每一非圖形對象均有其特殊的方法及屬性以達到其目的;所有對象都有方法可以設定及返回擴展數據。簡要介紹Preferences(參數選擇)、Plot(打印出圖)和Utility(實用工具)對象 在參數選擇(Preferences)對象下邊為對象集,每一對象集都與選項對話框的一個選項卡相關。它們共同提供訪問在選項對話框中所有的注冊設置。圖形設置包含在數據庫參數選擇(DatabasePreferen

40、ces)對象中。你也可通過SetVariable和GetVariable方法來設定和修改選項(系統(tǒng)變量不是選項對話框的一部分)。設置選項的詳細內容請參考“設定AutoCAD參數”。 打印出圖(Plot)對象提供訪問在打印對話框的設定,并且讓其它程序可以使用不同的方法打印圖形。圖形打印的相關內容請參考“打印圖形”。 實用工具(Utility)對象提供用戶輸入和轉換功能。用戶輸入功能是在AutoCAD命令行中提示用戶輸入不同類型數據的方法,如輸入字符串、整數、實數、點等。轉換功能是操作AutoCAD特有數據類型的方法,如點和角度,另外還有字符串和數字的處理。用戶輸入功能的相關內容請參考“提示用戶輸

41、入”。第二節(jié):訪問對象層次在VBA內部訪問對象層次是非常容易的。這是因為VBA是運行在AutoCAD進程的內部,所以不必通過附加的步驟與應用程序進行連接。VBA通過ThisDrawing對象鏈接到當前AutoCAD進程的活動圖形。通過使用ThisDrawing直接獲得訪問當前文檔對象和所有相關的方法和屬性以及所有在該層次中的其它對象。當使用全局工程,ThisDrawing通常指向AutoCAD中的活動文檔。當用的是嵌入工程,ThisDrawing通常指向包含該工程的文檔。例如,以下在全局工程中的代碼行將保存當前AutoCAD中活動的圖形:在對象層次中引用對象你可直接可通過用戶定義變量引用對象。

42、直接引用對象,應包括對象的層次。例如,以下語句增加一條直線到模型空間。注意到層次狀態(tài)為ThisDrawing,然后是ModelSpace(模型空間)對象,最后才是AddLine方法:Dim startPoint(0 To 2) As Double, endPoint(0 To 2) As DoubleDim LineObj as AcadLinestartPoint(0) = 0: startPoint(1) = 0: startPoint(2) = 0endPoint(0) = 30: endPoint(1) = 20: endPoint(2) = 0Set LineObj = ThisDr

43、awing.ModelSpace.AddLine(startPoint,endPoint)通過用戶定義變量引用對象,首先定義變量的類型,然后設定變量為適當的對象。例如,以下代碼定義了一個類型為AcadModelSpace的變量(moSpace)并設定變量等于當前模型空間:以下語句使用用戶定義變量增加一條直線到模型空間:Dim startPoint(0 To 2) As Double, endPoint(0 To 2) As DoubleDim LineObj as AcadLinestartPoint(0) = 0: startPoint(1) = 0: startPoint(2) = 0en

44、dPoint(0) = 30: endPoint(1) = 20: endPoint(2) = 0Set LineObj = moSpace.AddLine(startPoint,endPoint)訪問應用程序對象因為ThisDrawing對象提供與文檔對象的鏈接,你可能會覺得奇怪,在文檔對象之上對象層次的根對象(應用程序對象)是怎樣訪問的。其實文檔對象中有一稱為應用程序的屬性可提供與應用程序對象的鏈接。例如,以下代碼行更新應用程序:第三節(jié):通過集合對象操作集合對象是預先定義的對象,它包含所有相似對象的實例(即這些對象的父對象)。集合對象有以下的對象:文檔(Documents)集合包含所有在當

45、前AutoCAD進程打開的文檔。模型空間(ModelSpace)集合包含在模型空間中的所有圖形對象(圖元)。圖紙空間(PaperSpace)集合包含在活動圖紙空間布局中的所有圖形對象(圖元)。圖塊(Block)對象包含在指定圖塊定義中的所有圖元。圖塊(Blocks)集合包含在圖形中的所有圖塊。字典(Dictionaries)集合包含在圖形中的所有字典。標注樣式(DimStyles)集合包含在圖形中的所有標注樣式。組合(Groups)集合包含在圖形中的所有組合。超級鏈接(Hyperlinks)集合包含提供圖元的所有超級鏈接。圖層(Layers)集合包含在圖形中的所有圖層。布局(Layouts)集

46、合包含在圖形中的所有布局。線型(Linetypes)集合包含在圖形中的所有線型。菜單條(MenuBar)集合包含當前顯示于AutoCAD的所有菜單。菜單組(MenuGroups)集合包含當前裝載到AutoCAD中的所有菜單和工具欄。注冊應用程序(RegisteredApplications)集合包含在圖形中的所有注冊的應用程序。選擇集(SelectionSets)集合包含在圖形中所有的選擇集。字型(TextStyles)集合包含在圖形中所有的文字樣式。UCSs 集合包含在圖形中所有的用戶坐標系統(tǒng)(UCS)。視圖(Views)集合包含在圖形中所有的視圖。視口(Viewports)集合包含在圖形中

47、所有的視口。本節(jié)內容:訪問集合添加新成員到集合對象在集合對象中循環(huán)刪除集合對象中的成員訪問集合大多數集合對象是通過文檔對象來訪問的。文檔對象包含每個集合對象的屬性。例如,以下代碼定義一個變量并將其設定到當前圖形的圖層集合中:Dim layerCollection as AcadLayersSet layerCollection =文檔集合、菜單條集合和菜單組集合是通過應用程序對象進行訪問。應用程序對象為這些集合的每一個集合包含一個屬性。例如,以下代碼定義了一個變量并且設定該變量為應用程序中的菜單組集合:添加新成員到集合對象添加新成員到集合中使用的是Add方法。例如,以下代碼創(chuàng)建一個新的圖層并且

48、將其添加到圖層集合中:Dim newLayer as AcadLayerSet newLayer = ThisDrawing.Layers.Add(MyNewLayer)在集合對象中循環(huán)選擇集合對象中的一個指定成員,使用的是Item(項目)方法。Item方法需要一個標識符。該標識符可以是指定集合內部項目位置的索引號或者描述項目名稱的字符串。以下例子在集合中循環(huán)并顯示集合中所有圖層的名稱:在圖層集合中循環(huán)Sub Ch2_IterateLayer() 在圖層集合中循環(huán)On Error Resume NextDim I As IntegerDim msg As Stringmsg = For I =

49、 0 To ThisDrawing.Layers.count - 1msg = msg + ThisDrawing.Layers.Item(I).Name + vbCrLfNextMsgBox msgEnd Sub以下例子使用Item方法查找名稱為“ABC”的圖層:查找名稱為“ABC”的圖層Sub Ch2_FindLayerABC() 使用Item方法查找名稱為“ABC”的圖層On Error Resume NextDim ABCLayer As AcadLayerSet ABCLayer = ThisDrawing.Layers.Item(ABC)If Err 0 ThenMsgBox 圖層

50、“ABC”并不存在。End IfEnd Sub注意:當使用For Each機制同時在集合循環(huán)時,不要在對象上使用圖元編輯方法(復制、陣列、鏡像等),你只能在完成循環(huán)之后才可試著去編輯對象,或者先創(chuàng)建一個臨時的數組并且設定其與集合相等,然后才可以在該復制的陣列中循環(huán)并執(zhí)行你的操作。刪除集合對象中的成員刪除指定的成員,可使用所找到成員對象的Delete(刪除)方法。例如,以下代碼刪除圖層ABC:當對象被刪除后,你再也不能試圖用程序去訪問該對象了。第四節(jié):理解屬性和方法每一對象都關聯(lián)著屬性和方法。屬性描述著單個對象的外觀,而方法是一種可在單個對象上執(zhí)行的行為。當對象創(chuàng)建后,你就可通過屬性和方法查詢和

51、編輯對象。例如,一個圓對象有圓心屬性。該屬性以三維世界坐標系統(tǒng)的坐標描述了圓的圓心。更改圓的圓心,你只要簡單地將該屬性設定為新的坐標。圓對象也有稱為偏移(Offset)的方法。該方法可在相對于現(xiàn)存圓的指定偏移距離創(chuàng)建一個新的對象。關于圓對象所有屬性和方法的列表,請參考AutoCAD ActiveX和VBA參考中的圓對象。第五節(jié):理解父對象每一個對象都有其永遠不變的父對象。所有對象都源于稱為根對象的單個父對象。你可以通過從根對象鏈接到子對象的方法訪問所有在界面中的對象。還有,所有對象都有稱為應用程序的屬性以直接鏈接回根對象。AutoCAD界面的根對象為AutoCAD應用程序。第六節(jié):定位類型庫通

52、過自動操作對象暴露的對象、屬性和方法都包含在類型庫中。類型庫是一個文件或一個文件的一部分,它描述一個或多個對象的類型。類型庫并不保存對象;它們只保存信息。通過訪問類型庫,應用程序和瀏覽器可確定對象的特征,如對象支持的界面和每一界面成員的名稱和地址。在使用通過應用程序暴露出來的自動操作對象,你必須引用其類型庫。該引用已由AutoCAD VBA自動設定好。而在其它的交互開發(fā)環(huán)境中你必須創(chuàng)建這個引用。你可以在沒有引用應用程序類型庫的情況下使用應用程序對象。然而,由于以下理由,可考慮增加類型庫引用:全局可訪問函數可無條件直接訪問。調用函數、屬性和方法可在編譯時檢查其正確性,這樣可以在運行時有更快的速度

53、。有可能的話可聲明定義在庫中的變量類型,這樣可增加運行時的可靠性和可讀性。第七節(jié):在數據庫中返回第一個圖元以下例子返回模型空間中的第一個圖元對象。對于圖紙空間中的圖元,代碼略有不同:返回模型空間中的第一個圖元Sub Ch2_FindFirstEntity() 這個例子返回模型空間中的第一個圖元On Error Resume NextDim entity As AcadEntityIf ThisDrawing.ModelSpace.count 0 ThenSet entity = ThisDrawing.ModelSpace.Item(0)MsgBox entity.ObjectName + _

54、 是在模型空間中的第一個圖元。ElseMsgBox 在模型空間中沒有對象存在。End IfEnd Sub第八節(jié):在方法和屬性中使用變體AutoCAD ActiveX自動操作是使用變體傳遞數組數據。盡管這對于初學者來說有點弄不懂,但只要你有點基礎知識就不會覺得困難。另外,AutoCAD ActiveX自動操作提供了幫助你轉換數據類型的工具。本節(jié)內容:什么是變體?在數組數據中使用變體轉換數組為變體解釋變體數組什么是變體?變體是一種特殊的數據類型,它可包含除固定長度字符串數據和用戶定義類型外的其它任何類型的數據。變體也可包含特殊的值,如Empty、Error、Nothing和NULL。你可通過VarType或TypeName這樣的Visual Basic函數來確定變體中數據。你可使用變體數據類型來放置大多數的任何數據類型,來使工作途徑更靈活。在數組數據中使用變體變體是用于傳遞數組數據進和出AutoCAD ActiveX自動操作。也就是說你的數組必須為變體以由AutoCAD ActiveX自動操作的方法和屬性所接受。另外,從AutoCAD ActiveX自動操作中輸出的數組數據必須處理為變體。注意:在AutoCAD,VBA中輸入數組會自動轉換為變體。也就是說你在VBA中使用的數組不必將其轉換為變體數組后才輸入ActiveX自動操作的方法和屬性。然

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論