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頁,還剩8頁未讀, 繼續(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)用程序與AutoCA

2、D之間鏈接的關(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)。DimmyappAsObjectOn Error Resume NextSet myapp = GetObject(, "AutoCAD.Application")如果已有CAD程序打開,則 直接獲得CA

3、D的控制句柄myapp.Visible=TrueIf Err <> 0 ThenSet myapp = CreateObject("Autocad.Application")如果沒有CAD程序打開,通過開啟cad軟件獲得CAD的控制句柄myapp.Visible=TrueEndIf注意:GetObject(,"AutoCAD.Application")里面的那個(gè)逗號(hào)的來源請(qǐng)仔細(xì)閱讀VB程序幫助里面的解釋創(chuàng)建一個(gè)名為乾康工具 一集的新菜單、創(chuàng)建菜單(在VBA環(huán)境下)代碼如下:PublicSubmenu()Dimmy_菜單組AsAcadMenuG

4、roupSetmy_菜單組=ThisDrawing.Application.MenuGroups.Item(0)Dimmy_彈出式菜單AsAcadPopupMenuSetmy_彈出式菜單=my_菜單組.Menus.Add("乾康工具集”)Dimmy_彈出式菜單項(xiàng)AsAcadPopupMenuItemDimopenMacroAsStringSetmy_彈出式菜單項(xiàng)=my_彈出式菜單.AddMenuItem(0,"刪除圓及圓弧","-VBARUNDEL_ACR+chr(13)')my_菜單組.Menus.InsertMenuInMenuBar&quo

5、t;乾康工具集",6EndSub-VBARUNDEL_ACR+chr(13)在宏名稱之前添加-VBARUN是因?yàn)閺腁utoCAD工具欄或菜單運(yùn)行VBA宏。Macro特性必須設(shè)置為等于-VBARUN其中,是工程文件的名稱,modulename是包含要運(yùn)行的宏的模塊名稱,而macroname是要運(yùn)行的宏的名稱。只有在當(dāng)前AutoCAD任務(wù)中未加載文件時(shí),才需要文件名。如果提供了文件名,將會(huì)加載該文件。注:圖示解釋相關(guān)名稱,G單組,個(gè)人認(rèn)為“AutoCADApplicationJ一MenuBsrPopupMeru一MenuGroups1(MenuGrOL<)jPopuphflenus

6、PopupMenuH(Pp|j卬Maiult-m1r;ToollMrs_7如的郭H(Toofcarftem)JAutoCAD中就只有一y,二二一_個(gè)菜單中/菜單,需要使PopupMenus里面的/Add方法來創(chuàng)建新的XS-<菜單項(xiàng),需要使用-PopupMenu里面的一、AddMenuItem方法來創(chuàng)建,V一一一一,這些都是工具條廠取彳導(dǎo)AutoCAD的另一-鏈接卜圖中的“文件”“編輯”“視圖”“幫助”這些合起來就是菜單組(MenuGroup)而“文件”“編輯”“視圖”這些單獨(dú)描述就是彈出式菜單(PopupMenu)再則,標(biāo)注底下的“快速標(biāo)注”“線性”“對(duì)齊”等,就是特定菜單里面的菜單項(xiàng)(

7、PopupMenultem)爵AutoCAD2007-tPrawirigLdvkg.受 文件舊 編巖 視日m 插入?yún)n 情式 工具n 繪醫(yī)口 W 口 口通&J_y 53/凌 皿七的經(jīng)典 事生口。標(biāo)注【N' |幡改(M)燕秀工具耍3300 窗口血群助5咫的主©1 R窗|。Sts&r B/Liyr'AC曲第甑A(chǔ)'?臺(tái)。曲粕0黜三、自動(dòng)加載VBA工程文件(在VBA環(huán)境下)此處不需要用代碼來實(shí)現(xiàn),僅僅需要進(jìn)入Autocad進(jìn)行一次設(shè)置即可,操作參見下圖A、點(diǎn)擊工具”選項(xiàng)遵Auto2AD2M?C;Lser3chenqkDtktop104IKB3160SD2

8、1OC-EJRE/TOLF<B.DV?G|J0如郵)陋(白相圖m演入(1曲0捶部邙輕注(Neat(M)燕美工m幅系窟匚的再助II口同|0|>片刎*<a勢(shì),/1oi”飛氣/I?sMftaaii.|就曲二|JB、選擇工具下拉菜單中的”加載應(yīng)用程序”選項(xiàng),在彈出的對(duì)話框中點(diǎn)擊“內(nèi)容”選項(xiàng)時(shí)31C4-HKB01&050310C大板)-REV-T工作空間):am劉康工案繪圄*)麻快速卑兇,.繚圖獨(dú)序W更新字段CD步塊編爆器外部參脂和塊在位輻呈星性提取因顯tit圖愫(Y)I大情4砌加選項(xiàng)振3百晚屏基宣村范圉口上空荀¥F1哥皿J)CTRL+0至M岳Q史里序h需0三八:而白

9、口七用卜厚比克WM劉原I南加予ITT中記錄始AutoUSPfSCTRL+9中H舉&!(11刎,砧跖應(yīng)用-f;*e*刀力*如.交件雷隹5rCirtMilC:HlSrS'!匚k-q1111s.Wel-ilL4fL.:姓心to一B/JtrcffjnTilasI:城!占亡01200.11:"ifrcgrtfi力leaWHBJ*£ui.必.F-力竄.,一;.i.一t.mi;卜,jC、在接下來的對(duì)話框中點(diǎn)擊“添加”,來添加需要自動(dòng)加載的VBA工程文件本例中的宏名稱 menu初略思路為程序運(yùn)行過程中,彈出窗體文件,由用戶輸入需要?jiǎng)h除的圓弧的半徑范圍四、自動(dòng)運(yùn)行VBA工程文

10、件中自己設(shè)置的宏文件(在VBA環(huán)境下)首先介紹一下Autocad幫助文件中關(guān)于自動(dòng)運(yùn)行宏文件的說明用戶可以自動(dòng)運(yùn)行VBA工程文件中的任何宏,方法是從AutoCAD啟動(dòng)功能(如acad.lsp)中使用VBARUN的命令行版本調(diào)用。例如,要自動(dòng)運(yùn)行名為drawline的宏,請(qǐng)先將drawline宏保存在VBAX程文件中。然后調(diào)用記事本程序新建一個(gè)txt文檔并在文檔中中創(chuàng)建(或附加)下面幾行:(defunS二STARTUP。(command”_-vbarun""drawline")然后將text文檔的文件名(包含后綴名)改為acad.lsp將宏命名為AcadStartu

11、p,這樣在加載VBA時(shí)就會(huì)自動(dòng)運(yùn)行該宏。當(dāng)加載VBA時(shí),將自動(dòng)執(zhí)行acad.dvb文件中所有名為AcadStartup的宏。依據(jù)以上信息,結(jié)合本例,本文要自動(dòng)運(yùn)行的宏名稱問menu。操作如下:A、在電腦桌面上,新建一個(gè)文本文檔,名稱為acad.lsp。B、雙擊文件,在文檔中寫入如下代碼,然后保存(defunS:STARTUP()(command"_-vbarun""menu")C將acad.lsp放入Autocad安裝目錄下的Support文件夾內(nèi)即可五、編寫刪除圓弧的宏程序(在VBA環(huán)境下),本例中的宏名稱DEL_ACR()然后創(chuàng)建一個(gè)選集,將符合條件

12、的圓弧加入選集,然后執(zhí)行選集里面的元素刪除代碼即A、首先創(chuàng)建一個(gè)窗體對(duì)象,其中 textboxl和textbox2的文本控件用于傳遞圓弧的 半徑范圍PrivateSubCommandButton1_Click()-一一二32;27Tl窗體的名稱定為"刪除元和窗體刪除圓弧窗體.Hide在設(shè)定號(hào)圓弧半徑值后,調(diào)用EndSub一PrivateSubUserForm_Initialize()TextBoxl.Text=0.01TextBox2.Text=0.25EndSubB、編寫刪除圓弧的代碼,依次創(chuàng)建選擇集名稱,設(shè)置過濾器規(guī)則。給選集增加對(duì)象,遍歷選集對(duì)象執(zhí)行刪除命令。Public Su

13、b DEL_ACR()窗體顯示,用于設(shè)置圓弧半徑Dim FilterType(6) As Integer刪除圓弧窗體.ShowOn Error Resume NextDim my_ 圓弧選擇集 As AcadSelectionSetVBA對(duì)象瀏覽器創(chuàng)建圓一)中有Item和AddSet my_圓弧選擇集 =ThisDrawing.SelectionSets.Item("圓弧集")my_圓弧選擇集.Delete的詳細(xì)說明。使用時(shí)注意Set my_ 圓弧選擇集 =ThisDrawing.SelectionSets.Add("圓弧集")'VAuotcad

14、對(duì)象的層Dim FilterData(6) As VariantFilterType(O) = -4FilterData(O) = "<AND"FilterType(l) = 0FilterData(l) = "Arc"FilterType(2) = -4FilterData(2)=">="3參數(shù) FilterType 和FilterData必須設(shè)置成數(shù)組形式, X成對(duì)出現(xiàn),數(shù)組元素一一對(duì)應(yīng),即 FilterType(2)對(duì)應(yīng)FilterData(2)FilterType(3) = 40FilterData(3) = Va

15、l(刪除圓弧窗體.TextBox1.Text)2、過濾器參數(shù)需要引用考手冊(cè)里面的組碼值DXF參FilterType(4) = -4FilterData(4)="<="FilterType(5) = 40FilterData(5) = Val(刪除圓弧窗體.TextBox2.Text)過濾器列表中的邏輯運(yùn)算符也由FilterType(6) = -4使用for循環(huán)函數(shù)遍歷選擇集里面的對(duì)象進(jìn)行刪除-4組代碼表示,運(yùn)算符以小于號(hào)開始(),以大于號(hào)結(jié)束()。FilterData(6)="AND>"my_圓弧選擇集.SelectOnScreenFilterType,FilterDataDimiAsIntegerFori=0Tomy_圓弧選擇集.Count-1my_圓弧選擇集.Item(i).DeleteNextmy_圓弧選擇集.DeleteEndSub注:在Autocad中選擇集刪除的方式對(duì)比

溫馨提示

  • 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)論