減速器系列參數(shù)繪圖在Auto CAO 上的實(shí)現(xiàn)
l 尺寸驅(qū)動(dòng)
1.1 尺寸驅(qū)動(dòng)的概念
所謂尺寸驅(qū)動(dòng),是指正式圖或者是徒手勾畫的圖一經(jīng)標(biāo)注尺寸后,允許任意修改尺寸值。繪圖系統(tǒng)自動(dòng)保持圖形與最新尺寸保持一致的圖形編輯方法。其中,操作對(duì)象是尺寸值,而操作結(jié)果是圖形的變換,這種方法顯然與傳統(tǒng)的繪圖過程是截然不同的全新方法。尺寸驅(qū)動(dòng)實(shí)質(zhì)上是變量幾何的思想.這種思想最初是由美國(guó)麻省理工大學(xué)D . C . Gos-sand 教授在70 年代末提出的,現(xiàn)在已成為熱門研究課題。目前,在國(guó)內(nèi)隨著用戶對(duì)軟件產(chǎn)品的使用要求日益增強(qiáng).這一新技術(shù)正在逐步發(fā)展應(yīng)用[l]。如果要實(shí)現(xiàn)真正的完全尺寸驅(qū)動(dòng),借助于徒手勾圖來生成標(biāo)準(zhǔn)規(guī)范圖還有一段距離。在這里,暫時(shí)我們只是局部地討論這方面的問題。
1.2 約束判定及尺寸驅(qū)動(dòng)
約束可分為2 大類:幾何約束和結(jié)構(gòu)約束[2-3]
幾何約束是用于描述幾何元素形狀及位置的尺寸約束,如:直線長(zhǎng)度和角度大小等。結(jié)構(gòu)約束是用于描述幾何元素之間結(jié)構(gòu)關(guān)系的約束,即幾何元素間的連接關(guān)系和相互位置關(guān)系.如:平行、垂直等。每個(gè)被約束實(shí)體總是由一個(gè)或幾個(gè)幾何約束與結(jié)構(gòu)約束所確定。而每一種實(shí)體的自由度是固定的,如:在圖紙的二維空間中,點(diǎn)有2 個(gè)自由度;直線由2 個(gè)端點(diǎn)確定,有4 個(gè)自由度。每一種約束所限制的自由度也是固定的。因此,只要將所處理對(duì)象的受約束自由度與對(duì)象本身所固有的自由度相比較,就可以判定所處理的對(duì)象是過約束、欠約束或者是約束一致.有利于對(duì)處理對(duì)象作進(jìn)一步分析和約束參數(shù)化。
例如:平面上一個(gè)矩形(矩形L 邊與x 軸的平角為α)有4個(gè)點(diǎn)。共有8個(gè)自由度。而矩形的2條對(duì)邊相互平行,且相鄰2邊的夾角為直角,就出現(xiàn)了3個(gè)約束,減少了3個(gè)自由度還剩下5個(gè)自由度(如圖1)。
為限制整個(gè)圖形的整體位移旋轉(zhuǎn).選擇一基點(diǎn)及旋轉(zhuǎn)角限制3 個(gè)自由度,2 對(duì)邊的長(zhǎng)度(L 、B )限制2 個(gè)自由度,這時(shí)的矩形就是約束一致,即該矩形是唯一確定的,其各點(diǎn)坐標(biāo)由下列式子確定:
x1=x1,y1=y1
x2=x1+Lcosα,y2=y1+Lsinα
x3= x1+Lcosα-Bsinα
y3= y1+Lsinα+Bcosα
x4= x1- Bsinα,y4= y1+ Bcosα
方程式的右端僅含5個(gè)需控制約束的自由度,方程式的左端即是唯一確定四邊形的4個(gè)頂點(diǎn)的坐標(biāo)。如果隨時(shí)修改x1、y1、α、L、B這5個(gè)參數(shù)中的任意一個(gè)或幾個(gè),此矩形的尺寸、位置就會(huì)發(fā)生變化,整個(gè)圖形這時(shí)已受于尺寸值的變化控制下。
尺寸驅(qū)動(dòng)的程序步驟如圖2。
2 參數(shù)化繪圖
為了完成零件圖的繪制,必須知道繪圖所需的每個(gè)尺寸、尺寸公差和一些特殊數(shù)據(jù)。因此,在生成數(shù)據(jù)文件時(shí),這些數(shù)據(jù)必須全部輸出,建立數(shù)據(jù)文件之最初依據(jù)是減速器殼體的一些原始數(shù)據(jù),如:壁厚、中心距、地腳螺栓直徑、減速器內(nèi)腔寬等。我們根據(jù)這些最原始參數(shù),用減速器設(shè)計(jì)的經(jīng)驗(yàn)公式便可算出所需基本尺寸,軟件中我們采用FORTRAN 來實(shí)現(xiàn)之。
但是,上述基本尺寸不包括國(guó)標(biāo)值,如螺紋直徑和銷孔直徑等。這些標(biāo)準(zhǔn)尺寸必須根據(jù)我們所得出的基本尺寸在標(biāo)準(zhǔn)手冊(cè)上查找才能得出,而且,尺寸基本偏差以及形位公差也必須從手冊(cè)上查找。這些工作都得程序自動(dòng)去做,而建立合適的數(shù)據(jù)結(jié)構(gòu),進(jìn)行相應(yīng)的數(shù)據(jù)查找是必須的。在建立數(shù)據(jù)文件時(shí)。還涉及到各種形式的數(shù)據(jù)圓整處理方法,在本文中將進(jìn)行討論。
2.1 數(shù)據(jù)結(jié)構(gòu)的建立及查找
根據(jù)本案例所涉及的數(shù)據(jù)特點(diǎn),顯然應(yīng)采用線性表結(jié)構(gòu),即數(shù)據(jù)元素之間的關(guān)系僅由記錄之間的排列順序決定。在計(jì)算機(jī)內(nèi),可用不同的方式來表示線性表,其中最簡(jiǎn)單和常用的方式是用一組地址連續(xù)的存儲(chǔ)單元依次存儲(chǔ)線性表的元素。線性表的這種機(jī)內(nèi)表示稱做線性表的順序存貯結(jié)構(gòu)[4 ] ,在這種存貯結(jié)構(gòu)中,很容易實(shí)現(xiàn)對(duì)線性表的操作。
以順序表表示靜態(tài)查找表,用順序查找的方法來實(shí)現(xiàn)查找。順序查找的查找過程為:從表中第n 個(gè)記錄開始,逐個(gè)進(jìn)行記錄的關(guān)鍵字和給定值的比較,若某個(gè)記錄的關(guān)鍵字和給定值比較相等。則查找成功,找到所查記錄。反之,若直至第一個(gè)記錄。其關(guān)鍵字和給定值都不等,則表明表中沒有聽查記錄,查找不成功。此查找過程可用下列算法描述之:
FUNC Seqsrch (r:Sqlisttp; K;Keytype):
Integer;
k 為給定值,i為關(guān)鍵字,等于k 的記錄在表r 中的序號(hào),返回i 值為零表明查找不成功。
R[0]key=k;I:=n;
WHILEr[i]key≠k Koi=-1
RETURN(i);
END F,{Seqsrch};
2.2 標(biāo)準(zhǔn)尺寸、尺寸基本偏差及形位公差的查找
螺紋直徑、銷孔直徑、尺寸基本偏差、形位公差等都得用查找的方法來獲得.根據(jù)前幾節(jié)的論述,我們采用合適的數(shù)據(jù)結(jié)構(gòu),建立查找表來實(shí)現(xiàn)之。下面以形位公差的查找為例。
首先,建立2 個(gè)數(shù)組。數(shù)組實(shí)際上是屬于線性表的一種數(shù)據(jù)結(jié)構(gòu),2 個(gè)數(shù)組分別以D1=ai(i=l,…,n ), D2=bi (i=1,…,n)表示,用數(shù)組D1存儲(chǔ)基本尺寸,數(shù)組D2存儲(chǔ)形位公差,具體數(shù)組元素的值可以在標(biāo)準(zhǔn)手冊(cè)中預(yù)先查得。然后,用這2 個(gè)數(shù)組組成一個(gè)靜態(tài)查找表(表l ).
表1兩個(gè)數(shù)組的靜態(tài)表
a1 |
a2 |
a3 |
… |
an |
b1 |
b2 |
b3 |
… |
bn |
a1,a2,a3,…,an,作為關(guān)鍵字,通過公式我們得出基本尺寸L(非標(biāo)準(zhǔn)),與關(guān)鍵字比較(即)與標(biāo)準(zhǔn)基本尺寸比較
,若L≤ai,則我們知道L屬于ai-1,ai之間,于是可求出基公差為bi,具體算法如圖3所示。
用上術(shù)方法,我們來查找三級(jí)減速器箱蓋一級(jí)軸承孔的圓柱度,已知軸承孔徑DZA = 110 。首先建立查找表(如表2 )。然后,將DZA 與數(shù)組Dl的元素從第1 個(gè)開始比較,直到找到比它大或者等于它的元素為止。從表2 中可以看出,Dl 的第8 個(gè)元素120 比DZA 大,此時(shí),記下i 值,i=8。對(duì)應(yīng)D2數(shù)組的第8 個(gè)元素便是所要查找的圓柱度,值為中φ0.10。
表2軸承孔的圓柱度查找表
i值 |
… |
4 |
5 |
6 |
7 |
8 |
9 |
D1 |
… |
18 |
30 |
50 |
80 |
120 |
180 |
D2 |
… |
0.05 |
0.06 |
0.07 |
0.08 |
0.10 |
0.12 |
從上面,我們清楚地知道了形位公差的獲得方法,我們可用同樣的方法查得螺紋直徑、銷孔直徑和尺寸基本偏差,這里就不再一一贅述。
2.3 數(shù)據(jù)處理
本節(jié)所討論的數(shù)據(jù)處理生要指根據(jù)生產(chǎn)實(shí)際對(duì)數(shù)據(jù)進(jìn)行加土處理。我們用公式推出的很多數(shù)據(jù)是理論型的數(shù)據(jù),而這些數(shù)據(jù)如果不進(jìn)行加工,往往不符合生產(chǎn)實(shí)際,給產(chǎn)品的制造帶來一定困難。
由于是用FORTRAN 語言編制此程序[l5] ,對(duì)于此種圓整,只須用Fortran 庫函數(shù)中的ANINTO 函數(shù)實(shí)現(xiàn)之。例:Ll=ANINT(Ll),此函數(shù)作用為舍人到最接近的整數(shù)。
2)以0 , 5 結(jié)尾圓整
如果要求向上圓整。用如圖4 所示算法實(shí)現(xiàn)之,假設(shè)數(shù)據(jù)名為L。其中AINTO函數(shù)的功能是舍掉一個(gè)數(shù)的尾數(shù)。
如果要求向下圓整結(jié)束,我們要用到fortran中的AINT()函數(shù):L =AINT()(L/5 .)*5.
最近似的圓整,我們要用到fortran中的AMOD()函數(shù).即求余函數(shù)。
3)以0,2, 5, 8結(jié)尾圓整,此種圓整較為麻煩,我們用下邊算法實(shí)現(xiàn)之。
3 本軟件尺寸驅(qū)動(dòng)的實(shí)現(xiàn)
AutoCAD 是目前最優(yōu)秀的圖形繪圖及支撐軟件,內(nèi)嵌有AuoLISP 語言,提供了與用戶高級(jí)語言程序的接口(SCR 、DXF) ,可將用戶編制的高級(jí)語言程序與AutoCAD 圖形連接起來,根據(jù)用戶程序提供的數(shù)據(jù)進(jìn)行參數(shù)化繪圖。圓柱齒輪減速器殼體自動(dòng)化設(shè)計(jì)系統(tǒng)軟件之參數(shù)法繪圖就是以AutoCAD 為支撐平臺(tái),以AutoLISP 和C語言為編程語言開發(fā)成的。
本項(xiàng)目包括一級(jí)、二級(jí)、三級(jí)減速器殼體的參數(shù)化繪圖,這里以一級(jí)焊接減速箱座地腳螺栓的繪制為例來說明是如何實(shí)現(xiàn)尺寸驅(qū)動(dòng)進(jìn)行參數(shù)化繪圖的。一級(jí)焊接減速箱座地腳螺栓的分布有一個(gè)數(shù)學(xué)模型,當(dāng)?shù)啬_螺栓為6 個(gè)時(shí),可按數(shù)學(xué)公式推導(dǎo)出各地腳螺栓的位置及大。划(dāng)?shù)啬_螺栓的個(gè)數(shù)大于6 個(gè)時(shí)。采用人工干預(yù),由人機(jī)界面輸人數(shù)據(jù),再依照此數(shù)據(jù)繪圖,這時(shí)又詢問是否愿意調(diào)整,如果愿意,則重新輸人值,程序就抹掉原圖,按新值繪圖。在本項(xiàng)目中,由于地腳螺栓座的長(zhǎng)、寬、高尺寸以及地腳螺栓孔的尺寸都是已知定值,唯一可調(diào)整的就是下一螺栓孔與上一螺栓孔的相對(duì)位置。AutoLISP [6]有一重要特性,可以使用遞歸定義函數(shù)。在這里采用新的處理思路,其流程圖如圖2。
4 結(jié)語
本文著重討論如何用智能化尺寸驅(qū)動(dòng)法實(shí)現(xiàn)參數(shù)化繪圖,并在開發(fā)的圓柱齒輪減速器殼體自動(dòng)化設(shè)計(jì)系統(tǒng)軟件之參數(shù)法繪圖中得以實(shí)現(xiàn),有關(guān)技術(shù)人員在使用中反映該系統(tǒng)良好。希望本文的討論對(duì)參數(shù)化繪圖研究工作能起到一定的借鑒作用。
[參考文獻(xiàn)]
[l] Roller D . Dimension-driven geometry in CAD: A survey, theory and practice of geometric modeling [M]. Strasser W, Seidel H-P. Springer-Verlag, 1989.
[2]李蓉,張樹生,高滿屯,等.掃描工程圖二維重建中約束關(guān)系的建立及表示研究[J] .工程圖學(xué)學(xué)報(bào),200l(4):1-6。
[3]石峰,張永清,婁臻亮,等.參數(shù)化CAD 系統(tǒng)的關(guān)鍵技術(shù)研究[J].工程圖學(xué)學(xué)報(bào),2001(2): 7-13.
[4]苗雪蘭,劉瑞新,宋會(huì)群.?dāng)?shù)據(jù)庫技術(shù)及應(yīng)用[M].北京:機(jī)械工業(yè)出版社,2005 .
[5]彭國(guó)倫.Fortran95 程序設(shè)計(jì)[M].北京:中國(guó)電力出版社,2002 .
[6] 希望公司.AutoLISP 程序設(shè)計(jì)手冊(cè)[M].北京:希望出版社,1966.