用VB對(duì)AutoCAD進(jìn)行二次開(kāi)發(fā)_第1頁(yè)
用VB對(duì)AutoCAD進(jìn)行二次開(kāi)發(fā)_第2頁(yè)
用VB對(duì)AutoCAD進(jìn)行二次開(kāi)發(fā)_第3頁(yè)
用VB對(duì)AutoCAD進(jìn)行二次開(kāi)發(fā)_第4頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

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

文檔簡(jiǎn)介

1、用VB對(duì)AutoCAD進(jìn)行二次開(kāi)發(fā)|用VB對(duì)AutoCAD進(jìn)行二次開(kāi)發(fā)A utoCAD一直是CADT場(chǎng)中的主流產(chǎn)品。隨著 AutoCAD的日益普及,在其上進(jìn)行二次開(kāi) 發(fā)的工具也不斷更新。從早期的Auto Lisp、ADS DCL到現(xiàn)在流行的 Object ARXActiveX Automation、Visual Lisp ,均可十分方便地對(duì) AutoCAD進(jìn)行二次開(kāi)發(fā)。本文主要討論 關(guān)于運(yùn)用 Visual Basic 對(duì)AutoCAD基于ActiveX Automation的二次開(kāi)發(fā)技術(shù)。選用ActiveX 有兩個(gè)原因,一是因?yàn)閂isual Basic 的普及性與易用性,二是采用這種方法進(jìn)行二

2、次開(kāi)發(fā)可方便地實(shí)現(xiàn)與其它圖形軟件的接口,如與 Solid Works實(shí)現(xiàn)實(shí)體造型與二 維繪圖的結(jié)合,以及根據(jù)用戶(hù)的特殊需要開(kāi)發(fā)出一定功能的軟件。2、 ActiveX Automation 技術(shù)AutoCAD中的ActiveX Automation 是微軟公司 ActiveX 規(guī)范的具體應(yīng)用。它通過(guò)基于 ActiveX 的自動(dòng)化對(duì)象,為其他應(yīng)用程序提供了訪問(wèn)AutoCAD 內(nèi)部功能的方法,是AutoCAD最新的開(kāi)發(fā)接口。在運(yùn)行時(shí),AutoCAD與其他應(yīng)用程序之間的關(guān)系是服務(wù)器與客戶(hù)的關(guān)系,開(kāi)發(fā)人員使用支持ActiveX 規(guī)范的編程語(yǔ)言( 如 VB、 Dephi 等 ) 能通過(guò)訪問(wèn)AutoCAD的

3、對(duì)象模型,把AutoCAD的強(qiáng)大功能集成到應(yīng)用程序中.AutoCAD的對(duì)象模型是 一種樹(shù)型結(jié)構(gòu)模型,根為 "AutoCAD Application" , AutoCAD中的所有對(duì)象都是 AutoCAD Application的子對(duì)象。圖1所示為AutoCAD對(duì)象模型的層次結(jié)構(gòu)樹(shù),其中父對(duì)象與子對(duì)象之間的關(guān)系并不是對(duì)象繼承關(guān)系,而是包含關(guān)系。圖 1 AutoCAD 中 ActiveX 對(duì)象的總結(jié)構(gòu)圖3、 ActiveX Automation 的使用方法1. Application 對(duì)象如果在計(jì)算機(jī)系統(tǒng)上安裝了AutoCAD,則Windows會(huì)自動(dòng)將其所有的信息注冊(cè)到系統(tǒng)注冊(cè)表

4、里。那么在啟動(dòng)Visual Basic 后,用戶(hù)可以象調(diào)用VB 自己的對(duì)象一樣調(diào)用AutoCAD所提供的 ActiveX。在編程、調(diào)試或運(yùn)行時(shí)至少應(yīng)該有一個(gè)AutoCAD副本在運(yùn)行??梢酝ㄟ^(guò)以下的代碼創(chuàng)建AutoCAD對(duì)象。Dim AcadApp as Object 定義一個(gè)對(duì)象 On Error Resume NextSet AcadApp =GetObject(,"AutoCAD.Application") If Err Then '如果沒(méi)有一個(gè) AutoCAD副本在運(yùn)行 Err.ClearSet AcadApp =CreateObject("Auto

5、CAD.Application")AcadApp.Visable =True '啟動(dòng)一個(gè) AutoCAD副本并設(shè)為可見(jiàn) If Err Then MsgBox Err.Description 如果失敗,給出錯(cuò)誤提示 Exit SubEnd If End If 2. Preferences 與 Document對(duì)象 與AutoCAD中的Preferences 對(duì)話框的作用相同, 通過(guò)Preferences 對(duì)象可以讀取 或設(shè)置AutoCAD的一些基本設(shè)置。Preferences對(duì)象通過(guò)Application 的Preferences 屬性返回。Dim AcadPref as Ob

6、jectSet AcadPref = AcadApp.Preferences比如,用戶(hù)可通過(guò)Preferences 對(duì)象進(jìn)行如下的設(shè)置AcadPref.Cursorsize =100AcadPref.DisplayScreenMenu =acTrueAcadPref.DisplayScrollBars =Check1.valueDocument對(duì)象表示AutoCAD中中當(dāng)前打開(kāi)的文檔,對(duì)AutoCAD中的任何其它操作都 需用到Document對(duì)象,該對(duì)象可以通過(guò) ActiveDocument屬性返回。Dim AcadDoc as ObjectSet AcadDoc = AcadApp.Acti

7、veDocumentAutoDesk公司使用了集合的概念。在Document對(duì)象中有14個(gè)集合,具體如圖 1所示。與VB 中的集合一樣,這些集合都支持Add、 Item 方法與 Count 屬性。例如Add方法可以向該集合中添加一個(gè)對(duì)象,Item(X)可以的得到該集合中的第 X個(gè)對(duì)象,Count 屬性可以得到該集合中的對(duì)象的個(gè)數(shù)。在一個(gè)AutoCAD副本運(yùn)行時(shí),只能同時(shí)打開(kāi)一個(gè)Documento可以調(diào)用Document的New Save方法以及Saved屬性來(lái)打開(kāi)或保存一個(gè) AutoCAD文檔。If Not AcadDoc.Saved ThenAcadDoc.SaveElseSet AcadD

8、oc =AcadDoc.New("acad")End If3. 創(chuàng)建、查詢(xún)與修改 AutoCAD圖形對(duì)象在創(chuàng)建AutoCAD圖形對(duì)象之前,首先必須定義并創(chuàng)建 ModelSpace與PaperSpace集 合對(duì)象。這兩個(gè)對(duì)象可通過(guò) Document對(duì)象的 ModelSpace屬性與PaperSpace屬性返回。Dim moSpace as Object,paSpace as ObjectSet moSpace = AcadDoc.ModelSpaceSet paSpace = AcadDoc.PaperSpace所有關(guān)于圖形對(duì)象操作的方法與屬性都包含在這兩個(gè)對(duì)象中。創(chuàng)建文本對(duì)

9、象:Dim moSpace as ObjectSet moSpace =AcadDoc.ModelSpaceDim Pnt(0 to 2) as Double '定義一個(gè) AutoCAD三維點(diǎn)Dim TextH as Double 定義字符高度Dim Textstr as String 定義字符變量Dim TextObj as Object '定義一個(gè) AutoCAD文本對(duì)象Pnt(0) =2:Pnt(1) =4: Pnt(2) =0 初始化坐標(biāo)TextH =1TexrStr = “ This is a test ”Set TextObj=moSpace.AddText(Tex

10、tStr,Pnt,TextH) 創(chuàng)建文本對(duì)象查詢(xún)與修改圖形對(duì)象有時(shí)用戶(hù)不但要?jiǎng)?chuàng)建圖形對(duì)象,更多的情況是修改或控制已存在的對(duì)象,這就需要對(duì)已創(chuàng)建的對(duì)象進(jìn)行查詢(xún),從而得到所要操作的對(duì)象??梢酝ㄟ^(guò)屬性來(lái)得到圖形對(duì)象的個(gè)數(shù)。Dim noMSOBJ as String,noPSOBJ as StringNoMSOBJ=Str(moSpace.Count)NoPSOBJ=Str(paSpace.Count)MsgBox "Object:Mspace="& noMSOBJ & "Pspace="& noPSOBJ用戶(hù)也可以通過(guò)For.Loop

11、語(yǔ)句來(lái)遍歷所有的圖形對(duì)象或是通過(guò)方法來(lái)得到某個(gè)具體的對(duì)象。下面的代碼說(shuō)明了如何來(lái)修改當(dāng)前中的對(duì)象,如果對(duì)象為一直線,則修改其顏色為紅色,否則不做任何改動(dòng)。Dim ent as objectFor each ent in mospaceIf ent.entityname= "acdline" thenEnt.color=acredEnt.updateEnd IfNext需要注意:如果對(duì)圖形對(duì)象做了改動(dòng),則需要調(diào)用Update方法在AutoCAD窗口中重畫(huà)該對(duì)象。同樣,可以得到Model Space 中最后生成的圖形對(duì)象。Dim ent as objectSet ent = m

12、oSpace.Item(moSpace.Count-1)4. 非圖形對(duì)象除了 ModelSpace與PaperSpace集合,Document對(duì)象中另外12個(gè)集合中的對(duì)象都 是非圖形對(duì)象,如 Layers集合包含了 AutoCAD當(dāng)前文檔中所有的層,而 Linetypes和 TextStyles 則分別為線型對(duì)象與字符型對(duì)象的集合。創(chuàng)建層可以調(diào)用Layers集合的Add方法創(chuàng)建層。以下代碼創(chuàng)建一個(gè)名稱(chēng)為L(zhǎng)AYER1顏色為洋紅色的層。Dim layerobj as objectSet layerobj =acadDoc.Layers.Add("LAYER1")Layerobj

13、.Colors=acMagenta視口以下的代碼使用 ActiveSpace屬性設(shè)置一個(gè)活動(dòng)的 Space,然后調(diào)用 Viewports集 合的Add方法創(chuàng)建一個(gè)名為"NEWVIEWPORT1視口。當(dāng)視口建立后, Split方法可使原 視口與新視口呈上下排列,最后,ActiveViewport 屬性使新視口成為活動(dòng)視口。Dim vport as objectAcadDoc.ActiveSpace=acModelSpaceSet vport=AcadDoc.Viewports.Add("NEW_VIEWPORT")Vport.Split acViewport2Ver

14、ticalSet AcadDoc.ActiveViewport=vport5. 用戶(hù)輸入Document對(duì)象中還包含有一個(gè)很重要的子對(duì)象Utility , Utility對(duì)象提供了一些其它的實(shí)用功能,如用戶(hù)輸入控制(user-input) 。user-input 方法可以在AutoCAD的命 令提示行中提示用戶(hù)輸入,并顯示相應(yīng)的輸入數(shù)據(jù)類(lèi)型。這種類(lèi)型的輸入對(duì)于屏幕坐標(biāo)系,實(shí)體選擇,短字符與數(shù)字的輸入有著極為重要的應(yīng)用。以下的代碼定義了Utility 對(duì)象。Dim AcadUtil as objectSet AcadUtil =AcadDoc.Utility每個(gè)user-input 方法都在AutoCAD的命令行里給出了適當(dāng)?shù)妮斎胩崾静⒎祷叵鄳?yīng)的數(shù)據(jù)類(lèi)型。如: GetString 返回一個(gè)字符串,GetPoint 返回一個(gè)點(diǎn)(三個(gè)雙精度數(shù)值)。也可以調(diào)用InitializeUserInput 方法進(jìn)行更高級(jí)的輸入設(shè)置。用戶(hù)可以定義一個(gè)變量:NL=Chr(13)+Chr(10) , 將這個(gè)變量用于輸入提示的開(kāi)始處。四、結(jié)束語(yǔ)AutoCAD 的 ActiveX Automation 技術(shù)的出現(xiàn), 標(biāo)志著 AutoCAD 的二次開(kāi)發(fā)技術(shù)取得了歷史性轉(zhuǎn)折。首

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論