版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、第五章 采礦編程初步多媒體教學課件vbaide vbaide 激活 vba ide。 vba ide 可以用來以交互方式編輯、運行和調(diào)試程序。雖然 vba ide 只能在 autocad 運行時被調(diào)用,但是可以獨立于 autocad 應用程序窗口對它進行最小化、打開和關(guān)閉操作。 vbaman vbaman 顯示 vba 管理器,供用戶查看、創(chuàng)建、加載、關(guān)閉、內(nèi)嵌和提取工程。 vmicrosoft vba 是一個面向?qū)ο蟮木幊淌且粋€面向?qū)ο蟮木幊汰h(huán)境,可提供類似環(huán)境,可提供類似 visual basic (vb) 的的豐富開發(fā)功能。豐富開發(fā)功能。vba 和和 vb 的主要差別的主要差別是是 vb
2、a 和和 autocad 在同一進程空間中在同一進程空間中運行,提供的是具有運行,提供的是具有 autocad 智能的智能的、非??焖俚木幊汰h(huán)境。、非??焖俚木幊汰h(huán)境。 vvba 也向其他支持也向其他支持 vba 的應用程序提的應用程序提供應用程序集成。這就意味著供應用程序集成。這就意味著 autocad(使用其他應用程序?qū)ο髱欤┛梢允侨纾ㄊ褂闷渌麘贸绦驅(qū)ο髱欤┛梢允侨?microsoft word 或或 excel 之類的其他應之類的其他應用程序的用程序的 automation 控制程序。控制程序。 v在在 autocad autocad 中實現(xiàn)中實現(xiàn) vba vba 有四大優(yōu)點:有四大優(yōu)
3、點: visual basic 編程環(huán)境易于學習和使用。vba 可與 autocad 在同一進程空間中運行。這使程序執(zhí)行得非常快。 對話框的構(gòu)造快速而有效。這使開發(fā)人員可以構(gòu)造原型應用程序并迅速收到設(shè)計的反饋。 工程可以是獨立的,也可以嵌入到圖形中。這樣就為開發(fā)人員提供了非常靈活的方式來發(fā)布他們的應用程序。vvba 通過通過 autocad activex automation 接口將消息發(fā)送到接口將消息發(fā)送到 autocad。autocad vba 允許允許 vba 環(huán)境與環(huán)境與 autocad 同時運同時運行,并通過行,并通過 activex automation 接口對接口對 autoc
4、ad 進行編程控制。進行編程控制。autocad、activex automation 和和 vba 的這種結(jié)合的這種結(jié)合方式不僅為操作方式不僅為操作 autocad 對象,而且為對象,而且為向其他應用程序發(fā)送或檢索數(shù)據(jù)提供了功向其他應用程序發(fā)送或檢索數(shù)據(jù)提供了功能極為強大的接口。能極為強大的接口。v以下是以下是 autocad 中定義中定義 activex 和和 vba 編程的三個基本元素。編程的三個基本元素。v第一個是第一個是 autocadautocad 本身,它擁有豐富的本身,它擁有豐富的封裝了封裝了 autocad autocad 圖元、數(shù)據(jù)和命令的對圖元、數(shù)據(jù)和命令的對象集。因為象
5、集。因為 autocad autocad 是一個設(shè)計為具有是一個設(shè)計為具有多層接口的開放架構(gòu)應用程序,因此熟多層接口的開放架構(gòu)應用程序,因此熟悉悉 autocad autocad 編程功能對于有效使用編程功能對于有效使用 vba vba 來說是非常必要的。如果使用過來說是非常必要的。如果使用過 autolispautolisp 編程來控制編程來控制 autocadautocad,就應,就應該已經(jīng)對該已經(jīng)對 autocad autocad 的機制有了一定的了的機制有了一定的了解。然而,解。然而,vba vba 的基于對象的處理方式的基于對象的處理方式和和 autolisp autolisp 的方
6、式卻很不一樣。的方式卻很不一樣。v第二個元素是第二個元素是 autocad activex autocad activex automationautomation 接口,它建立與接口,它建立與 autocad autocad 對象的消息傳遞(通信)。用對象的消息傳遞(通信)。用 vba vba 編程編程需要對需要對 activex automation activex automation 有基本的有基本的了解。關(guān)于了解。關(guān)于 autocad activex autocad activex automation automation 接口的說明,請參見接口的說明,請參見 activex an
7、d vba reference guideactivex and vba reference guide。即。即使是有經(jīng)驗的使是有經(jīng)驗的 vb vb 編程人員也會發(fā)現(xiàn)要編程人員也會發(fā)現(xiàn)要理解和開發(fā)理解和開發(fā) autocad vba autocad vba 應用程序,應用程序,autocad activex automation autocad activex automation 接口是非接口是非常重要的。常重要的。v第三個元素是 vba 編程環(huán)境 (ide),它具有自己的對象組、關(guān)鍵詞和常量等,能提供程序流、控制、調(diào)試和執(zhí)行等功能。vautocad vba 包含 microsoft vba
8、擴展聯(lián)機幫助,可以在 vba ide 中通過以下方法訪問: 按鍵盤上的 f1 鍵從 vba ide 菜單欄中選擇“幫助” 單擊 vba ide 工具欄上的“?”圖標v使用使用 vba vba 管理器可以查看當前管理器可以查看當前 autocad autocad 任務(wù)中加載的所有任務(wù)中加載的所有 vba vba 工程。它是一種工程。它是一種 autocad autocad 工具,可讓用戶加載、卸載、工具,可讓用戶加載、卸載、保存、創(chuàng)建、內(nèi)嵌和提取保存、創(chuàng)建、內(nèi)嵌和提取 vba vba 工程。工程。 v打開打開 vba vba 管理器的步驟管理器的步驟 從“工具”菜單中選擇“宏”“vba 管理器”
9、。 在 autocad 中調(diào)用 vbaman 命令。 v加載現(xiàn)有的工程加載現(xiàn)有的工程 v卸載工程卸載工程 v將工程嵌入到圖形中將工程嵌入到圖形中 v從圖形中提取工程從圖形中提取工程 v創(chuàng)建新工程創(chuàng)建新工程 v保存工程保存工程 加載現(xiàn)有的工程v在在“vba vba 管理器管理器”中,使用中,使用“加載加載”選項打開選項打開“打開打開 vba vba 工程工程”對話框。對話框。 v在在“打開打開 vba vba 工程工程”對話框中,選擇要打開的工程文件對話框中,選擇要打開的工程文件。“vba vba 工程工程”對話框只能打開有效的對話框只能打開有效的 dvb dvb 文件。如果文件。如果用戶試圖打
10、開其他類型的文件,則會收到一條錯誤信息。用戶試圖打開其他類型的文件,則會收到一條錯誤信息。 v選擇選擇“打開打開”。 v用戶還可以使用以下任意方法來加載工程文件:用戶還可以使用以下任意方法來加載工程文件: 輸入 vbaload 命令,打開“打開 vba 工程”對話框。將 dvb 文件從 windows 資源管理器拖到 autocad 窗口中打開的圖形中。卸載 vba 工程的步驟v在在 vba vba 管理器中選擇要卸載的工程。管理器中選擇要卸載的工程。 v選擇選擇“卸載卸載”。 v或者,使用或者,使用 vbaunload vbaunload 命令,該命令會命令,該命令會提示輸入要卸載的工程。提
11、示輸入要卸載的工程。 創(chuàng)建新工程v新工程會被創(chuàng)建為未保存的全局工程。新工程會被創(chuàng)建為未保存的全局工程。創(chuàng)建完成后,可將它嵌入到圖形中或保創(chuàng)建完成后,可將它嵌入到圖形中或保存到工程文件中。存到工程文件中。 v創(chuàng)建新創(chuàng)建新 vba vba 工程的步驟工程的步驟 打開 vba 管理器。 選擇“新建”。 新工程將用默認的名稱 acadproject 創(chuàng)建。要更改工程名,必須進入 vba ide 中。關(guān)于在 vba ide 中命名工程的詳細信息,請參見 命名工程。更改工程名稱的步驟v在在 vba ide vba ide 的的“工程工程”窗口中,選擇要窗口中,選擇要更改的工程。更改的工程。 v在在“特性特
12、性”窗口中編輯工程的窗口中編輯工程的 name name 特特性。性。更改工程的文件名的步驟v在在 vba ide vba ide 中,從中,從“文件文件”菜單中選擇菜單中選擇“保存保存”選項。選項。 v在在“另存為另存為”對話框中輸入工程文件的對話框中輸入工程文件的新名稱和位置。新名稱和位置。 v查看工程信息查看工程信息 v定義工程中的組件定義工程中的組件 v輸入現(xiàn)有組件輸入現(xiàn)有組件 v編輯組件編輯組件 v命名工程命名工程 v保存工程保存工程 v引用其他引用其他 vba vba 工程工程 v設(shè)置設(shè)置 vba ide vba ide 選項選項 查看工程信息vvba ide vba ide 包含
13、了包含了“工程工程”窗口窗口,其中顯示了所有已加載,其中顯示了所有已加載的的 vba vba 工程列表。這個窗口還顯示工程中包含的代碼工程列表。這個窗口還顯示工程中包含的代碼、類和窗體模塊,與工程關(guān)聯(lián)的文檔,從工程引用的所、類和窗體模塊,與工程關(guān)聯(lián)的文檔,從工程引用的所有其他有其他 vba vba 工程,以及工程的實際位置(路徑)。工程,以及工程的實際位置(路徑)。 定義工程中的組件v對象 v窗體 v標準模塊 v類模塊 v引用 v添加新組件 v對象組件對象組件代表代表 vba vba 代碼將訪問的對象或代碼將訪問的對象或文檔的類型。對于文檔的類型。對于 autocad vba autocad
14、vba 工程,工程,此對象代表當前的此對象代表當前的 autocad autocad 圖形。圖形。v窗體組件窗體組件包含由用戶構(gòu)造的、用于工程的包含由用戶構(gòu)造的、用于工程的自定義對話框。自定義對話框。v代碼模塊組件代碼模塊組件包含用戶的常用過程和函數(shù)包含用戶的常用過程和函數(shù)。標準模塊也稱為代碼模塊,或簡稱為模。標準模塊也稱為代碼模塊,或簡稱為模塊。塊。v類模塊組件類模塊組件包含用戶自己定義的所有對象包含用戶自己定義的所有對象(定義為類)。(定義為類)。 v引用組件引用組件包含對其他工程或庫的所有引用包含對其他工程或庫的所有引用。添加新組件v添加新組件將在工程中創(chuàng)建空白組件。添加新組件將在工程中
15、創(chuàng)建空白組件。用戶可以將新的模塊、窗體和類模塊添用戶可以將新的模塊、窗體和類模塊添加到自己的工程中。用戶需要自己更新加到自己的工程中。用戶需要自己更新所有的組件特性(例如組件名稱),并所有的組件特性(例如組件名稱),并填入適當?shù)拇a。在命名新組件時,請?zhí)钊脒m當?shù)拇a。在命名新組件時,請注意其他開發(fā)人員在未來的應用程序中注意其他開發(fā)人員在未來的應用程序中可能會使用您的組件。請可能會使用您的組件。請遵循開發(fā)團隊遵循開發(fā)團隊的命名慣例的命名慣例。v向工程中添加新組件的步驟:向工程中添加新組件的步驟:在 vba ide 的“工程”窗口中選擇要向其中添加組件的工程。 從“插入”菜單中選擇“用戶窗體”、“
16、模塊”或“類模塊”來向工程中添加新組件。 新組件將會被添加到工程中并顯示在“工程”窗口中。 編輯組件v在在 vba ide vba ide 中,可以編輯標準模塊、類中,可以編輯標準模塊、類模塊和窗體。標準模塊和類模塊均在模塊和窗體。標準模塊和類模塊均在“代碼代碼”窗口中編輯窗口中編輯;窗體則在;窗體則在“用戶窗用戶窗體體”窗口窗口中使用特殊的的工具箱進行編中使用特殊的的工具箱進行編輯。輯。 v由于可以打開的由于可以打開的“代碼代碼”窗口與擁有的窗口與擁有的模塊數(shù)目一致,因此可以很容易地查看模塊數(shù)目一致,因此可以很容易地查看不同窗體或模塊中的代碼,并在它們之不同窗體或模塊中的代碼,并在它們之間互
17、相復制和粘貼。間互相復制和粘貼。v編輯工程組件的步驟編輯工程組件的步驟在 vba ide 的“工程”窗口中,選擇要編輯的組件。 在“工程”窗口中,選擇“查看代碼”按鈕打開“代碼”窗口。 在“工程”窗口中,選擇“查看對象”按鈕打開“用戶窗體”窗口和關(guān)聯(lián)的工具箱。 v使用“代碼”窗口“代碼”窗口包含兩個下拉列表、一個拆分欄、一個邊界指示欄、一個完全視圖圖標和一個過程視圖圖標。 v使用使用“用戶窗體用戶窗體”窗口窗口通過“用戶窗體”窗口,可以在工程中創(chuàng)建自定義對話框 自動擁有“最大化”、“最小化”和“關(guān)閉”按鈕添加控件添加控件代碼該控件關(guān)聯(lián)的代碼。進行初步練習v上面已經(jīng)學習了 autocad vba
18、 編程的基本知識,接下來讓我們練習創(chuàng)建簡單的“hello world”。在此練習中,將會創(chuàng)建新的 autocad 圖形,并向該圖形中添加一行文字,然后保存圖形,全部操作均通過 vba 來完成?!癶ello worldhello world”例程例程 1.從 autocad 命令行輸入以下命令來打開 vba ide: 1.命令:vbaide 2.從 vba ide 的“查看”菜單中選擇“代碼”選項打開“代碼”窗口。 3.從 vba ide 的“插入”菜單中選擇“過程”選項,在工程中創(chuàng)建新過程。 4.當提示輸入過程信息時,輸入名稱,例如 helloworld。請確保選定的“類型”是 sub,選定的
19、“作用域”是 public。 5.選擇“確定”。 6.6.在行在行 public sub helloworld() public sub helloworld() 和行和行 end sub end sub 之間輸之間輸入以下代碼。入以下代碼。 thisdrawing.application.documents.add (用于打開新圖形)7.7.緊接代碼之后輸入以下代碼(用于創(chuàng)建字符串和定義其緊接代碼之后輸入以下代碼(用于創(chuàng)建字符串和定義其插入位置)。插入位置)。 dim inspoint(0 to 2) as double 聲明插入點dim textheight as double 聲明文字高
20、度dim textstr as string 聲明字符串dim textobj as acadtext 聲明文字對象inspoint(0) = 2 設(shè)置插入點的 x 坐標inspoint(1) = 4 設(shè)置插入點的 y 坐標inspoint(2) = 0 設(shè)置插入點的 z 坐標textheight = 1 強文字高度設(shè)置為 1.0textstr = hello world! 設(shè)置字符串創(chuàng)建 text 對象set textobj = thisdrawing.modelspace.addtext _ (textstr, inspoint, textheight)8.8.緊接在步驟緊接在步驟 7 7
21、 中的輸入代碼之后輸入以下中的輸入代碼之后輸入以下代碼(用于保存圖形)。代碼(用于保存圖形)。 9.9.thisdrawing.saveas(hello.dwg) thisdrawing.saveas(hello.dwg) 從從 vba vba ide ide 的的“運行運行”菜單中選擇菜單中選擇“運行子程序或運行子程序或用戶窗體用戶窗體”選項來運行程序。選項來運行程序。 10.10.當程序運行完時,當程序運行完時,autocad autocad 應用程序?qū)⒅糜趹贸绦驅(qū)⒅糜谧钋?。此時應該可以在圖形中看到文字最前。此時應該可以在圖形中看到文字“hello world!hello world!”
22、。圖形的名稱應為。圖形的名稱應為 hello.dwghello.dwg。 add vretval = object.add(name) vobject:the collection to add the new object to. dictionaries, dimstyles, documents, groups; layers, layouts, linetypes, popupmenus, registeredapplications, selectionsets, textstyles, toolbars, views, viewportsvname:the name of the
23、object to add to the collection. string; input-only; optional for the documents collection.vretval:the newly added object. dictionary, dimstyle, document, group, layer, layout, linetype, popupmenu, registeredapp, selectionset, textstyle, toolbar, view, viewportaddlayeru this example creates a new la
24、yer called new_layer udim layerobj as acadlayeru add the layer to the layers collection uset layerobj = thisdrawing.layers.add(new_layer) u make the new layer the active layer for the drawinguthisdrawing.activelayer = layerobj u display the status of the new layer umsgbox layero & has bee
25、n added. & vbcrlf & _ layeron status: & layerobj.layeron & vbcrlf & _ freeze status: & layerobj.freeze & vbcrlf & _ lock status: & layerobj.lock & vbcrlf & _ color: & layerobj.color, , add example addtextstyle create a textstyle named new_textstyle in
26、current drawing dim txtstyleobj as acadtextstyle add the textstyle to the textstyles collection set txtstyleobj = thisdrawing.textstyles.add(new_textstyle) msgbox txtstyleo & has been added. & vbcrlf & _ height: & txtstyleobj.height & vbcrlf & _ width: & txtstyleob
27、j.width, , add example return 創(chuàng)建和修改文字樣式 新的文字會從當前的文字樣式繼承高度、寬度比例、傾斜角度和文字生成等特性。要創(chuàng)建文字樣式,請使用 add 方法創(chuàng)建新的 textstyle 對象并將其添加到 textstyles 集合中。add 方法需要輸入 textstyle 名稱。文字樣式創(chuàng)建之后,用戶不能通過 autocad activex automation 修改其名稱。 樣式名可以包含字母、數(shù)字和特殊字符,例如美元符 ($)、下劃線 (_) 和連字符 (-)。autocad 將字符轉(zhuǎn)換為大寫字符。如果用戶不輸入樣式名,autocad 自動將其命名為 st
28、ylen,其中 n 是從 1 開始的數(shù)字。每個新樣式會加 1 來顯示。 用戶可以通過修改 textstyle 對象的特性來修改現(xiàn)有的樣式,也可以更新該樣式的現(xiàn)有文字以反映更改。請使用以下特性來修改 textstyle 對象: fontfile 指定與字體(字符樣式)關(guān)聯(lián)的文件。 bigfontfile 指定適用于非 ascii 字符集的特殊形定義文件。 height 指定字符高度。 width 指定字符的擴展或壓縮obliqueangle 指定字符的傾斜度。 textgenerationflag 指定反向文字、倒置文字或兩者。 如果用戶修改現(xiàn)有樣式的字體或方向,所有使用該樣式的文字均被修改為使
29、用新的字體或方向。更改文字的高度、寬度比例和傾斜角不會改變現(xiàn)有的文字,但會應用到以后創(chuàng)建的文字對象上。 注意 必須調(diào)用 regen 或 update 方法,才能看到對上述特性所做更改的效果。load methoduobject.load linetypename, filename uobjectulinetypesthe object or objects this method applies to. ulinetypenameustring; input-onlythe name of the linetype to load. ufilenameustring; input-onlyt
30、he name of the file the linetype is in. linetype examplesub example_linetype() this example searches for the linetype dashdot. if it is not found, it is added from the acad.lin file. then a line is created and changed to the dashdot linetype. search the linetypes collection for the dashdot linetype.
31、 dim entry as acadlinetype dim found as boolean found = false for each entry in thisdrawing.linetypes if strcomp(, dashdot, 1) = 0 then found = true exit for end if next if not (found) then thisdrawing.linetypes.load dashdot, acad.lin create the line dim lineobj as acadline dim startpoint(
32、0 to 2) as double dim endpoint(0 to 2) as double startpoint(0) = 1#: startpoint(1) = 1#: startpoint(2) = 0# endpoint(0) = 4#: endpoint(1) = 4#: endpoint(2) = 0# set lineobj = thisdrawing.modelspace.addline(startpoint, endpoint) change the linetype of the line lineobj.linetype = dashdot zoomall end s
33、ublineweight propertyspecifies the lineweight of an individual object or the default lineweight for the drawing.signatureobject.lineweight objectall drawing objects; databasepreferences, layeraclnwtbylayer aclnwtbyblock aclnwtbylwdefault aclnwt000 aclnwt005 aclnwt009 aclnwt013 aclnwt015 aclnwt018 ac
34、lnwt020 aclnwt025 aclnwt030 aclnwt035 aclnwt040 aclnwt050 aclnwt053 aclnwt060 aclnwt070 aclnwt080 aclnwt090 aclnwt100 aclnwt106 aclnwt120 aclnwt140 aclnwt158 aclnwt200 aclnwt211 addtextvcreates a single line of text.vretval = object.addtext(textstring, insertionpoint, height) vobject:the object or o
35、bjects this method applies to. modelspace collection, paperspace collection, blockvtextstring:the actual text to be displayed. string; input-onlyvinsertionpoint:the 3d wcs coordinates on the drawing where the text is placed. variant (three-element array of doubles); input-onlyvheight:the height of t
36、he text. must be a positive number. double; input-onlyvretval:the newly created text object. text objectsub example_addtext() this example creates a text object in model space. dim textobj as acadtext dim textstring as string dim insertionpoint(0 to 2) as double dim height as double define the text
37、object textstring = hello, world. insertionpoint(0) = 2: insertionpoint(1) = 2: insertionpoint(2) = 0height = 0.5 create the text object in model space set textobj = thisdrawing.modelspace.addtext(textstring, insertionpoint, height) zoomall end subgetboundingboxvgets two points of a box enclosing th
38、e specified object. vobject.getboundingbox minpoint, maxpoint vobject:the object or objects this method applies to. all drawing objects, attributereferencevminpoint:the 3d wcs coordinates specifying the minimum point of the objects bounding box. variant (three-element array of doubles); output-onlyv
39、maxpoint:the 3d wcs coordinates specifying the maximum point of the objects bounding boxvariant (three-element array of doubles); output-onlysub example_getboundingbox() this example creates a line in model space. it then finds the bounding box for the line and displays the corners of the box. dim s
40、tartpoint(0 to 2) as double dim endpoint(0 to 2) as double dim lineobj as acadline create the line object in model space startpoint(0) = 2#: startpoint(1) = 2#: startpoint(2) = 0# endpoint(0) = 4#: endpoint(1) = 4#: endpoint(2) = 0# set lineobj = thisdrawing.modelspace.addline(startpoint, endpoint)
41、zoomalldim minext as variant dim maxext as variant return the bounding box for the line and return the minimum and maximum extents of the box in the minext and maxext variables. lineobj.getboundingbox minext, maxext print the min and max extents msgbox the extents of the bounding box for the line ar
42、e: & vbcrlf _ & min extent: & minext(0) & , & minext(1) & , & minext(2) _ & vbcrlf & max extent: & maxext(0) & , & maxext(1) & , & maxext(2), vbinformation, getboundingbox example end subgetpointvgets the point selected in autocad.vretval = get
43、point(point, prompt) vobject:the object or objects this method applies to. utilityvpoint:the 3d wcs coordinates specifying the relative base point. variant (three-element array of doubles); input-only; optionalvprompt:the text used to prompt the user for input. variant (string); input-only; optional
44、vretval:the 3d wcs coordinates of the point the autocad user has selected. variant (three-element array of doubles)sub example_getpoint() this example returns a point entered by the user. dim returnpnt as variant return a point using a prompt returnpnt = thisdrawing.utility.getpoint(, enter a point:
45、 ) msgbox the wcs of the point is: & returnpnt(0) & , & returnpnt(1) & , & returnpnt(2) & vbcrlf & _ (enter the next value without prompting.), , getpoint example return a point, no prompt returnpnt = thisdrawing.utility.getpoint msgbox the wcs of the point is: & retu
46、rnpnt(0) & , & returnpnt(1) & , & returnpnt(2), , getpoint example return a point using a base point and a prompt dim basepnt(0 to 2) as double basepnt(0) = 2#: basepnt(1) = 2#: basepnt(2) = 0# returnpnt = thisdrawing.utility.getpoint(basepnt, enter a point: )msgbox the wcs of the po
47、int is: & returnpnt(0) & , & returnpnt(1) & , & returnpnt(2) create a line from the base point and the last point entered dim lineobj as acadline set lineobj = thisdrawing.modelspace.addline(basepnt, returnpnt) zoomall end subv用vba實現(xiàn)如下標注形式(采礦工程畢業(yè)設(shè)計繪圖標準)v思路:v先繪制文字 addtextv利用getbou
48、ndingbox獲得文字的minext,maxextv根據(jù)minext,maxext確定線段的startpointv根據(jù)minext,maxext確定線段的endpointv在文字下方劃線vdim textobj as acadtextvdim textstring as stringvdim startpoint(0 to 2) as doublevdim endpoint(0 to 2) as doublevdim textheight as doublevdim returnpnt1 as variant 申明端點坐標vme.hidevwith thisdrawing.utilityv
49、returnpnt1 = .getpoint(, 請輸入標注漢字的位置: ) 獲取文本標注起點坐標vend withv define the text objectvtextstring = textbox1.textvdim width as doublev create the text object in model spacevtextheight = 3vset textobj = thisdrawing.modelspace.addtext(textstring, returnpnt1, textheight)vtextobj.updatevdim minext as varian
50、tvdim maxext as variantv 獲得文字的右下角坐標(minext)和左上角坐標( maxext )v textobj.getboundingbox minext, maxextv 在文字下面劃線vstartpoint(0) = minext(0) 1vstartpoint(1) = minext(1) 1vstartpoint(2) = 0vendpoint(0) = maxext(0) + 1vendpoint(1) = minext(1) 1vendpoint(2) = 0vset lineobj = thisdrawing.modelspace.addline(sta
51、rtpoint, endpoint)vset lineobj = thisdrawing.modelspace.addline(minext, maxext)v用vba實現(xiàn)如下圖框繪制(采礦工程畢業(yè)設(shè)計繪圖標準:a0圖紙)alignmentvobject:the object or objects this property applies to. attribute, attributeref, textvalignment:acalignment enum; read-writevacalignmentleft acalignmentcenter acalignmentright vaca
52、lignmentaligned acalignmentmiddle acalignmentfit vacalignmenttopleft acalignmenttopcenter acalignmenttopright vacalignmentmiddleleft acalignmentmiddlecenter vacalignmentmiddleright acalignmentbottomleft vacalignmentbottomcenter acalignmentbottomright vremarks vtext aligned to acalignmentleft uses th
53、e insertionpoint property to position the text. vtext aligned to acalignmentaligned, or acalignmentfit uses both the insertionpoint and textalignmentpoint properties to position the text. vtext aligned to any other position uses the textalignmentpoint property to position the text. saveas methodvsav
54、es the document or menu group to a specified file. vobject.saveas filename, filetype , securityparams vobject: document, menugroupvfilename: string; input-onlythe full path and file name, or valid url address, for the file. the active document or menu group takes on the new name. vacsaveastype enum;
55、 input-only; optional for document objectsvac2000_dwg autocad 2000 dwg (*.dwg)vac2000_dxf autocad 2000 dxf (*.dxf)vac2000_template autocad 2000 drawing template file (*.dwt)vac2004_dwg autocad 2004 dwg (*.dwg)vac2004_dxf autocad 2004 dxf (*.dxf)vac2004_template autocad 2004 drawing template file (*.
56、dwt)vacnative a synonym for the latest drawing release. in this release, this value equals ac2004_dwg.vremarks vthe default file type for documents is ac2004_dwg. the following values are obsolete: acr14_dwg and acr14_dxf. vdocuments can be saved only as files with the extensions indicated above. to
57、 save a document in a different file type, use the export method. sendcommand methodsends a command string from a vb or vba application to the document for processing. signature object.sendcommand(command) objectdocumentthe object or objects this method applies to. commandstring; input-onlythe comma
58、nd to send to the document. use a space or the ascii carriage return character (vbcr) at the end of the command string to end the command; this is equivalent to pressing enter on the keyboard. this method processes any autocad command-line functionthis method is generally synchronous. however, if th
59、e command sent with this method requires any user interaction (such as picking a point on the screen) then this method will return as soon as the user input begins. the command will then continue to be processed asynchronously. when this method is called from an event handler it is processed asynchr
60、onously. you should never use this method to issue a command for which there is an activex method available. for example, do not use sendcommand vbaload . instead, use the loaddvb method. 將命令發(fā)送到 autocad 命令行 下面的樣例創(chuàng)建一個圓心為 (2, 2, 0)、半徑為 4 的圓,然后將圖形縮放至圖形中的所有幾何圖形都可見。注意,字符串末尾有一個空格,表示最后按 enter 鍵開始執(zhí)行命令。 sub ch3_sendacommandtoautocad() thisdrawing.sendcommand _circle 2,2,0 4 thisdrawing.sendcommand _zoom a “end sub將 vba 代碼轉(zhuǎn)換為 vb 要更新代碼樣例以在要更新代碼樣例以在 vb 中使用,必須先引用中使用,必須先引用 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 澳門(2024年-2025年小學六年級語文)統(tǒng)編版隨堂測試(下學期)試卷及答案
- 高速公路項目計劃書
- xx市算力產(chǎn)業(yè)園項目可行性研究報告
- 二零二五年度國際貿(mào)易反擔保合同范本3篇
- 信息技術(shù)項目進度安排
- 二零二五年度學生宿舍床鋪配置合同3篇
- 再生利用建設(shè)項目可行性研究報告申請立項備案
- 中科院2022年物理化學(甲)考研真題(含答案)
- 廣東省汕尾市2023-2024學年高一上學期期末教學質(zhì)量監(jiān)測化學試卷(含答案解析)
- 《熱電阻溫度傳感器》課件
- 抖音酒店直播可行性方案
- 信訪業(yè)務(wù)培訓班課件
- 物資清運方案及
- 熱穩(wěn)定校驗計算書
- 北京市房山區(qū)2023-2024學年三年級上學期期末數(shù)學試卷
- 婦產(chǎn)科課件-子宮內(nèi)膜息肉臨床診療路徑(2022版)解讀
- 人教版六年級數(shù)學上冊典型例題系列之第三單元分數(shù)除法應用題部分拓展篇(原卷版)
- 課本含注音的注釋匯總 統(tǒng)編版語文八年級上冊
評論
0/150
提交評論