王 鵬
(廣州廣日電梯工業(yè)有限公司,廣東廣州 511447)
AutoCAD是目前使用廣泛的通用交互式計算機輔助繪圖與設計軟件包,其特點是通用性強,具有多種工業(yè)標準和開放的體系結構,具有強大的二次開發(fā)功能。這些特點使得它在船舶、建筑、機械、電子、服裝等多個領域得到了極為廣泛的應用[1]。
在機械產品設計中要頻繁使用通用零件軸,如果用傳統的方法對軸進行設計,由于參數太多,計算復雜,繪圖繁瑣,不僅設計效率低,而且容易出錯。目前各類CAD軟件在機械設計中的應用日益廣泛,利用參數化輔助設計的方法來研究機械零件的設計問題,已經成為現在機械設計中十分流行的研究方法[2]。因此,應用AutoCAD軟件平臺開發(fā)軸的參數化輔助設計系統不僅具有很高的實用價值,而且對機械設計現代方法的研究是一項有益的探索。
系統應用內嵌于AutoCAD軟件平臺的VBA技術進行二次開發(fā),開發(fā)出了軸設計CAD系統,主要采用參數化設計方法,基于特征的實體造型理論,應用數據庫的支持和尺寸驅動原理,使軸的尺寸變化自動轉化成幾何形狀的變化,并直接輸出圖形,從而大大提高了設計的質量和繪圖的效率。
ActiveX技術來源于OLE(Object Linking and Embedding)技術。AutoCAD ActiveX使用戶能夠從AutoCAD的內部或外部以編程方式來操作Auto-CAD,使許多不同的編程語言和環(huán)境及其他應用程序可以訪問被顯示的對象。對象是所有ActiveX應用程序的主要構造塊,每一個顯示的對象均精確代表一個AutoCAD組件。AutoCAD ActiveX接口中有許多不同類型的對象[3]。在AutoCAD中實現ActiveX接口有兩大優(yōu)點:更多的編程環(huán)境可以編程訪問AutoCAD圖形;與其他Windows應用程序共享數據變得更加容易。利用該項技術來進行AutoCAD二次開發(fā),控制AutoCAD的環(huán)境,或同外部程序進行“對話”,或編寫基于AutoCAD的數據庫程序,有著顯著的優(yōu)越性。ActiveX Automation技術為AutoCAD的二次開發(fā)提供了一個嶄新的天地[4]。
VBA(Visual Basic for Application)是AutoCAD內嵌的一種程序語言。它基于Visual Basic版本,是完全面向對象體系結構的一種編程語言,有著與VB幾乎相同的開發(fā)環(huán)境和語法。允許VBA環(huán)境與AutoCAD同時運行,并通過ActiveX接口提供對AutoCAD的編程控制[5]。
自20世紀80年代以來,基于特征的設計方法已被廣泛接受,也提出了不少特征的定義。更為嚴格的定義:特征就是一個包含工程含義或意義的幾何原型外形[6]。特征在此已經不是普通的體素,而是一個封裝了各種屬性(attribute)和功能(function)的功能要素。由此,可以利用較高層次的語義豐富的特征來代替簡單的原始的幾何元素作為基本元素,通過一定的組合法則來建模,這就是特征造型,特征的表示和建立就成為其中的關鍵。
軸類零件的結構特點是:不同的軸有不同的結構,但它們有共同的結構特征,如都由幾節(jié)大小不同的圓柱段、倒角、鍵槽等組成。這些結構都很簡單,但又有很大的相似性。可以利用參數化的理論設計方法,基于特征實體的造型方法去研究軸的參數化設計,并根據用戶輸入的相關軸段尺寸來驅動系統運行,使軸的設計可以通過修改參數來確定,從而實現了軸類零件的計算機輔助設計。
考慮到計算機輔助軸的設計過程具有如下特點及難點:設計前已知數據少;使用大量的設計及校核資料;結構復雜,結構信息難于合理存儲傳遞。將軸的輔助設計系統分為以下幾個模塊。
(1)結構設計模塊。提供逐段進行結構設計的方便友好的交互界面,隨人機交互的進行,系統進行參數化繪圖并合理存儲軸的局部信息。
(2)數據處理與查詢模塊。由于軸的設計及校核涉及到大量的表格數據,為便于存儲、計算和檢索,系統利用Access數據庫存儲與設計及校核相關的數據。
(3)力學計算模塊。將加載于轉動件上的力轉換為加載于軸上的力,并計算該力作用下產生的支反力、彎矩和轉矩等。
(4)強度校核模塊。按照彎扭合成強度條件,利用數據處理與查詢模塊所獲取的參數和力學計算模塊得出的數據,計算軸上受載荷處的彎矩、扭矩、當量彎矩和計算應力。并按照強度校核理論,計算軸上危險點處的安全系數,進行強度校核,并判斷設計是否合格。
(5)參數化繪圖模塊。根據數據處理與查詢模塊提供的參數進行參數化繪圖,并輸出圖形文件。提供用戶布置載荷的接口。
系統在應用界面設計上,采用了按設計順序步驟逐步依次運行。主要采用窗體的形式來完成系統的運行。系統執(zhí)行的流程圖如圖1所示。
圖1 系統流程圖
系統的操作界面主要包括:引導界面、輔助設計界面、結構設計界面、支承布置界面和載荷計算及強度校核界面,在此列出結構設計界面(如圖2所示)和載荷計算及強度校核界面(如圖3所示)。
圖2 結構設計界面圖
4.3.1 數據庫的連接與查詢
軸的輔助設計系統中,由于涉及到大量的數據處理與查詢,因此建立了Access數據庫以方便系統管理相關數據。
圖3 載荷計算及強度校核界面圖
常用的數據庫訪問技術有:數據訪問對象DAO(Data Access Objects)技術,遠程數據對象RDO(Remote Data Objects)技術和Active數據對象ADO(ActiveX Data Objects)技術。ADO的對象模型是所有數據訪問接口對象模型中最簡單的一種,它的優(yōu)勢在于它可用于各種程序設計語言,所以ADO技術成為數據庫訪問功能的新突破,開發(fā)的系統使用的是ADO訪問技術。
在使用ADO對象之前,需要在VBA集成開發(fā)環(huán)境中,引用ADO的對象模型。連接數據庫、打開記錄集的實現程序代碼如下:
'工程文件路徑
Dim strPath As String
Dim adoCon As Connection '連接對象
Dim adoRs As Recordset '記錄集對象
'首先獲得當前的工程路徑
strPath=ThisDrawing.Application.VBE.
ActiveVBProject.FileName
'連接數據庫
Set adoCon=New Connection
adoCon.CursorLocation=adUseClient
adoCon.Open"Provider=Microsoft.Jet.
OLEDB.4.0;DataSource=" & Left(strPath,Len(strPath)-8)&"data.mdb;"
'打開記錄集,查詢表jianhb
Set adoRs=New Recordset
adoRs.Open"SELECT*FROM jianhb",ado-Con,adOpenForwardOnly,adLockReadOnly,
adCmdText
adoRs.MoveFirst
在使用記錄集時,在各個記錄集之間切換還可以使用記錄集的Move、Move-First、 MoveNext、 MovePrevious、MoveLast方法。
在連接數據庫獲取數據完成之后,必須使用Close方法來關閉記錄集和數據庫連接對象,其程序代碼如下:
adoRs.Close '關閉記錄集對象
adoCon.Close '關閉連接對象
鏈接好數據庫之后,需要從數據庫中獲取符合條件的參數,采用For…Next循環(huán)語句實現了對所需查詢的表的遍歷,同時使用If…End if語句來選取符合查詢條件的參數,方便參數化設計。
4.3.2 參數化繪圖
參數化繪圖部分主要包括:圖層的建立、繪制圖形和尺寸標注三個方面。
(1)圖層的建立。其關鍵代碼如下:
‘創(chuàng)建“中心線”圖層,設置其線型,線寬,顏色
Public NewLayerName As String
Public LayerObject As AcadLayer
NewLayerName="中心線"
Set LayerObject=
ThisDrawing.Layers.Add(NewLayerName)
On Error GoTo ERRORHANDLER
linetypeName="CENTER"
ThisDrawing.Linetypes.Load linetypeName,"acadiso.lin"
ERRORHANDLER:
LayerObject.color=acWhite
LayerObject.Linetype="CENTER"
LayerObject.Lineweight=acLnWt015
ThisDrawing.ActiveLayer=LayerObject
(2)圖形繪制。其中直線和圓弧繪制的關鍵代碼如下:
‘直線
Dim Line As AcadLine:
Set Line = ThisDrawing.ModelSpace.AddLine(end1,end2)
‘圓弧
Dim arcObj As AcadArc
SetarcObj1 = ThisDrawing.ModelSpace.AddArc(center1,r,sangle,endang)
其中end1,end2,為線段端點;center1,center2為圓弧圓心;r為圓弧半徑;sangle為圓弧起始角度;endang為圓弧終止角度。
(3)尺寸標注。在系統中,標注主要采用對齊標注的方法,這種方法方便快捷,比較容易使用,對齊標注的定義程序代碼如下:
Dim dimObj As AcadDimAligned
Set dimObj=ThisDrawing.ModelSpace.AddDimAligned(end1,end2,location)
其中end1,end2為標注端點,location為標注文字的對齊點。其他標注相關:
‘設置小數分隔符
dimObj.DecimalSeparator= “.“
‘顯示直徑符號Φ
dimObj.TextOverride=“%%C<>“
dimObj.Update
4.3.3 參數化載荷計算及強度校核
在用戶輸入參數和數據庫連接完成之后,系統將進行參數化的載荷計算及強度校核。
(1)最小直徑的估算是進行結構設計,載荷計算及強度校核之前必不可少的,在估算最小直徑時需要獲得功率P、轉速n以及根據材料選取的系數A0。
計算過程由程序自動完成,其主要代碼為:
dmin=A0*((P/n)^(1/3))
Textdmin.Text=dmin
同時,用戶在進行結構設計時要保證軸段的直徑大于所估算的最小直徑,否則系統將提示錯誤。
(2)在進行載荷計算之前,必須先由用戶布置軸的支承點和受載荷點,否則無法進行載荷計算。軸的支承點需要布置2個,受載荷點只需要布置1個,其程序實現的方法主要為鼠標獲取點的坐標,調用GetPoint函數。其關鍵代碼如下:
'獲取點的位置
ptPick=ThisDrawing.Utility.GetPoint(,“指定點:”)
在布置支承點和受載荷點時系統會彈出對話框,提示用戶在指定的位置來布置,以方便系統獲取計算載荷時所需的力臂長度。
(3)在常規(guī)的軸設計當中,進行載荷計算時都需要構建力學模型,以方便軸的計算。在開發(fā)的系統當中,進行載荷計算時同樣要構建力學模型,但是這里的力學模型需要進行轉化,轉化成程序代碼的形式反映出來。所需計算的參數有切向支反力,切向彎矩,徑向支反力,徑向彎矩,扭矩,總彎矩等。
(4)在軸上載荷都計算完成之后,為了校核軸的強度,需要根據公式計算軸的計算彎矩,得出計算彎曲應力之后,即可針對危險截面(即計算彎矩大而直徑可能不足的截面)作強度校核計算。系統是按彎扭合成應力校核軸的強度,得出計算彎曲應力之后,系統跟據用戶所選擇的材料熱處理方法查詢許用彎曲應力[σ-1],并與計算彎曲應力進行比較,判斷軸的結構設計是否合理。
(1)打開AutoCAD軟件,選擇【工具/宏/加載工程】。
(2)在彈出的對話框里找到存放系統的目錄,選中“計算機輔助軸設計系統.dvb”工程文件,并單擊“打開”按鈕。
(3)系統彈出Microsoft Visual Basic編輯器,選中User窗體,單擊運行按鈕或者按下F5鍵系統便開始運行。
(4)系統運行,由用戶根據系統提示進行軸的計算機輔助設計。運行結果如圖4、圖5所示。
圖4 載荷計算結果
圖5 強度校核結果
(1)基于AutoCAD VBA的二次開發(fā),可以為計算機輔助設計帶來了很大的靈活性,進一步增強程序的功能和代碼重用性,應用上述技術開發(fā)專用CAD系統是一種行之有效、方便實用的設計方法。
(2)系統基本滿足了軸設計過程當中的基本要求,用戶只需根據輸入的參數,即可由系統自動完成輔助結構設計及強度的校核,并輸出零件圖形。為設計人員提供了方便的設計手段。
[1]李長勛.AutoCAD ActiveX二次開發(fā)技術[M].北京:國防工業(yè)出版社,2005.
[2]肖剛,李學志,李俊源.機械CAD原理與實踐:第2版[M].北京:清華大學出版社,2006.
[3]張帆.AutoCAD VBA開發(fā)精彩實例教程[M].北京:清華大學出版社,2004.
[4]張帆.AutoCAD VBA二次開發(fā)教程[M].北京:清華大學出版社,2006.
[5]李慶興,李繼升,范順成,等.基于AutoCAD VBA平臺的機械零件工作圖參數化及自動生成系統[J].機械設計,2008,25(1):68-70.
[6]王彩英.基于特征的軸類零件參數化設計的研究[J].機 電 產 品 開 發(fā) 與 創(chuàng) 新 ,2008,21 (5):131-133.