AutoCADVBA二次開(kāi)發(fā)_第1頁(yè)
AutoCADVBA二次開(kāi)發(fā)_第2頁(yè)
AutoCADVBA二次開(kāi)發(fā)_第3頁(yè)
AutoCADVBA二次開(kāi)發(fā)_第4頁(yè)
AutoCADVBA二次開(kāi)發(fā)_第5頁(yè)
已閱讀5頁(yè),還剩12頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第11章 AutoCAD VBA二次開(kāi)發(fā)自從1986年AutoLISP作為第一個(gè)用于AutoCAD二次開(kāi)發(fā)的編程語(yǔ)言被引入到 AutoCAD中, 從此許多計(jì)算機(jī)軟件開(kāi)發(fā)商和用戶用 AutoLISP編寫了數(shù)以萬(wàn)計(jì)的實(shí)用系統(tǒng)和應(yīng)用程序。 還有大量的 程序是利用 AutoCAD的外部文件(Script)對(duì)AutoCAD進(jìn)行二次開(kāi)發(fā)。對(duì) AutoCAD來(lái)說(shuō)這無(wú)疑是 一筆巨大的資源和財(cái)富,也是其賴以發(fā)展的基礎(chǔ)之一。11.1概述11.1.1 AutoCAD 中實(shí)現(xiàn) ActiveXAutoCAD ActiveX使用戶能夠從AutoCAD的內(nèi)部或外部以編程方式來(lái)操作 AutoCAD ,它是通 過(guò)將AutoCA

2、D對(duì)象顯示到"外部世界”來(lái)做到這一點(diǎn)的。一旦這些對(duì)象被顯示, 許多不同的編程語(yǔ)言和環(huán)境以及其他應(yīng)用程序 (例如Microsoft Office中的Word VBA或Excel VBA )就可以訪問(wèn)它們。在AutoCAD 中實(shí)現(xiàn) ActiveX 接口有兩大優(yōu)點(diǎn):(1) 更多的編程環(huán)境可以編程訪問(wèn)AutoCAD圖形。在 ActiveX Automation出現(xiàn)以前,開(kāi)發(fā)人員只能使用 AutoLISP或C+接口。(2) 與其他 Windows應(yīng)用程序(例如 Microsoft Office中的Excel和 Word)共享數(shù)據(jù)變得更加容 易。對(duì)象是所有ActiveX應(yīng)用程序的主要構(gòu)造塊, 每

3、一個(gè)顯示的對(duì)象均精確代表一個(gè)AutoCAD組件,AutoCAD ActiveX 接口中有許多不同類型的對(duì)象。例如,直線、圓弧、文字和標(biāo)注等圖形對(duì)象是對(duì) 象;線型與標(biāo)注樣式等樣式設(shè)置是對(duì)象;圖層、編組和塊等組織結(jié)構(gòu)是對(duì)象;視圖與視口等圖形顯 示是對(duì)象;甚至圖形、AutoCAD應(yīng)用程序本身也是對(duì)象。111.1.2 AutoCAD 中的 VBAMicrosoft VBA是一個(gè)面向?qū)ο蟮木幊汰h(huán)境,可提供類似Visual Basic(VB)的豐富開(kāi)發(fā)功能。VBA 和VB的主要差別是 VBA和AutoCAD在同一進(jìn)程空間中運(yùn)行,提供的是具有AutoCAD智能的、非??焖俚木幊汰h(huán)境。VBA也向其他支持VBA

4、的應(yīng)用程序提供應(yīng)用程序集成,這就意味著AutoCAD (使用其他應(yīng)用程序?qū)ο髱?kù))可以是如Microsoft Word或Excel之類的其他應(yīng)用程序的 Automation控制程序。在AutoCAD中實(shí)現(xiàn)VBA有四大優(yōu)點(diǎn):(1) Visual Basic編程環(huán)境易于學(xué)習(xí)和使用。(2) VBA可與AutoCAD在同一進(jìn)程空間中運(yùn)行,這使程序執(zhí)行得非???。(3) 對(duì)話框的構(gòu)造快速而有效。這使開(kāi)發(fā)人員可以構(gòu)造原型應(yīng)用程序并迅速收到設(shè)計(jì)的反饋。(4) 工程可以是獨(dú)立的,也可以嵌入到圖形中。 這樣就為開(kāi)發(fā)人員提供了非常靈活的方式來(lái)發(fā)布 他們的應(yīng)用程序。新工程會(huì)被創(chuàng)建為未保存的全局工程。創(chuàng)建完成后,可以將它

5、嵌入到圖形中或保存到工程文件 中。11.2 VBA 基礎(chǔ)11.2.1 VBA 工程AutoCAD VBA工程是由許多程序模塊、類模塊和窗體組成的集合,他們同時(shí)運(yùn)行即可完成指 定的功能。VBA工程可以保存于 AutoCAD圖形文件內(nèi)部,稱為內(nèi)嵌VBA工程;亦可保存為獨(dú)立的 工程,稱為全局 VBA工程,以*.dvb文件格式保存。對(duì)于內(nèi)嵌VBA工程,當(dāng)打開(kāi)包含該工程的AutoCAD圖形文件時(shí),它將被自動(dòng)加載。因此,在運(yùn)行內(nèi)嵌VBA工程程序之前,其用戶不須在文件夾中去尋找工程文件并加載該工程,使得工程管理更加方便。全局VBA工程的功能較多。全局工程可在任何AutoCAD圖形中運(yùn)行,亦可在工程中打開(kāi)或關(guān)

6、閉AutoCAD圖形。全局工程容易與其他用戶共享,且可制作成共享的宏 VBA為Visual Basic for Application的縮寫。AutoCAD中的VBA是指必須依賴于已有的 AutoCAD應(yīng)用程序才能運(yùn) 行的Visual Basic程序。 宏是一個(gè)可執(zhí)行的應(yīng)用子程序,每個(gè) VBA工程至少包含一個(gè)宏。資源庫(kù),因此應(yīng)用VBA開(kāi)發(fā)通用應(yīng)用程序時(shí),應(yīng)將其保存為全局工程。但全局工程也有一些缺點(diǎn),它不會(huì)隨AutoCAD圖形文件的打開(kāi)而自動(dòng)加載。所以,用戶在運(yùn)行全局工程程序之前須要知道哪個(gè)工程文件中包含了所需的宏,然后加載該工程文件,最后才能執(zhí)行相應(yīng)的宏。11.2.2 VBA管理器在當(dāng)前Aut

7、oCAD進(jìn)程中加載的所有 VBA工程均可用VBA管理器來(lái)管理,亦可用它來(lái)新建、 保存、加載、卸載、嵌入或提取工程。“VBA管理器”對(duì)話框如圖11.1所示。啟動(dòng)“VBA管理器”對(duì)話框的命令調(diào)用方法為:命令行:VBARUN菜單欄:【工具】【宏】r【VBA管理器】與VBA應(yīng)用程序開(kāi)發(fā)、管理相關(guān)的下拉菜單如圖11.2所示。圖11.1“VBA管理器”對(duì)話框16格式廷)工具(X)批圈電)標(biāo)注四 修改噬 窗口麒 幫助里)Express切st工作空間選項(xiàng)板有命的清除屏某CTRL+9CTEL+OStandardByL&yer拼寫檢查怎)快速選攆區(qū))繪圖順序 查詢卸右更新字段d) 丁塊編輯囂耍)外部參照和

8、塊在位編輯$屈姓提取僵)一加載應(yīng)用程序H).運(yùn)行腳本宏0)宏 Qfl). ALT+F8AuUUSF 谷)*加裁工程顯示閏像口kOA管理器世)新建此SW)kVisual Baic編輯器ALT+F11tg 命名 UCS Qf).CAD標(biāo)準(zhǔn)僵)向?qū)мζD置9).數(shù)字化伙卜自定義©選項(xiàng)一圖11.2 與VBA應(yīng)用程序開(kāi)發(fā)、管理相關(guān)的下拉菜單1.創(chuàng)建新VBA工程創(chuàng)建新VBA工程的步驟如下:(1)打開(kāi)“VBA管理器”對(duì)話框。(2)選擇“新建”。新工程將以默認(rèn)的名稱“ ACADProject ”創(chuàng)建。如要更改工程名稱,必須進(jìn)入“ Visual Basic編 輯器”中,在“工程屬性”窗口中更名。其操作方

9、法步驟如下:(1)單擊"VBA管理器”中的"Visual Basic編輯器”按鈕(如圖11.1所示)或用菜單選擇“Visual Basic 編輯器”(如圖 11.2 所示),打開(kāi)"Microsoft Visual Basic ”,如圖 11.3所示。(2)在VB的“工程資源管理器”選中“ ACADProject(Global1) ”,單擊右鍵,在彈出菜單中選擇 “ACADProject屬性,”選項(xiàng),打開(kāi)“工程屬性”對(duì)話框,在“工程名稱”中輸入用戶欲更改的名稱,如圖11.4所示。圖 11.3 Visual Basic 編輯器圖11.4 “工程屬性”對(duì)話框2. 保存新

10、VBA工程每次保存圖形文件時(shí),都將保存其內(nèi)嵌工程。而全局工程必須使用 VBA管理器或VB編輯器來(lái) 保存。使用VBA管理器保存工程的步驟:(1) 打開(kāi)VBA管理器,并選擇要保存的工程。(2) 選擇“另存為”,將會(huì)打開(kāi)“另存為”對(duì)話框。(3) 選擇用于保存該工程的文件的名稱。(4) 單擊“保存”按鈕。3. 加載VBA工程將工程加載到AutoCAD圖形中時(shí),所有的公用子程序(也稱為宏)均為可用程序。每次打開(kāi)圖 形時(shí),內(nèi)嵌在圖形中的工程就會(huì)被自動(dòng)加載,而以*.dvb文件格式保存的全局工程必須明確加載方能:每次加載工程時(shí),都將自動(dòng)加載此工程引用的任何其他工程。此外,AutoCAD在啟動(dòng)時(shí)會(huì)自動(dòng)加載任何名

11、為acad.dvb的工程文件。加載已有VBA工程文件的步驟如下:(1) 在“VBA管理器”對(duì)話框中單擊“加載”按鈕,彈出“打開(kāi) VBA工程”對(duì)話框,如圖11.5 所示。圖11.5 "打開(kāi)VBA工程”對(duì)話框(2) 在“打開(kāi)VBA工程”對(duì)話框中選擇欲加載的工程文件。(3) 單擊“打開(kāi)”按鈕,再單擊“啟用宏”按鈕。打開(kāi)VB編輯器即可查看、編輯或運(yùn)行該程序。注意:用戶在加載工程時(shí),均會(huì)顯示“禁用宏”或“啟用宏”的選項(xiàng)提示,作為防范病毒的提示,如圖11.6所示。若啟用了帶病毒的宏,程序中的病毒會(huì)一并運(yùn)行;若禁用該宏,工程仍可被調(diào) 用,但不能運(yùn)行該工程中的任何程序。圖11.6工程加載防范病毒提示

12、提示4. 卸載VBA工程卸載工程可釋放內(nèi)存,并使已加載工程的列表保持在易于管理的長(zhǎng)度。但不能卸載內(nèi)嵌工程或 被其他已加載工程所引用的工程。卸載VBA的步驟如下:(1) 在“VBA管理器”對(duì)話框中選擇欲卸載的工程。(2) 單擊“卸載”按鈕。11.2.3 VBA IDE在AutoCAD中加載VBA工程后,即可使用 VBA交互式開(kāi)發(fā)環(huán)境IDE來(lái)運(yùn)行、調(diào)試程序或刪 除錯(cuò)誤,亦可在IDE中繼續(xù)編輯該工程的程序代碼、窗體和部件引用等元素。1.打開(kāi) VBA IDE可用以下兩種方法打開(kāi) VBA IDE :命令行:VBAIDE菜單欄:【工具】【宏】r【Visual Basic編輯器】VBA IDE界面如圖11.

13、7所示,在其中可對(duì)所有已加載的工程進(jìn)行編輯。圖 11.7 VBA IDE 界面2.工程信息在VBA IDE中,“工程”窗口顯示的內(nèi)容包括:所有已加載的VBA工程,這些工程所包含的程序代碼、類別、窗體、與工程相關(guān)的文件,本工程所引用的其他 VBA工程,這些工程所在的位置(路 徑)等,如圖11.8所示。“工程”窗口的頂部為包含3個(gè)按鈕的工具條,通過(guò)切換按鈕可顯示不同的工程元素。選中工程模塊中的“窗體”后,單擊“查看代碼”按鈕可顯示該工程模塊的程序代碼;單擊“查看對(duì)象” 按鈕可顯示該工程元素對(duì)象的外觀,如窗體界面。“工程”窗口在默認(rèn)狀態(tài)下是打開(kāi)的。若不可見(jiàn),可在IDE中用菜單操作"【視圖】

14、【工程資源管理器】”來(lái)打開(kāi)。IDE 為 Integrated development environment 的縮寫,即集成開(kāi)發(fā)環(huán)境。查看對(duì)象切換文件夾查看代碼圖11.8 “工程”窗口3.工程元素每個(gè)工程均由若干不同的元素構(gòu)成,包含對(duì)象、窗體、標(biāo)準(zhǔn)模塊、類模塊和引用等。(1) 對(duì)象 對(duì)象是工程中的基本運(yùn)行實(shí)體。VBA中的對(duì)象可分為兩類,一類是由系統(tǒng)設(shè)計(jì)好,可直接使用或?qū)ζ溥M(jìn)行操作的對(duì)象;另一類是用戶定義,可用程序建立用戶自己的對(duì)象。對(duì)象是具 有特殊屬性(數(shù)據(jù))和行為方式(方法)的實(shí)體,它由屬性、事件和方法這(2) 窗體模塊窗體模塊分為兩部分,一部分是作為用戶界面的窗體, 的代碼。窗體是放置其他

15、對(duì)象的容器,常用于創(chuàng)建工程的自定義交互式對(duì)話框。(3) 標(biāo)準(zhǔn)模塊 又叫程序代碼模塊, 簡(jiǎn)稱模塊。該模塊完全由代碼組成, 體或控件相關(guān)聯(lián)。(4) 類模塊 類模塊既包含代碼又包含數(shù)據(jù),每個(gè)類模塊定義一個(gè)類。對(duì)象,調(diào)用類模塊中的過(guò)程。3個(gè)重要方面構(gòu)成。另一部分是執(zhí)行具體操作這些代碼不與具體的窗可在窗體模塊中定義類的4.添加新元素用戶可在工程中添加新元素,比如插入新的窗體、模塊或類模塊等。添加新元素后,用戶可修 改元素的性質(zhì)(例如元素名稱)和編寫程序代碼。用戶命名新元素時(shí),應(yīng)遵循規(guī)范的命名慣例,即“見(jiàn)名知義”,提高程序的可讀性。在工程中添加新元素的步驟如下:(1) 在VBA IDE的“工程”窗口中選擇

16、要添加元素的工程。(2) 從“插入”菜單中選擇“添加用戶窗體”、“添加模塊”或“添加類模塊”選項(xiàng),將新元素添加到該工程中。新的元素加入到工程后,會(huì)以默認(rèn)的屬性出現(xiàn)在“工程”窗口中。5. 編輯元素元素的編輯包括對(duì)屬性、代碼和對(duì)象的編輯等。(1) 元素屬性編輯 在“工程”窗口中選取被編輯的元素,“屬性”窗口中將顯示其屬性,如圖11.9所示。將光標(biāo)定位于“屬性”窗口右邊的屬性值欄,即可修改為需要的屬性值。(2) 代碼編輯 在“工程”窗口中選取被編輯的元素(窗體、模塊或類模塊),再單擊窗口頂部的“查看代碼”按鈕,即可打開(kāi)程序代碼窗口并編輯程序代碼,如圖 11.10所示。屆牲-Vs«jrF&#

17、171;rBlVserForail UserFOrmV按宇母序1按分類序.(名稱)UserFormlAEckColor OBOoooooraBorderCalor 00000121EorderStyle0 - fmB or derS tyl eNoneIlCapti on圓椎臺(tái)與圓柱相震展開(kāi)CADCycle0 - fmCycl tA1U orm 5Dr awEuff«r32000EgblwdTfutFcut黑體FereColor moooooisaH«i ght241.5HelpConteM tIE0色 pS cr ollB ar s Vi m i bl 03 - fmSc

18、rollEirEEothLeft0IHcus «IconQJon«)0 = f m M QU5. eF o i nt er D e f aul tPi ctur e(Hom)Fi ctur eAli gnmeiit Pi etur eSiiMod.ft2 一 fm-P i c f ur eAl i gnm entC ent er 0 fmPi ctureSi reMlodeClipFi cturTilingFils*Ei ghtl oLeftFals«0 - finScr olLE sNcn«ScrollHeiclitQ圖11.9“屬性”窗口圖11.10

19、“程序代碼”窗口(3) 窗體編輯 在“工程”窗口中選取被編輯的窗體模塊,再單擊窗口頂部的“查看對(duì)象”按鈕,即可打開(kāi)窗體窗口和控件工具箱,如圖11.11所示。用戶可在該窗口中增刪對(duì)象、編輯對(duì)象的屬性或編輯與窗體關(guān)聯(lián)的程序代碼。雙擊窗體窗口中的控件,可在程序代碼窗口中顯示與該控件相關(guān)的程 序代碼。圈候臺(tái)與圓柱相黃展開(kāi)CAD.回臺(tái)參數(shù)上底半徑R比下底半徑電=:.回柱參數(shù):半徑:.高度:軸間距K圓柱中心高K3=:傾角 the t a=幫助圖 11.11口 窗 K力體 心窗 1a11.3 VBA二次開(kāi)發(fā)實(shí)例在學(xué)習(xí)了 AutoCAD VBA 基礎(chǔ)知識(shí)后,接下來(lái)介紹一個(gè)簡(jiǎn)單實(shí)例。通過(guò)該實(shí)例的學(xué)習(xí),我們可 以

20、初步掌握開(kāi)發(fā)VBA應(yīng)用程序的一般過(guò)程。訓(xùn)練11.1應(yīng)用VBA編寫輸入起點(diǎn)和終點(diǎn)坐標(biāo)繪制直線的參數(shù)化程序。應(yīng)用 VBA 程序繪制直線的方法為:AddLine(StartPoint, EndPoint),其中 StartPoint, EndPoint 為起點(diǎn)、終點(diǎn)坐標(biāo),必須為 3元素列表(即數(shù)組)。操作步驟如下:(1)打開(kāi)VBA管理器,單擊“新建”按鈕,添加名稱為“ ACADProject ”、位置為“ Global2”的 新工程,如圖11.12所示。選中該工程后,再單擊"另存為”將之保存于D盤,名稱為"DrawLine.dvb ”。圖11.12 VBA管理器打開(kāi)VBA IDE

21、 ,在“插入”菜單中選擇“用戶窗體”插入新窗體。打開(kāi)“工具箱”(如圖11.13所示),點(diǎn)擊“框架”按鈕,在窗體中建立兩個(gè)框架,分別用于起點(diǎn)和終點(diǎn)坐標(biāo)的輸入;再點(diǎn)擊“標(biāo)簽”和“文字框”按鈕,在兩個(gè)框架中分別建立用于輸入起點(diǎn) 和終點(diǎn)坐標(biāo)的標(biāo)簽和對(duì)話框;再點(diǎn)擊“命令按鈕”按鈕,在用戶窗體中建立“確定”和“結(jié)束”按 鈕。H:Vft 京理工教材 CAD 教材5.1 )DrawLine,dvbfrmLfne (UserForm)起點(diǎn)坐標(biāo) 一 一 _ :遂點(diǎn)坐標(biāo)圖11.13 “用戶窗體”編輯窗口(4)打開(kāi)“屬性窗口” (如圖11.14所示),在“用戶窗體”中依次點(diǎn)擊控件,在其“屬性窗口 中設(shè)置相應(yīng)屬性。按表

22、 11.1所示設(shè)置窗體及控件的相應(yīng)屬性。E H:U匕京理工教材CAD教材(5.1 JWrawLinc.dvb - frmLine (UscrForm)' " d ' k參數(shù)化繪直線練習(xí).捋點(diǎn)坐標(biāo):上咬 p-40-上邸4= _ |Jo z end= I n£ - fraSP|益稱)£reSP &HS(W(W(WFftBordarC'clcr順ooocm舞BorderStyle0 - fmE or dtrS tyl on«Caption起點(diǎn)坐標(biāo)Con.tr oil ipTeKtCyclt0 一 fmCycleAllForms=

23、Enatl«dImsFont宋體FcreCfilor鏘 wwomHei ght73HelpContextID0K*epScrollBarVi sible3 - f mS ct ol IB ar sB q thUft12(W<M)MlousePoiinter0 - fmM oue eP o i nt erD ePi ctureQjon.)Fictureftli pun ent2 - fmF i c twr eAl i gm* en 1PicturtSiztMode0 一 fmPictMrtSi zModetPictureTiling圖11.14“屬性”設(shè)置窗口(5) 雙擊&quo

24、t;確定”按鈕打開(kāi)"代碼窗口”,在行Private Sub cmdOK_Click()入以下代碼:一ThisDrawing.Application.Documents.AddDim StartPoint(0 To 2) As DoubleDim EndPoint(0 To 2) As DoubleStartPoint(0) = txtXSStartPoint(1) = txtYSStartPoint(2) = txtZSEndPoint(0) = txtXEEndPoint (1) = txtYEEndPoint =txtZEDim LineObj As AcadLine'設(shè)

25、置Line對(duì)象和行End Sub之間輸'打開(kāi)新圖形'定義起點(diǎn)坐標(biāo)'定義終點(diǎn)坐標(biāo)'提取起點(diǎn)'提取起點(diǎn)'提取起點(diǎn)'提取終點(diǎn)'提取終點(diǎn)'提取終點(diǎn)'定義Line對(duì)象x坐標(biāo) y坐標(biāo) z坐標(biāo) x坐標(biāo) y坐標(biāo)z坐標(biāo)表11.1繪制直線的窗體及控件屬性設(shè)置窗體及控件名稱MB設(shè)置值窗體NamefrmLineCaption參數(shù)化繪直線練習(xí)框架NamefraSP, fraEPCaption起點(diǎn)坐標(biāo),終點(diǎn)坐標(biāo)標(biāo)簽NamelblXS , lblYS , lblZS , lblXE , lblYE , lblZECaptionx_start,

26、y_start, z_start, x_end, y_end, z_end提不'輸入直線起 點(diǎn)、終點(diǎn)坐標(biāo)值文本框NametxtXS , txtYS , txtZS , txtXE , txtYE , txtZEText10, 10, 0, 40, 40, 40輸入直線起點(diǎn)、終 點(diǎn)坐標(biāo)值命令按鈕NamecmdOK_Click , cmdEnd_ClickCaption確定,結(jié)束點(diǎn)擊按鈕Set LineObj = ThisDrawing.ModelSpace.AddLine (StartPoint, EndPoint)ThisDrawing.SaveAs("D:Line_Ex.d

27、wg") '保存圖形和行End Sub之間輸(6) 雙擊"結(jié)束”按鈕打開(kāi)"代碼窗口”,在行Private Sub cmdEnd_Click()入代碼“ End ”,用于結(jié)束程序。一步驟(5)、(6)輸入的代碼如圖11.15所示。F5鍵來(lái)運(yùn)行程序。AutoCAD應(yīng)用程序?qū)⒅糜谧钋?。此時(shí)可在圖形中看到直線,且圖形的文(7) 從VBA IDE的“運(yùn)行”菜單中選擇“運(yùn)行子程序 /用戶窗體”選項(xiàng)或按(8) 當(dāng)程序運(yùn)行完時(shí),件名稱為L(zhǎng)ine_Ex.dwg 。VHWt;京理工教材教材(51WTawLinddvb fnn一 " 口cadOEV Click| VF

28、rivate Sub cmdlnd Cli ck 0 EndEnd Sub1APrivate Sub cmdCK.Cli ckOThi sErawing. Application. Eocwnents. Aid '打開(kāi),新囹開(kāi)Dim StartFoint ® To 2) As D&uble,定義起點(diǎn)坐標(biāo)Dim EndPomt (0 To 2) As Double'定義舞點(diǎn)坐標(biāo)StartFoint= txtlCS提取起點(diǎn)x坐標(biāo)StwrtFoint (1) = UtYS'提取長(zhǎng)點(diǎn)建標(biāo)StartPoint(2) = txtZS,提取起點(diǎn)t坐標(biāo)EnarOmt(

29、0 = txtKE'提取肄點(diǎn)x坐標(biāo)EndFoiM (1) = txt¥E,提取終點(diǎn)淳標(biāo)EndPomt (23 = txtZE'提取終點(diǎn)工坐標(biāo)Dim LineObj A;J 定見(jiàn)Linei對(duì)象'設(shè)置Li m帝豪Set LineObj - ThisDrawing. NodelSpace. AddLiiie (StartFointj EndPoint)Thi sDr awing. Sava As (*E : LiikA_Ex., 保有宦戒End SutLitj專虹L>J圖11.15實(shí)例的代碼窗口注:VBA中的出錯(cuò)處理方法在VB和VBA中,使用On Error語(yǔ)

30、句來(lái)捕獲運(yùn)行時(shí)錯(cuò)誤。此語(yǔ)句為系統(tǒng)設(shè)置精確的捕獲。當(dāng)錯(cuò)誤發(fā)生時(shí),此語(yǔ)句會(huì)自動(dòng)轉(zhuǎn)到專門編寫的錯(cuò)誤處理程序,系統(tǒng)的默認(rèn)錯(cuò)誤處理則被略過(guò)。On Error語(yǔ)句有三種形式:(1) On Error Resume Next(2) On Error GoTo Label(3) On Error GoTo 0當(dāng)希望忽略錯(cuò)誤時(shí),可以使用On Error Resume Next語(yǔ)句。此語(yǔ)句捕獲錯(cuò)誤但是不會(huì)顯示錯(cuò)誤信息或者終止程序,而是移到下一行代碼繼續(xù)執(zhí)行。例如,如果希望創(chuàng)建子例程來(lái)遍歷模型空間并 修改每個(gè)圖元的顏色,則在試圖對(duì)鎖定圖層上的圖元著色時(shí)AutoCAD將會(huì)拋出錯(cuò)誤。這時(shí)不需要終止過(guò)程,而只需要跳過(guò)鎖定

31、圖層上的圖元并繼續(xù)處理其余的圖元。On Error Resume Next語(yǔ)句就可以完成這個(gè)過(guò)程。當(dāng)希望編寫明確的處理程序時(shí),可以使用On Error GoTo Flag語(yǔ)句(Flag為標(biāo)記)。此語(yǔ)句捕獲錯(cuò)誤但不會(huì)顯示錯(cuò)誤信息或者終止程序,而是跳到代碼中的特定位置。然后代碼可以使用適當(dāng)?shù)姆?式來(lái)響應(yīng)錯(cuò)誤。例如,可以擴(kuò)充上一個(gè)樣例,以顯示包含鎖定圖層上每個(gè)圖元句柄的消息。訓(xùn)練11.2應(yīng)用VBA編寫輸入圓心、半徑、起始角和終止角繪制圓弧的參數(shù)化程序。應(yīng)用VBA程序繪制樣條曲線的方法為: AddArc(Center, Radius, StartAngle, EndAngle),其中, Center為

32、圓心坐標(biāo)3元素列表,Radius為圓弧半徑,StartAngle, EndAngle為圓弧起始、終止角(弧 度)。按訓(xùn)練11.1的方法和步驟設(shè)計(jì)參數(shù)化繪制圓弧的VBA程序,其步驟依次為:打開(kāi) VBA IDE、插入用戶窗體并設(shè)置屬性、插入控件并設(shè)置屬性、編寫代碼、調(diào)試運(yùn)行程序、保存工程。參數(shù)化繪 制圓弧的窗體如圖11.16所示,并按表11.2所示設(shè)置窗體及控件的相應(yīng)屬性。參數(shù)化繪圓弘練習(xí)-z_CetiPoirLt= 5Q ArcR= 如y_CenPoint= 奇 :StaAng=: 如 z_CenPoint= q EndAng= 吊口K-:r-.r.-.r.rn-.r.-.»,- -

33、- - . . «-B1 一 - - -L . . _ '圖11.16繪制圓弧的窗體參數(shù)化繪制圓弧的主要代碼如下:Private Sub cmdOK_Click()Dim pi As Doublepi = 4 * Atn(1)'定義常數(shù) itThisDrawing.Application.Documents.AddDim ArcCenter(0 To 2) As DoubleDim ArcRadius As DoubleDim StartAngle As DoubleDim EndAngle As DoubleArcCenter(O) = txtXCen.TextAr

34、cCenter(1) = txtYCen.TextArcCenter(2) = txtZCen.TextArcRadius = txtRadius.TextStartAngle = txtStaAng.Text * pi / 180EndAngle = txtEndAng.Text * pi / 180'打開(kāi)新圖形'定義圓弧中心'定義圓弧半徑'定義圓弧起始角'定義圓弧終止角'提取圓弧中心X坐標(biāo)'提取圓弧中心Y坐標(biāo)'提取圓弧中心Z坐標(biāo)'提取圓弧半徑'提取圓弧起始角并轉(zhuǎn)換為弧度'提取圓弧終止角并轉(zhuǎn)換為弧度表11

35、.2繪制圓弧的窗體及控件屬性設(shè)置窗體及控件名稱屬性設(shè)置值作用窗體NamefrmArcCaption參數(shù)化繪圓弧練習(xí)標(biāo)簽NamelblXCen , lblYCen , lblZCen , lblArcR , lblStaAng , lblEndAng , lblSAUnit , lblEAUnitCaptionx_CenPoint, y_CenPoint, z_CenPoint, ArcR , StaAng, EndAng ,。(角度單位),°提示輸入圓心坐 標(biāo)、半徑、角度值 及角度單位文本框NametxtXCen , txtYCen , txtZCen , txtRadius , t

36、xtStaAng , txtEndAngText50, 70, 0, 30, 20, 160輸入圓心坐標(biāo)、圓 弧半徑及圓弧起 始、終止角度值命令按鈕NamecmdOK Click , cmdEnd ClickCaption確定,結(jié)束點(diǎn)擊按鈕Dim ArcObj As AcadArc '定義 Arc 對(duì)象'設(shè)置Arc對(duì)象Set ArcObj = ThisDrawing.ModelSpace.AddArc(ArcCenter, ArcRadius, StartAngle, EndAngle)ThisDrawing.SaveAs ( D:Arc_Ex.dwg ")'

37、保存圖形End Sub訓(xùn)練11.3應(yīng)用VBA編寫輸入基圓半徑和展角上限繪制漸開(kāi)線的參數(shù)化程序。漸開(kāi)線為常用工程曲線,在機(jī)械設(shè)計(jì)基礎(chǔ)或機(jī)械原理教材中有詳細(xì)介紹。在VBA中,可采用樣條曲線擬合的方法繪制漸開(kāi)線。在如圖11.17所示的直角坐標(biāo)系 Oxy中,漸開(kāi)線上點(diǎn) K的坐標(biāo)為7187x = rb(sin 8 -6 cos8)J(11.1)y = rb(cos 8 +、sin 8)式中,上一形成漸開(kāi)線的基圓半徑;9 用弧度表示的漸開(kāi)線上K點(diǎn)對(duì)應(yīng)的展角,且0壬6苴6。漸開(kāi)線的切線方向可用其斜率(導(dǎo)數(shù))表示,即-dy dy/dmy =衛(wèi)=cot ( 0)(11.2)dx dx/d圖11.17直角坐標(biāo)系下

38、的漸開(kāi)線應(yīng)用 VBA 程序繪制樣條曲線的方法為:AddSpline(PointsArray, StartTangent, EndTangent),其中,PointsArray為樣條曲線(漸開(kāi)線)擬合點(diǎn)的 3維坐標(biāo)組成的列表(即數(shù)組,必須為 3的倍數(shù)), StartTangent, EndTangent為樣條曲線的起點(diǎn)和終點(diǎn)切向向量(必需為 3元素列表,切向必需與曲線 的走向一致)8。起點(diǎn)的切向豎直向上7181-183,可取(0, 1, 0);根據(jù)式(11.2)可知終點(diǎn)的切向?yàn)?1, cot 8, 0)??筛鶕?jù)精度要求將所繪漸開(kāi)線的展角上限等分為J個(gè)區(qū)間(程序中取J=10),應(yīng)用For, Next循環(huán)計(jì)算擬合點(diǎn)的坐標(biāo)。首先按下式計(jì)算展角:展=禹/j , 1 =展(j=0, 1,2, , , j)(11.3)再用式(11.1)計(jì)算點(diǎn)K的坐標(biāo)(XKj, yKj)。參數(shù)化籍制漸開(kāi)線F.,-IV- 7 A 圖11.18繪制漸開(kāi)線的窗體繪制漸開(kāi)線及基圓的窗體如圖11.18所示,程序如下:Private Sub cmdOK_Click()ThisDrawing.Application.Documents.Add pi = 4 *

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論