|
Pro/ENGINEER是由美国PTC公司开发的三维CAD软件,在工业造型设计和模具设计制造行业中得到广泛应用。运用Pro/ENGINEER软件,设计人员可以在计算机上实现虚拟现实设计和制造。 在Pro/ENGINEER软件中,Program模块是自动化零件与组合件设计的一项重要工具,使用者可以经由非常简易且高级的程序语言来控制特征的出现与否、尺寸的大小、零件的出现与否、零件的个数等。当零件或组合件的Program设计完成后,往后读取此零件或组合件时,其各种变化情况即可利用问答式的方式得到不同的形状,以实现产品设计的要求。
: [) K, \8 G7 I! L/ R" L) c 齿轮虽然在机械行业中有广泛的使用,但Pro/ENGINEER软件不能直接生成。通过复杂的造型设计虽可以生成齿轮,但变化齿数、模数和变位系数后,又需进行复杂的设计计算和造型形状判断,工作量很大,齿轮的三维造型设计成为造型设计中望而却步的工作。本文基于渐开线齿轮的生成原理,结合Program程序,研制出变位直齿圆柱齿轮实体造型的自动化设计程序,用户只要输入齿轮的设计参数(齿数z1、z2,模数m,变位系数x1、x2,齿槽圆角半径、齿宽、轴孔直径、键槽高度和宽度)就可以快速地生成齿轮实体,使用简单方便,该设计软件可以广泛地应用于网页设计和机械产品造型设计中。2 U! L9 n' }1 F' M. H
2 齿轮齿槽形状的精确确定* z9 t) [$ V- \4 m
齿形的渐开线形状可通过高级Sweep特征设计精确地设计出来,但齿轮齿槽的形状与齿轮齿数、模数、变位系数和压力角有关。具体地说,下列两种情况决定齿槽的形状:8 h2 b& `# G0 Q" {) t1 `
5 F x* @$ U) p; [; U9 S9 v) }. B
图1 第一种情况的齿槽形状 图2 第二种情况的齿槽形状 即:齿根圆的半径小于渐开线的基圆半径时和齿根圆的半径大于渐开线的基圆半径时。为了叙述方便,下文中,分别称前者为a情况,后者为b情况。因齿轮的啮合只在渐开线部分,因此对于a情况,设计时可在基圆的以下部分加与渐开线相切的直线以连接齿根圆,如图1所示。而对于b情况则无需加相切直线,仅截取渐开线的一部分即可,如图2所示。
" B1 ~$ k7 _! D5 t% j3 程序设计时需解决的几个关键问题
1 w5 Y" }2 ]( w0 j- F/ E1 H 3.1 啮合角的计算
! \4 [" F! r" p; M# X, M5 p, [ 变位齿轮的齿顶圆直径和啮合角有关,因此设计时必须先由输入的齿轮设计参数经过复杂的数学计算得到啮合角值。
1 r3 A4 x1 V8 Z1 S3 A$ c% l* ] 我们知道,外齿合时的啮合角计算公式为:
& m* ^* Z6 n- h1 x5 C8 V7 N2 @( ^+ Q # e. J" Y: W. b7 n3 x) x; c* `
可见 无法由显式直接表达出来,因此也就无法直接计算出来。虽然用C语言可以数值计算出 ,但Program自带的程序不支持C语言,幸运的是利用Program自带的解方程程序可以解出 ,具体的设计程序是:
; g" }1 t9 P1 b- L+ Y% y9 I " X- ~7 S4 Z- c: Z, D: z
上式中 必须赋初值,否则数值解会不确定,考虑到啮合角一般大于10度,所以初值设为10即可。由于Program程序中三角函数内的角度是度,因此公式右边最后的 应处理成弧度,以便和tan 同量纲。$ w/ s$ v# l, ~ ?: O* V- @
3.2 a种情况和b种情况齿轮的调用3 v( k' s; Z9 t+ {" ~3 s+ a0 d
对于Pro/ENGINEER软件,在零件设计模式下是无法实现两种不同零件的调用的,但在装配模式下可以实现这种调用功能,具体的方法是:在.asm下新建文件,坐标系统为mmns,把a、b两种情况的齿轮造型在基准缺省方式下直接装配在一起,这时的装配件是a和b两种情况齿轮的重叠,Program编程时,通过判断齿轮的齿根圆半径是否大于渐开线的基圆半径来决定采用a种情况还是b种情况的齿轮。若齿根圆半径小于基圆半径,则采用a种情况的齿轮 ;否则,则采用b种情况的齿轮。
+ U7 ?) Q l* d' V6 L" P: L7 E4 齿轮的自动化设计程序流程图
$ ?* e- |1 O$ p( U4 ^" t4 a& `2 j0 G 4.1 a、b两种情况时的齿轮自动化设计流程图& ?8 j# c4 h. b% F2 z. L1 _
图3是a种情况时齿轮的自动化设计流程图。b种情况的齿轮自动化设计流程和上图类似,只是齿槽设计时改为b种情况即可。6 e- D# [1 S" k8 ?/ l3 @$ X
4.2 综合a种和b种两种情况时的齿轮自动化设计流程图
/ c; F* s8 A3 q% |/ ?& @ 综合a和b情况后的自动化设计流程图如图4所示。
) [& [: i1 u( z& |图3 a种情况的齿轮自动化设计流程 图4 综合a、b两种情况后的齿轮自动化设计流程 5 源程序
9 e$ y/ N2 E- X5 I 5.1 a种情况的齿轮自动化设计Program原程序, O/ R4 L% [2 X' s
VERSION
. d! h( C% h+ o8 rREVNUM 23833
: p6 K0 E$ x2 a8 e# f4 j. w6 a: BLISTING FOR PART GEAR_A
3 z, r% {2 j' z; sINPUT$ j/ P( B6 W; E; w z! e P) O
Z1 NUMBER /*齿轮1齿数% T) w3 G+ n- U3 c
"Enter Z1: "
B; D4 A/ ~2 |& }Z2 NUMBER /*齿轮2齿数
9 \) a! P. S1 p6 ?/ q$ B"Enter Z2: ". D# W. Q) |; ^# X( P
M NUMBER /*模数& ~5 p- k, C X% @
"Enter M: "3 j3 C, Y" @1 Q. |! ]) W
X1 NUMBER /*齿轮1变位系数
# F! q \- w% P3 |"Enter x1:"$ n6 c$ h* {, a' ^7 r
X2 NUMBER /*齿轮2变位系数; A& ?- r! e+ h# j; s i
"Enter x2:"8 W9 i2 c) Y6 x
ALPHA NUMBER /*压力角1 @: ^# [/ `8 Z% t! {
"Enter the pressure angle: "
- X/ l9 H3 I3 `- m" u% B7 qGEAR_WIDTH NUMBER /*齿轮宽度
* W0 x" c2 u. l0 S; ^6 t6 ^2 i4 ^0 I8 `"Enter the gear width: "* y) x1 _: C( R4 W" ?
RAD_FILLET NUMBER /*齿槽圆角半径& R* l# L: P7 ?
"Enter rad_fillet:"
" m4 m' E! K0 i# tSHAFT_DIA NUMBER /*轴孔直径& B D) y9 k! z6 r( u" j. k: i
"Enter shaft_dia:"0 t$ j3 D* W# N/ f
KEY_WIDTH NUMBER /*键槽宽度
6 A, K/ k$ j) i4 c2 m"Enter key_width:"8 R9 A" L R4 X' Y3 m1 [9 n2 B/ Z
KEY_HEIGHT NUMBER /*键槽高度4 \+ R+ b7 z: B: \' S
"Enter key_height:"
1 S3 N! [- J9 u3 u3 z, i4 YEND INPUT
+ R! X0 C7 l3 r$ t% HRELATIONS
2 H3 v/ z$ u! P* n2 z: d& v4 ^+ fINVA=TAN(ALPHA)-ALPHA*PI/180
, y" ~! m4 ?5 u# v" r /*标准压力角时的渐开线函数值, ]" h# ^: p5 N0 J* Q) I+ w6 n3 o, m
INVAP=2*(X1+X2)*TAN(ALPHA)/(Z1+Z2)
2 M5 H' N5 R; E5 E) o, p +INVA
& h/ S( v9 V) ]- P; i: w0 ` /*计算啮合角时的渐开线函数值
- R5 a! t7 g) B# H2 g& n- I" ^# p& _$ `# IAP=10
) ^0 r0 v% m$ `6 W9 @ c1 hSOLVE /*解方程程序) R, }: J+ _8 Z% o6 N
INVAP=TAN(AP)-AP*PI/180
) j% Q% n$ j: p0 GFOR AP % q" X& [/ I% M' i
HA=1 /*齿顶高系数
/ s( ~8 p' T( Q: q1 L# ?' H8 YIF M<1 /*径向间隙系数的确定) I1 k$ |9 X7 ^! T% E8 \, U
C=0.35
/ d1 \# |8 l7 i {3 D- D6 l0 g4 d4 fELSE
* m0 s1 {2 F' J: F$ G4 a* u' Q C=0.25# h: D$ ^& u$ k5 Q- ]) A, B
ENDIF
; t* I* e. R! d. R; I" HR1 = 0.5*M*Z1 /*齿轮1分度圆半径" ]- h1 H7 B$ s' ~5 u0 u' a3 |8 W* s
R2 = 0.5*M*Z2 /*齿轮1分度圆半径8 {- S+ _6 m) R" i2 @
D = R1+R2 /*标准中心距# {/ M8 `9 f0 t9 X
RD = D*COS(ALPHA)/COS(AP) $ Z% f. l( F' b) ] W* v
/*实际中心距
8 H- v4 }& ]# K& d! ~' p% VRB1 = R1*COS(ALPHA) /*基圆半径4 a' W1 `1 R+ E1 ]/ W; s
RF1 = R1-M*(HA+C-X1) /*齿根圆半径
& d3 I' B* g" F, g6 \! v! IRA1 = RD-R2+M*(HA-X2) /*齿顶圆半径' |* |" I6 u2 V9 t7 U/ J' C
THICK1 = M*(0.5*PI+2*X1*TAN(ALPHA))) a- r0 j% v, e* q' d8 p5 J6 f
/*分度圆上齿厚(弧长)3 W+ w5 a: X" `! y' F4 C: T5 }
TOOTH_THICK1=THICK1*COS(ALPHA)1 D/ j" R- f# D1 X4 k& y. [& @
+2*RB1*INVA /*基圆上齿厚(弧长)
* J" i0 B" \' M$ W% o, ^4 rANG_TOOTH_THICK1=TOOTH_THICK1/RB1*180/PI /*基圆上齿厚角(度)% \3 R8 q# P# _& W. R- O
D0=RA1 /*内部参数赋值
, v8 m1 h& Z+ s/ T( QD1=GEAR_WIDTH
. R: }" |" e$ a; v: z+ Y2 u2 nD2=360/Z1
+ k% T& X' c; ED3=ANG_TOOTH_THICK1/ ~ u2 V8 R; B/ k
D4=180/Z1
6 N6 f# l# [ M( fD5=RB1
; t2 @3 n2 w! mD13=RF1; e0 a5 N! }, a8 J
D14=RAD_FILLET
) I9 J3 X! z- T! \" N& ED15=360/Z1* e. n) c$ t& T8 ~8 s
P16=Z1
7 ~# _. _' k0 }! I8 P$ F# dD36=SHAFT_DIA3 l6 n. k" @1 ?; M U0 C
D37=KEY_HEIGHT
: v% {/ g6 S3 F3 ?/ m4 x) Q+ S% fD38=KEY_WIDTH
) g6 f& K! h) b1 UEND RELATIONS; \: d* V- M" ]
…………………………
) F3 I' i) K* b! ] B W5.2 b种情况的齿轮自动化设计Program原程序
2 e5 p0 P/ c4 K( A. T9 d' Q& NVERSION
1 R. e' X# f9 vREVNUM 60662# C8 j* l. N. t+ t5 j
LISTING FOR PART GEAR_B9 e* M8 `6 u3 J7 S
INPUT
$ C; x4 J- c, F" i Z1 NUMBER /*齿轮1齿数
2 @" ]! B& o6 u# p "Enter Z1: "
m& T$ y' W1 h" P) W Z2 NUMBER /*齿轮2齿数
/ t" r) z1 z) {0 I1 j$ W2 F( P "Enter Z2: "5 m1 T5 H7 o+ P$ v* x' a
M NUMBER /*模数
7 r! h3 @7 A% o" x1 Z "Enter M: "
% A# B( k; G0 }; \7 ^0 L! [ X1 NUMBER /*齿轮1变位系数
5 ~1 G6 i* H$ Y i9 A "Enter x1:"
?8 K0 P9 l$ o* @ X2 NUMBER /*齿轮2变位系数
7 o7 L" d7 ?! k# A/ @0 Q "Enter x2:"
5 Z( G- z* K2 G6 c ALPHA NUMBER /*压力角) o; I7 ~: ?( Z/ q+ y. ~% N( c9 v
"Enter the pressure angle: "2 e/ P( x* h" u0 V: M. T) E# w+ d9 L
GEAR_WIDTH NUMBER /*齿轮宽度7 q- e& g0 V( Z9 K6 k! n
"Enter the gear width: "8 ~- i6 ?, i1 N. p3 @; |; j' H5 _
RAD_FILLET NUMBER /*齿槽圆角半径
/ {2 l! ~7 j/ W% V8 a "Enter rad_fillet:"
" s& ^$ l& `( A8 ` SHAFT_DIA NUMBER /*轴孔直径* c& q. f* D( a/ I+ S( Y
"Enter shaft_dia:"& {, s$ k& O0 p0 S
KEY_WIDTH NUMBER /*键槽宽度) L5 b7 c- d& V e; E
"Enter key_width:"
; m5 H+ t4 f1 L3 ~ KEY_HEIGHT NUMBER /*键槽高度' X7 P+ x/ q* j" R
"Enter key_height:") V: S! S& a7 X: l
END INPUT
/ I" M: b3 I) f8 H3 \5 q5 o( O/ jRELATIONS
' n9 C6 R J% J/ S" a. p* E. bINVA=TAN(ALPHA)-ALPHA*PI/180
8 G6 V9 s0 K) s; Q /*标准压力角时的渐开线函数值
, h; C2 H( x, c2 ]INVAP=2*(X1+X2)*TAN(ALPHA)/(Z1+Z2)( H) }2 D) A2 c9 o/ t
+INVA
, h6 X) V8 {$ Q- r5 ~2 Y2 q /*计算啮合角时的渐开线函数值 \6 e( o6 v& O& q
AP=107 z' X' X: J% x _7 U
SOLVE /*解方程程序/ ^: R9 O$ s0 L% E3 P. H8 {8 D
INVAP=TAN(AP)-AP*PI/1803 X# N, P8 `* L9 K7 c; j
FOR AP / ?0 A: W3 q& r) J+ C/ ~0 h! m
HA=1 /*齿顶高系数" x4 t' B5 I* s- \- t- s" m8 E
IF M<1 /*径向间隙系数的确定
# `' i( i& a; b) a* G C=0.35# x8 U$ Q k: P. {1 y
ELSE3 D. \% i$ i! o5 h! s# R4 N
C=0.253 x. I, M: e S
ENDIF : `$ w0 `0 q+ R. \
R1 = 0.5*M*Z1 /*齿轮1分度圆半径
6 m5 [+ H% c$ KR2 = 0.5*M*Z2 /*齿轮1分度圆半径5 R- }, v# j: w. F3 [+ {
D = R1+R2 /*标准中心距- }% l4 J5 z7 q+ {6 r
RD = D*COS(ALPHA)/COS(AP) * a0 ~; E K5 [- n7 G. N
/*实际中心距
' Z0 G! _) F1 Q" V* x6 Q _RB1 = R1*COS(ALPHA) /*基圆半径: R" }, Y; M3 n
RF1 = R1-M*(HA+C-X1) /*齿根圆半径8 b$ I4 k) P/ B1 B5 x0 j
RA1 = RD-R2+M*(HA-X2) /*齿顶圆半径( h- R1 t* t7 s5 J, m% ^. M
THICK1 = M*(0.5*PI+2*X1*TAN(ALPHA))
& ^8 t% X& \1 u; a /*分度圆上齿厚(弧长)
( A- I0 r r, C' \7 s" a" ]TOOTH_THICK1=THICK1*COS(ALPHA)) a" C& ^% Z G; U6 g6 O
+2*RB1*INVA /*基圆上齿厚(弧长)
0 q/ n4 B. F: vANG_TOOTH_THICK1=TOOTH_THICK1/RB1*180/PI /*基圆上齿厚角(度): q5 H. q& a6 E) i6 ]- B
D0=RA1 /*内部参数赋值% x) c! U! ?$ Q' z
D1=GEAR_WIDTH c4 W6 d. Y6 }+ f) E* n7 `* U
D2=360/Z19 V; m! {4 b- M, \6 l7 T% b
D3=ANG_TOOTH_THICK16 _* t( _$ s8 r! x F
D4=180/Z1, w4 e; W" j4 r* j3 {
D5=RB1( { {0 [. J* E* j- y
D13=RF1 d3 H' W V2 N/ ~( X
D14=RAD_FILLET
5 Z: T% @! ~2 H/ K; q/ G) j4 qD15=360/Z19 U) u$ T+ M; u7 b! d. o, i: A
P16=Z1
# u5 j( t4 W! Z+ W0 E4 l; hD116=SHAFT_DIA
0 S J2 q9 d$ K7 d/ qD117=KEY_HEIGHT
% }7 z4 u! A6 x. Z' B9 kD118=KEY_WIDTH
5 ?( y. M) @) t5 E8 C1 XEND RELATIONS2 {- J, X a* N5 E. g; C& D# h4 k
…………………… |
|