VBA開發(fā)AUTOCAD實現(xiàn)參數(shù)化繪圖_第1頁
VBA開發(fā)AUTOCAD實現(xiàn)參數(shù)化繪圖_第2頁
VBA開發(fā)AUTOCAD實現(xiàn)參數(shù)化繪圖_第3頁
VBA開發(fā)AUTOCAD實現(xiàn)參數(shù)化繪圖_第4頁
VBA開發(fā)AUTOCAD實現(xiàn)參數(shù)化繪圖_第5頁
已閱讀5頁,還剩9頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、.:.; VBA開發(fā)AUTOCAD實現(xiàn)參數(shù)化繪圖 王假設(shè)慧 Realizing The Parameter-Drawing taking the VBA and AUTOCAD(.山西大學(xué)工程學(xué)院,山西省 太原,) Wang Ruo HuiEngineering Colledge of SHANXI University, Taiyuan )摘要: 引見了采用VBAVisual Basic for Application進(jìn)展AutoCAD的二次開發(fā),運(yùn)用AutoCAD ActiveX Automation接口技術(shù)訪問AutoCAD對象,采用ADO實現(xiàn)AUTOCAD與Microsoft Acce

2、ss的數(shù)據(jù)通訊,實現(xiàn)程序參數(shù)化繪圖的根本思緒及程序設(shè)計流程. 關(guān)鍵詞:VBA AutoCAD ActiveX Automation ADO 參數(shù)化繪圖Abstract: Taking the ActiveX Automation of VBA and AutoCAD to access the AutoCAD drawings, and the ADO to make the data communication between the AUTOCADand ACCESS , the parameter-drawing can be well realized in the way what

3、is described in the article .Key words:VBA AutoCAD ActiveX Automation ADOthe parameter-drawing 引言:傳統(tǒng)的人機(jī)交互式繪圖普通需求用準(zhǔn)確的尺寸值定義幾何元素,輸入的每一條線都必需有確定的位置,圖形一旦建立,即使構(gòu)造類似但想改動圖形大小尺寸,只能對圖形進(jìn)展編輯。而在工程設(shè)計中,一方面,進(jìn)展新產(chǎn)品設(shè)計時不可防止地需求多次反復(fù)修正,需求進(jìn)展多方面的綜合協(xié)調(diào)和優(yōu)化;另一方面,許多的專業(yè)圖紙設(shè)計中,很多圖形構(gòu)造具有一定的類似性,往往只是尺寸的大小不同,其圖形隨尺寸參數(shù)的變化而相應(yīng)變化。因此,希望有一種比交互式繪

4、圖更方便、更高效、更適宜構(gòu)造類似圖形繪制的方法.為理處理這個問題,他們可研制出一種繪圖軟件,圖中尺寸參數(shù)經(jīng)過交互方式輸入,隨后經(jīng)過運(yùn)轉(zhuǎn)有關(guān)程序,確定一切的繪圖信息,自動繪出圖形,這種任務(wù)方式通常稱為程序參數(shù)化繪圖.這就是參數(shù)化繪圖要處理的問題,同時它也是CAD系統(tǒng)很重要的一個環(huán)節(jié). 程序參數(shù)化繪圖的本質(zhì)程序參數(shù)化繪圖主要適用于圖形構(gòu)造方式根本固定而構(gòu)造尺寸參數(shù)變化的圖形。程序參數(shù)化繪圖的本質(zhì),就是將圖形信息記錄在程序中。圖形的描畫通??煞譃椋簣D形的拓?fù)潢P(guān)系、圖形的幾何參數(shù)以及這些幾何參數(shù)與圖形構(gòu)造參數(shù)之間的聯(lián)絡(luò)。通常用一組變量記錄圖形的幾何參數(shù),用一系列的賦值語句表達(dá)幾何參數(shù)與構(gòu)造參數(shù)之間的關(guān)

5、系,然后用一系列的調(diào)用語句來描畫圖形的拓?fù)潢P(guān)系。如下圖圖形的幾何參數(shù)是四個點的坐標(biāo)x,y,x,y,x,y和x,y,構(gòu)造參數(shù)是兩個尺寸a和b。這些參數(shù)之間的關(guān)系為:x=x;y=y;x=x;y=y;x=x+a;y=y+b。 x,y x,y b x,y a x,y 圖 圖形的描畫. 程序參數(shù)化繪圖的實現(xiàn)途徑 為了實現(xiàn)參數(shù)化繪圖,需求建立一個計算機(jī)圖形軟件系統(tǒng)運(yùn)用這個系統(tǒng)可以簡化圖形設(shè)計運(yùn)用程序的編制,并能方便地運(yùn)用計算機(jī)程序?qū)崿F(xiàn)圖形地輸入和輸出建立一個圖形系統(tǒng)可以有三種方式:()設(shè)計公用圖形言語()修正高級程序設(shè)計言語,使其具有圖形處置的功能()建立圖形設(shè)計程序包前兩種方式都需求用低級或高級言語重寫

6、一個編譯器普通來說,修正或者重寫一個編譯器的任務(wù)量比較大,而且圖形設(shè)計過程并非簡單的數(shù)據(jù)處置過程,還包括許多文件構(gòu)造和存貯構(gòu)造的問題,從而使上述任務(wù)的復(fù)雜性大大添加有些繪圖軟件配有內(nèi)部公用繪圖言語,如AutoCAD配有AutoLISP編程言語,DDM/DIMENSION圖形軟件配有DAL繪圖言語等,利用這些言語用戶可以開發(fā)參數(shù)化繪圖軟件但是這些言語的數(shù)組,循環(huán),函數(shù),邏輯關(guān)系等功能普通較差,不宜作大量的計算任務(wù),編程也不太方便第三種方式即建立圖形設(shè)計程序包,其根本思想是選擇一種適宜的高級程序設(shè)計言語作為主言語,在此言語中擴(kuò)展一系列的過程調(diào)用,以實現(xiàn)圖形設(shè)計任務(wù)在這種情況下,用戶編寫的圖形描畫程

7、序由兩部分組成:一是主言語語句,另一個是主言語中擴(kuò)展了的過程調(diào)用語句在擴(kuò)展某種高級言語使其具有圖形處置功能時,最好能利用已有的較成熟的圖形軟件. 程序參數(shù)化繪圖的技術(shù)道路要實現(xiàn)程序參數(shù)化繪圖程序的編制, 本文采用AutoCAD為繪圖支撐軟件,采用VBAVisual Basic for Application進(jìn)展AutoCAD的二次開發(fā),運(yùn)用AutoCAD實現(xiàn)參數(shù)化繪制工程圖紙. . AUTOCAD簡介AutoCAD是當(dāng)今最流行的二維繪圖軟件, AutoCAD有強(qiáng)大的二維功能,如繪圖、編輯、剖面線和圖案繪制、尺寸標(biāo)注以及二次開發(fā)等功能,同時有部分三維功能。雖然AutoCAD是一個非常好的通用計算

8、機(jī)輔助繪圖和設(shè)計軟件系統(tǒng),但每一行業(yè)和專業(yè)都有自的行業(yè)和專業(yè)規(guī)范,許多單位也有本人的技術(shù)規(guī)格和企業(yè)規(guī)范,每個設(shè)計工程師和繪圖員更有各自獨特的任務(wù)方式和習(xí)慣。因此AutoCAD不能夠完全滿足每個用戶的詳細(xì)而特定的要求。對AutoCAD進(jìn)展定制和二次開發(fā),能使AutoCAD可以更加符合用戶的需求,更方便、更規(guī)范、更專業(yè)的實現(xiàn)設(shè)計和繪圖中的運(yùn)用。AutoCAD提供的開放式體系構(gòu)造正是為運(yùn)用戶可以根據(jù)各自的需求來改良和擴(kuò)展AutoCAD的許多功能而著想的AutoCAD提供AutoLISP、ADS、ARX、VBA作為二次開發(fā)的工具。在許多實踐運(yùn)用領(lǐng)域如機(jī)械、建筑、電子中,一些軟件開發(fā)商在AutoCAD的

9、根底上已開發(fā)出許多符合實踐運(yùn)用的軟件,很好的實現(xiàn)了參數(shù)化繪制工程圖紙. VBA開發(fā)AutoCAD采用面向?qū)ο蟮某绦蛟O(shè)計方法, 運(yùn)用Visual Basic在AutoCAD 上用VBA技術(shù)進(jìn)展二次開發(fā), 可以較好地實現(xiàn)系統(tǒng)程序參數(shù)化繪圖。VBA是經(jīng)過AutoCAD ActiveX Automation接口來建立和AutoCAD對象間的聯(lián)絡(luò)。ActiveX是建立在COM對象模型之上的一個規(guī)范通訊協(xié)議,它允許對象之間經(jīng)過一定的接口相互通訊。而AutoCAD ActiveX提供在AutoCAD外控制編程的機(jī)制,經(jīng)過運(yùn)用AutoCAD對象,實現(xiàn)控制AutoCAD。 在 AutoCAD 中實現(xiàn) Activ

10、eX 接口有兩大優(yōu)點: 更多的編程環(huán)境可以編程訪問 AutoCAD 圖形。在 ActiveX Automation 出現(xiàn)以前,開發(fā)人員只能運(yùn)用 AutoLISP或 C+ 接口。與其他 Windows 運(yùn)用程序如 Microsoft Excel 和ACCESS共享數(shù)據(jù)變得更加容易。對象是一切 ActiveX 運(yùn)用程序的主要構(gòu)造塊。每一個顯示的對象均準(zhǔn)確代表一個 AutoCAD 組件。AutoCAD ActiveX 接口中有許多不同類型的對象。例如:直線、圓弧、文字和標(biāo)注等圖形對象都是對象。 線型與標(biāo)注款式等款式設(shè)置都是對象。圖層、編組和塊等組織構(gòu)造都是對象。視圖與視口等圖形顯示都是對象。甚至圖形

11、、AutoCAD 運(yùn)用程序本身也是對象。AutoCAD對象是經(jīng)過分層方式來組織的,運(yùn)用程序?qū)ο鬄楦鶎ο?。這種分層構(gòu)造的視圖被歸結(jié)為對象模型。對象模型提供了用戶訪問下一層對象的途徑,如下圖。ApplicationPreferencesDocumentsDFaceDocumentDSolidBlockBlocksAttributeDatabaseModelSpaceBlockRefPaperSpaceCirclePViewportDimPointAngDictionaryDictionariesDimAngularXRecordDimStylessDimStyleDimOrdinateDimRad

12、ialFileDependencyFileDependenciessGroupGroupsEllipseHyperlinksLayerLayersExternalRefHyperlinkLayoutLayoutsLeaderLineTypesLineTypesLinePlotConfigurationPlotConfigurationsMInsertBlockRegisteredApplicationRegisteredApplicationsSelectionSetsSelectionSetMLineTextStyleTextStylesPointUCSUCSsPolyfaceMeshVie

13、wViewsPolygonMeshhViewportsViewportsRayDatabasePreferencesRegionPlotSummaryInfoSolidUtilitySplineMenuBarTablePopupMenuTextMenuGroupsTraceMenuGroupPopupMenusXline集合PopupMenuPopupMenuItemToolbars對象ToolbarToolbarItem圖 AutoCAD的對象模型用戶可直接經(jīng)過用戶定義變量援用對象。直接援用對象,應(yīng)包括對象的層次。舉一個最簡單的例子,以下語句是添加一條直線到模型空間。Sub Drawline

14、( )定義兩個三維的數(shù)組startPoint和endPointDim startPoint( to ) As Double Dim endPoint( to ) As Double 定義LineObj為直線對象Dim LineObj As AcadLine定義起點startPoint() = startPoint() = startPoint() = 定義終點endPoint()=endPoint()=endPoint()=調(diào)用AddLine方法繪制直線Set LineObj = ThisDrawing.ModelSpace.AddLine(startPoint,endPoint)End su

15、b. 參數(shù)化繪制圖形程序的編制. 創(chuàng)建基準(zhǔn)函數(shù)在實踐工程中設(shè)計良好的底層庫可以節(jié)省很多的編碼量,并且有助于團(tuán)體協(xié)作的實現(xiàn)底層庫最好在工程編碼開場之前就曾經(jīng)完全確定. 在以上創(chuàng)建二維對象方法的根底上,采用對系統(tǒng)提供的方法進(jìn)展封裝,創(chuàng)建底層函數(shù)庫,即由對象的基準(zhǔn)函數(shù)構(gòu)成.,其中還包含一些常用的計算函數(shù) 基準(zhǔn)函數(shù)就是與系統(tǒng)提供的方法參數(shù)一致的函數(shù),其他的函數(shù)均調(diào)用基準(zhǔn)函數(shù)創(chuàng)建對象.如.創(chuàng)建直線基準(zhǔn)函數(shù)的詳細(xì)步驟如下:.在AUTOCAD中,選擇工具/宏/VBA管理器菜單項,在彈出的VBA管理器對話框中單擊新建按鈕,創(chuàng)建一個新的工程,然后選擇該工程,單擊另存為按鈕,將其保管在適當(dāng)?shù)奈恢谩?在VBA管理器

16、對話框中單擊Visual Basic編輯器按鈕,進(jìn)入VBA集成開發(fā)環(huán)境,選擇插入/模塊菜單項,向工程中添加一個規(guī)范模塊。.選擇插入/過程菜單項,選擇類型為函數(shù),范圍為公有的,在稱號文本框中輸入Addline,單擊確定按鈕,就在當(dāng)前的模塊中添加了AddLine函數(shù)。提示: 在VB中,子程序和函數(shù)的主要區(qū)別就在于,子程序沒有前往值,但函數(shù)可以有前往值,而在VBA中,宏的定義經(jīng)過子程序來實現(xiàn).因此他們創(chuàng)建底層函數(shù)均運(yùn)用函數(shù)。.創(chuàng)建直線的基準(zhǔn)函數(shù)代碼為:Public Function AddLine(ByVal ptSt As Variant, ByVal ptEn As Variant) As Ac

17、adLineSet AddLine = that Drawing .Model Space .AddLine (ptSt, ptEn)End Function需求留意的是,基準(zhǔn)函數(shù)稱號與VBA中對應(yīng)的方法堅持一致.函數(shù)的前往值為AcadLine,輸入?yún)?shù)為兩個Variant類型的變量,分別用于表示起點和終點的位置。Set是VBA的一個關(guān)鍵字,用于對象變量的賦值(數(shù)值變量的賦值形如a=b),而函數(shù)的前往值運(yùn)用形如函數(shù)稱號=表達(dá)式的方式來實現(xiàn)。 .參數(shù)化繪制根本二維對象運(yùn)用AutoCAD VBA開發(fā)的軟件,大部分仍屬于交互式的軟件,必需思索和用戶進(jìn)展交互的問題AutoCAD本身提供了兩種人機(jī)交互的

18、方式,一種是在命令中進(jìn)展操作,另一種那么是經(jīng)過對話框輸入?yún)?shù) 在VBA中要利用圓心和半徑創(chuàng)建圓:.首先在AUTOCAD中,選擇工具/宏/VBA管理器菜單項,在彈出的VBA管理器對話框中單擊新建按鈕,將其保管在適當(dāng)?shù)奈恢?。在VBA管理器對話框中單擊Visual Basic編輯器按鈕,進(jìn)入VBA集成開發(fā)環(huán)境,選擇插入/用戶窗體菜單項,向工程中添加一個用戶窗體.在用戶窗體上插入如圖.所示的相關(guān)控件,并把相對應(yīng)的文本框稱號分別修正為text,text,text.在文本框后面添加一個拾取按鈕,并把拾取按鈕的Caption屬性修正為空,單擊PICTURE屬性后的.按鈕,從彈出的加載圖片對話框中,選擇配套光

19、盤中的PICKSET圖片,設(shè)置PICTUREPOSITION屬性為參數(shù),就得到了如圖.中的拾取點按鈕效果.雙擊確定按鈕,在該按鈕的CLICK事件中添加下面的代碼:Private Sub CommandButton_Click() 圖.Dim pt() As DoubleDim radius As DoubleDim addcircle As AcadCirclept() = Text.Text:pt() = Text.Textradius = Text.TextUserForm.HideThisDrawing.ModelSpace.addcircle pt, radiusEnd Sub.雙擊窗

20、體上的取消按鈕,進(jìn)入代碼窗口,在該按鈕的CLICK事件中添加下面的代碼:Private Sub CommandButton_Click()EndEnd Sub.雙擊窗體上的拾取按鈕,進(jìn)入代碼窗口,在該按鈕的CLICK事件中添加下面的代碼:在VBA中建立圓心的拾取點代碼如下:Private Sub CommandButton_Click()Dim PtPick As VariantUserForm.HidePtPick = ThisDrawing.Utility.GetPoint(, 請在屏幕上選擇起點:)Text.Text = PtPick(): Text.Text = PtPick()Use

21、rForm.ShowEnd Sub在這段代碼中,獲取點的位置實現(xiàn)方法為GETPOINT,其前往值必需為VARIANT類型的變量,用來存儲點的位置.在此過程中,還要在適當(dāng)?shù)臅r候隱藏和顯示窗體,不然AUTOCAD無法獲得控制權(quán),程序就會出錯.餐廳器具冰箱二維參數(shù)化繪圖實例如下圖為餐廳器具冰箱的參數(shù)化過程圖此過程主要表達(dá)的是由圖形的幾何參數(shù)和構(gòu)造參數(shù)來進(jìn)展圖形的參數(shù)化繪制基點坐標(biāo)和尺寸長度。拾取基點后:輸入長度和寬度。即可繪制出其二維圖形. 參數(shù)化繪制三維圖形 AUTOCAD VBA二次開發(fā)具有強(qiáng)大的平面圖形繪制功能。運(yùn)用它編制的程序可以得到復(fù)雜的二維圖形。但二維圖形存在一定的局限性和缺陷,由于無法

22、實現(xiàn)尺寸關(guān)聯(lián),不能直觀察看產(chǎn)品的設(shè)計效果,雖然可以經(jīng)過軸測視圖的方式來處理,但操作費事,效果不佳,而假設(shè)運(yùn)用三維圖形,就可以彌補(bǔ)二維圖形的在表現(xiàn)上的缺乏。以下引見VBA中關(guān)于三維建模部分的功能。采用的和二維操作一樣的界面風(fēng)格,從窗體中輸入?yún)?shù)得到圖形。. 三維彈簧模型實例闡明該例提供了簡約的對話框界面,用戶只需輸入?yún)?shù):中心點,旋轉(zhuǎn)圈數(shù),起始半徑,程度增長,垂直增長和每圈分段數(shù)就可得到按要求的三維螺旋線如圖圖 編程思緒:計算機(jī)運(yùn)用多邊形來模擬圓形,這里的程序同樣運(yùn)用這個原理,每一個螺旋線都是由許多小線段直線組成,當(dāng)直線足夠多時,就呈現(xiàn)出螺旋線的效果。假設(shè)可以得到各個點的坐標(biāo),就可以利用多段線建

23、立一條螺旋線,但是二維多段線無法獲得Z 方向的坐標(biāo),因此只能運(yùn)用三維多段線用柱坐標(biāo)表示螺旋線的控制點的坐標(biāo)比較方便,因此在程序中有一個重要的問題就是柱坐標(biāo)和平面直角坐標(biāo)的轉(zhuǎn)換。由于是用多段線來表示圓,固 圓形的分段數(shù)的設(shè)定時竟能夠多,少了就的到多段線螺旋。所以初值他們定為。如繪制多段線調(diào)用內(nèi)置函數(shù) Dim ObjPline As AcadDPolyline Set ObjPline = ThisDrawing.ModelSpace.AddDPoly(PtControl).圓筒模型實例闡明: 運(yùn)轉(zhuǎn)本實例,可以在圖形窗口中創(chuàng)建一個圓筒模型,大小,半徑,深度都可以改動。如圖:圖編程思緒他們知道圓筒有

24、兩種畫法,一種是建立平面的圖形,得到兩個圓建立面域后拉伸得到,一種是直接建立兩個圓柱體,但兩個圓柱體是同心的,在進(jìn)展差集計算得到挖空的模型。本程序就是建立兩個同心但大小和半徑不同的圓柱體,差集得到上圖模型。如主要代碼:Dim objCylinder As AcadDSolid Dim objCylinder As AcadDSolidSet objCylinder = ThisDrawing.ModelSpace.AddCylinder(ptCen, radius, height) 創(chuàng)建圓柱體 Set objCylinder = ThisDrawing.ModelSpace.AddCylind

25、er(ptCen, radius, height)布爾運(yùn)算的第一步:圓柱體減去圓柱體objCylinder .Boolean acSubtraction, objCylinder. 系統(tǒng)數(shù)據(jù)庫管理程序參數(shù)化繪圖過程中,有效的管理圖形數(shù)據(jù),特別對一些規(guī)范件,通用件,建立規(guī)范參數(shù)圖庫,是很重要的一個環(huán)節(jié).可以采用Microsoft Access進(jìn)展數(shù)據(jù)庫管理,銜接方法采用ADO,實現(xiàn)AUTOCAD與ACCESS的數(shù)據(jù)通訊,其主要功能是對參數(shù)化生成的圖形的幾何參數(shù)和構(gòu)造參數(shù)進(jìn)展記錄并管理這些數(shù)據(jù)。. 數(shù)據(jù)庫銜接方法ADO數(shù)據(jù)庫銜接方法ADO是Microsoft ActiveX Data Object

26、s的簡稱,ADO作為一種更新的數(shù)據(jù)庫訪問技術(shù),“擴(kuò)展了DAO和RDO所運(yùn)用的對象模型,包含較少的對象和更多的屬性、方法、事件。ADO銜接數(shù)據(jù)庫的編程思緒:在運(yùn)用ADO對象之前,需求在VBA集成開發(fā)環(huán)境中,選擇工程援用菜單項,從彈出的對話框中選中microsoft ActiveX Data Objects . Library選項,援用ADO的對象模型如圖圖 在編程過程中運(yùn)用ADO的一個典型的存取數(shù)據(jù)的步驟為: 銜接數(shù)據(jù)源??梢赃\(yùn)用銜接對象的Open方法翻開數(shù)據(jù)庫對象,例如: adoCon.Open Provider=Microsoft.Jet.OLEDB.;Data Source= & _ Left(strPath, Len(strPath) - ) & CT.mdb; 翻開記錄集對象。可以運(yùn)用記錄集對象的Open方法翻開記錄集對象,例如: adoRs.OpenbingxiangData,adoCon,adOpenDynamic,adLockOptimistic 運(yùn)用記錄集。在各個記錄集

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論