VB對(duì)AutoCAD二次開發(fā)案例-編輯版-創(chuàng)建菜單欄_第1頁
VB對(duì)AutoCAD二次開發(fā)案例-編輯版-創(chuàng)建菜單欄_第2頁
VB對(duì)AutoCAD二次開發(fā)案例-編輯版-創(chuàng)建菜單欄_第3頁
VB對(duì)AutoCAD二次開發(fā)案例-編輯版-創(chuàng)建菜單欄_第4頁
VB對(duì)AutoCAD二次開發(fā)案例-編輯版-創(chuàng)建菜單欄_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、VBA對(duì)AutoCAD二次開發(fā)開發(fā)背景 因?yàn)楣倦娔X的layout設(shè)計(jì)部門人員不能將元器件轉(zhuǎn)換為3D,故而每次需要結(jié)構(gòu)工程師自行將元器件的2D圖處理后導(dǎo)入三位軟件進(jìn)行3D繪制,在處理二維工程圖時(shí),出現(xiàn)很多小圓弧,小圓弧處于不同的層,依次刪除小圓弧很繁瑣造成工作效率低下。 故而通過創(chuàng)建一個(gè)菜單欄,將刪除小圓弧的程序全部放入一個(gè)菜單之下,實(shí)現(xiàn)自動(dòng)化操作操作的流程如下:連接AutoCAD獲取AutoCAD的菜單組鏈接創(chuàng)建菜單創(chuàng)建菜單項(xiàng)將菜單顯示到AutoCAD中編輯圓弧刪除程序。詳盡代碼一、在VB中連接AutoCAD的。在VBA中則可以跳過此步Application 對(duì)象是VB 應(yīng)用程序與AutoC

2、AD 之間鏈接的關(guān)鍵。將Application 對(duì)象與AutoCAD 鏈接是為AutoCAD 二次開發(fā) 應(yīng)用程序的第一步工作。當(dāng)AutoCAD 運(yùn)行時(shí),GetObject 函數(shù)返回Application 對(duì)象,否則發(fā)生一個(gè)錯(cuò)誤,這時(shí)Err對(duì)象的基礎(chǔ)屬性就會(huì)被賦值為一個(gè)非零值,可以利用一個(gè)錯(cuò)誤陷井進(jìn)行處理。如果AutoCAD 沒有運(yùn)行,可以使用CreateObject 函數(shù)強(qiáng)迫AutoCAD 啟動(dòng)。Dim myapp As Object On Error Resume Next如果已有CAD程序打開,則直接獲得CAD的控制句柄 Set myapp = GetObject(, AutoCAD.Ap

3、plication) myapp.Visible = True如果沒有CAD程序打開,則通過開啟cad軟件獲得CAD的控制句柄 If Err 0 Then Set myapp = CreateObject(Autocad.Application) myapp.Visible = True End If注意: GetObject(, AutoCAD.Application)里面的那個(gè)逗號(hào)的來源請(qǐng)仔細(xì)閱讀VB程序幫助里面的解釋二、創(chuàng)建菜單(在VBA環(huán)境下)取得AutoCAD的菜單組的鏈接 代碼如下: Public Sub menu() Dim my_菜單組 As AcadMenuGroup Set

4、 my_菜單組 = ThisDrawing.Application.MenuGroups.Item(0)創(chuàng)建一個(gè)名為乾康工具集的新菜單 Dim my_彈出式菜單 As AcadPopupMenu Set my_彈出式菜單 = my_菜單組.Menus.Add(乾康工具集) Dim my_彈出式菜單項(xiàng) As AcadPopupMenuItem Dim openMacro As String Set my_彈出式菜單項(xiàng) = my_彈出式菜單.AddMenuItem(0, 刪除圓及圓弧, -VBARUN DEL_ACR + chr(13) ) my_菜單組.Menus.InsertMenuInMen

5、uBar 乾康工具集, 6取得AutoCAD的菜單組的鏈接創(chuàng)建一個(gè)名為刪除圓及圓弧的下拉菜單項(xiàng)的注:無論是使用InsertMenuInMenuBar方法還是InsertInMenuBar方法來加載菜單,被加載菜單都必須要有菜單項(xiàng) End Sub -VBARUN DEL_ACR + chr(13) 在宏名稱之前添加 -VBARUN是因?yàn)閺腁utoCAD 工具欄或菜 單運(yùn)行 VBA 宏。Macro 特性必須設(shè)置為等于 -VBARUN filename.dvb!modulename.macroname 其中,filename 是工程文件的名稱,modulename 是包含要運(yùn)行的宏的模塊名稱,而ma

6、croname 是要運(yùn)行的宏的名稱。只有在當(dāng)前 AutoCAD 任務(wù)中未加載文件時(shí),才需要文件 名。如果提供了文件名,將會(huì)加載該文件。取得AutoCAD的菜單組的鏈接菜單組,個(gè)人認(rèn)為AutoCAD中就只有一個(gè)菜單中取得AutoCAD的菜單組的鏈接注:圖示解釋相關(guān)名稱菜單,需要使用PopupMenus里面的Add方法來創(chuàng)建新的菜單這些都是工具條菜單項(xiàng),需要使用PopupMenu里面的AddMenuItem方法來創(chuàng)建新的菜單 下圖中的“文件”“編輯”“視圖”“幫助”這些合起來就是菜單組(MenuGroup) 而“文件”“編輯”“視圖”這些單獨(dú)描述就是彈出式菜單(PopupMenu) 再則,標(biāo)注底下

7、的“快速標(biāo)注”“線性”“對(duì)齊”等,就是特定菜單里面的菜單項(xiàng)(PopupMenuItem)三、自動(dòng)加載VBA工程文件(在VBA環(huán)境下)此處不需要用代碼來實(shí)現(xiàn),僅僅需要進(jìn)入Autocad進(jìn)行一次設(shè)置即可,操作參見下圖A、 點(diǎn)擊 “工具” 選項(xiàng)B、選擇工具下拉菜單中的”加載應(yīng)用程序”選項(xiàng),在彈出的對(duì)話框中點(diǎn)擊”內(nèi)容”選項(xiàng)C、在接下來的對(duì)話框中點(diǎn)擊”添加”,來添加需要自動(dòng)加載的VBA工程文件四、自動(dòng)運(yùn)行VBA工程文件中自己設(shè)置的宏文件(在VBA環(huán)境下),本例中的宏名稱menu首先介紹一下Autocad幫助文件中關(guān)于自動(dòng)運(yùn)行宏文件的說明用戶可以自動(dòng)運(yùn)行VBA工程文件中的任何宏,方法是從 AutoCAD

8、啟動(dòng)功能(如 acad.lsp)中使用 VBARUN 的命令行版本調(diào)用。例如,要自動(dòng)運(yùn)行名為 drawline 的宏,請(qǐng)先將 drawline 宏保存在VBA工程文件中。然后調(diào)用記事本程序新建一個(gè)txt文檔 并在 文檔中中創(chuàng)建(或附加)下面幾行:(defun S:STARTUP() (command _-vbarun drawline)然后將text文檔的文件名(包含后綴名)改為acad.lsp將宏命名為 AcadStartup,這樣在加載 VBA 時(shí)就會(huì)自動(dòng)運(yùn)行該宏。當(dāng)加載 VBA 時(shí),將自動(dòng)執(zhí)行 acad.dvb 文件中所有名為 AcadStartup 的宏。依據(jù)以上信息,結(jié)合本例,本文要

9、自動(dòng)運(yùn)行的宏名稱問menu。操作如下:A、在電腦桌面上,新建一個(gè)文本文檔,名稱為acad.lsp。B、雙擊文件,在文檔中寫入如下代碼,然后保存(defun S:STARTUP() (command _-vbarun menu)C、將acad.lsp放入Autocad安裝目錄下的Support文件夾內(nèi)即可 5、 編寫刪除圓弧的宏程序(在VBA環(huán)境下),本例中的宏名稱DEL_ACR()初略思路為程序運(yùn)行過程中,彈出窗體文件,由用戶輸入需要?jiǎng)h除的圓弧的半徑范圍然后創(chuàng)建一個(gè)選集,將符合條件的圓弧加入選集,然后執(zhí)行選集里面的元素刪除代碼即可 A、首先創(chuàng)建一個(gè)窗體對(duì)象,其中textbox1和textbox

10、2的文本控件用于傳遞圓弧的半徑范圍Textbox2文本輸入框Textbox1文本輸入框窗體的名稱定為”刪除元和窗體”在設(shè)定號(hào)圓弧半徑值后,調(diào)用hide命令隱藏窗體Private Sub CommandButton1_Click() 刪除圓弧窗體.HideEnd SubPrivate Sub UserForm_Initialize() TextBox1.Text = 0.01 TextBox2.Text = 0.25End Sub B、編寫刪除圓弧的代碼,依次創(chuàng)建選擇集名稱,設(shè)置過濾器規(guī)則。給選集增加對(duì)象,遍歷選集對(duì)象執(zhí)行刪除命令。窗體顯示,用于設(shè)置圓弧半徑Public Sub DEL_ACR(

11、) 刪除圓弧窗體.Show創(chuàng)建圓弧選擇集。VBA對(duì)象瀏覽器中有Item和Add的詳細(xì)說明。使用時(shí)注意Auotcad對(duì)象的層級(jí)關(guān)系 On Error Resume Next Dim my_圓弧選擇集 As AcadSelectionSet Set my_圓弧選擇集 = ThisDrawing.SelectionSets.Item(圓弧集) my_圓弧選擇集.Delete Set my_圓弧選擇集 = ThisDrawing.SelectionSets.Add(圓弧集) Dim FilterType(6) As Integer Dim FilterData(6) As Variant Filter

12、Type(0) = -4 FilterData(0) = = FilterType(3) = 40 FilterData(3) = Val(刪除圓弧窗體.TextBox1.Text) FilterType(4) = -4 FilterData(4) = = FilterType(5) = 40過濾器列表中的邏輯運(yùn)算符也由 -4 組代碼表示,運(yùn)算符以小于號(hào)開始 ()。 FilterData(5) = Val(刪除圓弧窗體.TextBox2.Text) FilterType(6) = -4 FilterData(6) = AND my_圓弧選擇集.SelectOnScreen FilterType, FilterData使用for循環(huán)函數(shù)遍歷選擇集里面的對(duì)象進(jìn)行刪除 Dim i As Integer For i = 0 To my_圓弧選擇集.Count - 1 my_圓弧選擇集.Item(i).Delete Next my_圓弧選擇集.DeleteEnd Sub注:在Autocad中選擇集刪除的方式對(duì)比RemoveItems 方法從選擇集中刪除一個(gè)或多個(gè)項(xiàng)。刪除的項(xiàng)仍然存在于圖形中,

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論