版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、VBA對AutoCAD二次開發(fā)開發(fā)背景因為公司電腦的layout設(shè)計部門人員不能將元器件轉(zhuǎn)換為3D,故而每次需要結(jié)構(gòu)工程師自行將元器件的2D圖處理后導入三位軟件進行3D繪制,在處理二維工程圖時,出現(xiàn)很多小圓弧,小圓弧處于不同的層,依次刪除小圓弧很繁瑣造成工作效率低下。故而通過創(chuàng)建一個菜單欄,將刪除小圓弧的程序全部放入一個菜單之下,實現(xiàn)自動化操作操作的流程如下:連接AutoCAD獲取AutoCAD的菜單組鏈接-創(chuàng)建菜單創(chuàng)建菜單項-將菜單顯示到AutoCAD中-編輯圓弧刪除程序。詳盡代碼一、在VB中連接AutoCAD的。在VBA中則可以跳過此步Application對象是VB應用程序與AutoCA
2、D之間鏈接的關(guān)鍵。將Application對象與AutoCAD鏈接是為AutoCAD二次開發(fā)應用程序的第一步工作。當AutoCAD運行時,GetObject函數(shù)返回Application對象,否則發(fā)生一個錯誤,這時Err對象的基礎(chǔ)屬性就會被賦值為一個非零值,可以利用一個錯誤陷井進行處理。如果AutoCAD沒有運行,可以使用CreateObject函數(shù)強迫AutoCAD啟動。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")里面的那個逗號的來源請仔細閱讀VB程序幫助里面的解釋創(chuàng)建一個名為乾康工具 一集的新菜單、創(chuàng)建菜單(在VBA環(huán)境下)代碼如下:PublicSubmenu()Dimmy_菜單組AsAcadMenuG
4、roupSetmy_菜單組=ThisDrawing.Application.MenuGroups.Item(0)Dimmy_彈出式菜單AsAcadPopupMenuSetmy_彈出式菜單=my_菜單組.Menus.Add("乾康工具集”)Dimmy_彈出式菜單項AsAcadPopupMenuItemDimopenMacroAsStringSetmy_彈出式菜單項=my_彈出式菜單.AddMenuItem(0,"刪除圓及圓弧","-VBARUNDEL_ACR+chr(13)')my_菜單組.Menus.InsertMenuInMenuBar&quo
5、t;乾康工具集",6EndSub-VBARUNDEL_ACR+chr(13)在宏名稱之前添加-VBARUN是因為從AutoCAD工具欄或菜單運行VBA宏。Macro特性必須設(shè)置為等于-VBARUN其中,是工程文件的名稱,modulename是包含要運行的宏的模塊名稱,而macroname是要運行的宏的名稱。只有在當前AutoCAD任務(wù)中未加載文件時,才需要文件名。如果提供了文件名,將會加載該文件。注:圖示解釋相關(guān)名稱,G單組,個人認為“AutoCADApplicationJ一MenuBsrPopupMeru一MenuGroups1(MenuGrOL<)jPopuphflenus
6、PopupMenuH(Pp|j卬Maiult-m1r;ToollMrs_7如的郭H(Toofcarftem)JAutoCAD中就只有一y,二二一_個菜單中/菜單,需要使PopupMenus里面的/Add方法來創(chuàng)建新的XS-<菜單項,需要使用-PopupMenu里面的一、AddMenuItem方法來創(chuàng)建,V一一一一,這些都是工具條廠取彳導AutoCAD的另一-鏈接卜圖中的“文件”“編輯”“視圖”“幫助”這些合起來就是菜單組(MenuGroup)而“文件”“編輯”“視圖”這些單獨描述就是彈出式菜單(PopupMenu)再則,標注底下的“快速標注”“線性”“對齊”等,就是特定菜單里面的菜單項(
7、PopupMenultem)爵AutoCAD2007-tPrawirigLdvkg.受 文件舊 編巖 視日m 插入?yún)n 情式 工具n 繪醫(yī)口 W 口 口通&J_y 53/凌 皿七的經(jīng)典 事生口。標注【N' |幡改(M)燕秀工具耍3300 窗口血群助5咫的主©1 R窗|。Sts&r B/Liyr'AC曲第甑A(chǔ)'?臺。曲粕0黜三、自動加載VBA工程文件(在VBA環(huán)境下)此處不需要用代碼來實現(xiàn),僅僅需要進入Autocad進行一次設(shè)置即可,操作參見下圖A、點擊工具”選項遵Auto2AD2M?C;Lser3chenqkDtktop104IKB3160SD2
8、1OC-EJRE/TOLF<B.DV?G|J0如郵)陋(白相圖m演入(1曲0捶部邙輕注(Neat(M)燕美工m幅系窟匚的再助II口同|0|>片刎*<a勢,/1oi”飛氣/I?sMftaaii.|就曲二|JB、選擇工具下拉菜單中的”加載應用程序”選項,在彈出的對話框中點擊“內(nèi)容”選項時31C4-HKB01&050310C大板)-REV-T工作空間):am劉康工案繪圄*)麻快速卑兇,.繚圖獨序W更新字段CD步塊編爆器外部參脂和塊在位輻呈星性提取因顯tit圖愫(Y)I大情4砌加選項振3百晚屏基宣村范圉口上空荀¥F1哥皿J)CTRL+0至M岳Q史里序h需0三八:而白
9、口七用卜厚比克WM劉原I南加予ITT中記錄始AutoUSPfSCTRL+9中H舉&!(11刎,砧跖應用-f;*e*刀力*如.交件雷隹5rCirtMilC:HlSrS'!匚k-q1111s.Wel-ilL4fL.:姓心to一B/JtrcffjnTilasI:城!占亡01200.11:"ifrcgrtfi力leaWHBJ*£ui.必.F-力竄.,一;.i.一t.mi;卜,jC、在接下來的對話框中點擊“添加”,來添加需要自動加載的VBA工程文件本例中的宏名稱 menu初略思路為程序運行過程中,彈出窗體文件,由用戶輸入需要刪除的圓弧的半徑范圍四、自動運行VBA工程文
10、件中自己設(shè)置的宏文件(在VBA環(huán)境下)首先介紹一下Autocad幫助文件中關(guān)于自動運行宏文件的說明用戶可以自動運行VBA工程文件中的任何宏,方法是從AutoCAD啟動功能(如acad.lsp)中使用VBARUN的命令行版本調(diào)用。例如,要自動運行名為drawline的宏,請先將drawline宏保存在VBAX程文件中。然后調(diào)用記事本程序新建一個txt文檔并在文檔中中創(chuàng)建(或附加)下面幾行:(defunS二STARTUP。(command”_-vbarun""drawline")然后將text文檔的文件名(包含后綴名)改為acad.lsp將宏命名為AcadStartu
11、p,這樣在加載VBA時就會自動運行該宏。當加載VBA時,將自動執(zhí)行acad.dvb文件中所有名為AcadStartup的宏。依據(jù)以上信息,結(jié)合本例,本文要自動運行的宏名稱問menu。操作如下:A、在電腦桌面上,新建一個文本文檔,名稱為acad.lsp。B、雙擊文件,在文檔中寫入如下代碼,然后保存(defunS:STARTUP()(command"_-vbarun""menu")C將acad.lsp放入Autocad安裝目錄下的Support文件夾內(nèi)即可五、編寫刪除圓弧的宏程序(在VBA環(huán)境下),本例中的宏名稱DEL_ACR()然后創(chuàng)建一個選集,將符合條件
12、的圓弧加入選集,然后執(zhí)行選集里面的元素刪除代碼即A、首先創(chuàng)建一個窗體對象,其中 textboxl和textbox2的文本控件用于傳遞圓弧的 半徑范圍PrivateSubCommandButton1_Click()-一一二32;27Tl窗體的名稱定為"刪除元和窗體刪除圓弧窗體.Hide在設(shè)定號圓弧半徑值后,調(diào)用EndSub一PrivateSubUserForm_Initialize()TextBoxl.Text=0.01TextBox2.Text=0.25EndSubB、編寫刪除圓弧的代碼,依次創(chuàng)建選擇集名稱,設(shè)置過濾器規(guī)則。給選集增加對象,遍歷選集對象執(zhí)行刪除命令。Public Su
13、b DEL_ACR()窗體顯示,用于設(shè)置圓弧半徑Dim FilterType(6) As Integer刪除圓弧窗體.ShowOn Error Resume NextDim my_ 圓弧選擇集 As AcadSelectionSetVBA對象瀏覽器創(chuàng)建圓一)中有Item和AddSet my_圓弧選擇集 =ThisDrawing.SelectionSets.Item("圓弧集")my_圓弧選擇集.Delete的詳細說明。使用時注意Set my_ 圓弧選擇集 =ThisDrawing.SelectionSets.Add("圓弧集")'VAuotcad
14、對象的層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成對出現(xiàn),數(shù)組元素一一對應,即 FilterType(2)對應FilterData(2)FilterType(3) = 40FilterData(3) = Va
15、l(刪除圓弧窗體.TextBox1.Text)2、過濾器參數(shù)需要引用考手冊里面的組碼值DXF參FilterType(4) = -4FilterData(4)="<="FilterType(5) = 40FilterData(5) = Val(刪除圓弧窗體.TextBox2.Text)過濾器列表中的邏輯運算符也由FilterType(6) = -4使用for循環(huán)函數(shù)遍歷選擇集里面的對象進行刪除-4組代碼表示,運算符以小于號開始(),以大于號結(jié)束()。FilterData(6)="AND>"my_圓弧選擇集.SelectOnScreenFilterType,FilterDataDimiAsIntegerFori=0Tomy_圓弧選擇集.Count-1my_圓弧選擇集.Item(i).DeleteNextmy_圓弧選擇集.DeleteEndSub注:在Autocad中選擇集刪除的方式對比
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- DB51T 1748-2014 肉兔同期發(fā)情技術(shù)規(guī)程
- DB51T 1560-2013 氯吡脲含量分析方法
- DB51T 682-2016 電梯安裝施工方案編寫規(guī)范
- 空壓機切割機項目立項申請報告
- 新建農(nóng)用車黑漆件項目立項申請報告
- 年產(chǎn)xxxpvc壓延膜項目可行性報告
- 上糊機生產(chǎn)加工項目可行性研究報告
- 新建儲運容器項目可行性研究報告
- 2024-2030年機床罩公司技術(shù)改造及擴產(chǎn)項目可行性研究報告
- 2024-2030年新版中國液化氣加汽機項目可行性研究報告
- (精華版)國家開放大學電大《成本會計》機考終結(jié)性5套真題題庫及答案6
- 滁州鑫龍化工有限公司新建30000噸-年危險廢物綜合利用項目環(huán)境影響報告書
- 不同品系種豬的性能比較
- 人工鼻的護理
- GB/T 16552-2010珠寶玉石名稱
- 中國合唱歌曲精選100首
- GB/T 12668.2-2002調(diào)速電氣傳動系統(tǒng)第2部分:一般要求低壓交流變頻電氣傳動系統(tǒng)額定值的規(guī)定
- 2023年試驗員試題及答案
- 新外研版高二英語選擇性必修二unit6 PlanB life on Mars 課件
- 靜物攝影課件
- 口腔黏膜-2010唇舌疾病
評論
0/150
提交評論