|
发表于 2007-4-22 16:03:31
|
显示全部楼层
来自: 中国四川资阳
抛砖引玉-用表达式搞定两端磨平的弹簧
在工作中实测一弹簧的参数为:两端磨平后自由高度H=195.5,簧径d=φ5.8(标准尺寸只有φ5.5和φ6,取d=φ6),大径(外径)D=φ80,并紧-两端各一圈,节距=46.5-6=40.5;在Ug NX4中建模过程如下:
$ U4 X. ~& j2 G7 z# \6 s一. 依次选:主菜单【工具】→【表达式】,采取逐行输入的方式将下述表达式录入,或者按照下面格式建立文本文档,并将其后缀名改为exp,在【工具】→【表达式】中选择“从文件中导入表达式文件”,选中建立好的“*.exp”文件。0 C) j! _. t X4 N
注意事项:在录入表达式时,必须注意选择(定义)好每个参数的量纲,否则容易出现单位不匹配的错误提示,每种参数的定义和单位在UG中有自己的定义,可在表达式选项中查询。下面的输入中,后面汉字为注解,可不录入。
, [: F$ Z) _% ^4 b# |% Z( mMiddle_coils=4.75 定义弹簧中间有效圈数,无量纲常数0 @1 x0 |9 r H c9 R
[mm]wire_dia=6 定义弹簧簧径,长度,单位mm
7 l4 N$ R7 W2 u( I* M. O6 j[mm]closed_height=wire_dia+0.01 定义闭合高度,并考虑并紧处有0.01mm间隙,长度,mm. H1 ?. V7 N/ \4 Q
dir=1 定义一个常量,用于表达式控制螺旋旋向,无量纲
: w4 b2 `* ]. P8 P[mm]free_length=195.5 定义自由高度,长度,mm;特注:两端不磨平,此自由高度=实际自由高度,
9 _' r6 O/ |) Z- f: }7 m0 V 两端要磨平则此自由高度=实际自由高度=+簧丝直径wire_dia(假设簧丝末端* R A- p& v" p/ _- |" s% l
磨平至簧丝直径一半,如不是则另行换算)
( ~* e) X7 S6 F( ?[mm]outer_dia=80 定义弹簧外径,长度,mm2 H2 {( U& C& R" a. l
total_coils=6.75 定义弹簧总圈数,无量纲常数
0 `- E5 _0 F: P- s# Y" `" W' C[mm]height=free_length-wire_dia-closed_height*2 中间有效圈数对应的高度,长度,mm
5 O4 v6 l' W2 k4 F( G[mm]pitch=height/Middle_coils 中间有效圈数对应的节距,长度,mm* I+ f5 b! J! I0 S& H0 d
exp=(pitch/closed_height*(total_coils-Middle_coils)/2) 指数,无量纲常数,用于建立两端并紧段的Z坐标规律
7 k8 V% p* W: ?2 @7 } |! c[degrees]angle=360 定义一个计算系数,实质上是指明每1圈对应360°,角度,°; q& Z5 p% p0 k3 B# r1 S3 H8 Q
[degrees]angle_offset_init=(total_coils-Middle_coils)/2*angle 单边并紧端对应角度,°5 [* g8 }+ V! I! g0 R
[degrees]angle_offset=(total_coils-trnc(total_coils))*angle 非整圈对应角度,°- e" P+ r, T6 e: i$ l
[mm]radius=(outer_dia-wire_dia)/2 弹簧中径的半径,实际就是扫掠螺旋线的半径,长度,mm0 ?9 O. G+ q; P/ [+ d
t=1 定义一个规律常数,无量纲1 V7 p3 s* ]; R5 N
[mm]xt=cos(dir*angle*Middle_coils*t+angle_offset_init)*radius 中间螺旋段X规律,mm
/ [2 [! k9 } ?' M4 T[mm]xt1=cos(dir*angle*(total_coils-Middle_coils)/2*t)*radius 上部螺旋段X规律,mm
9 u+ V4 T' X [8 v- R* q' d t' ?[mm]xt2=cos(-dir*angle*(total_coils-Middle_coils)/2*t+angle_offset)*radius 下部螺旋段X规律,mm $ R$ Q4 ~3 ]- o/ A
[mm]yt=sin(dir*angle*Middle_coils*t+angle_offset_init)*radius 中间螺旋段Y规律,mm i( I( L" J+ X" y# O
[mm]yt1=sin(dir*angle*(total_coils-Middle_coils)/2*t)*radius 上部螺旋段Y规律,mm ! X& y5 \4 x1 U0 W1 Q4 |
[mm]yt2=sin(-dir*angle*(total_coils-Middle_coils)/2*t+angle_offset)*radius 下部螺旋段Y规律,mm
W% y% l1 W3 m. [( M" X$ a' |6 n[mm]zt=t*height+closed_height+wire_dia/2 中间螺旋段Z规律,mm
6 d( H* r4 p( u! n6 Y[mm]zt1=(t^(exp)*closed_height)+wire_dia/2 上部螺旋段Z规律,mm % u: e' k3 ^8 q1 j7 P- V9 y/ \
[mm]zt2=(-t^(exp)*closed_height)+height+closed_height*2-wire_dia/2 下部螺旋段Z规律,mm9 ?1 A: G* _5 h0 `6 _; s2 f
二. 依次生成各段螺旋曲线" h0 D/ D2 j6 u/ s
1. 生成中间段螺旋曲线:【曲线】→【规律曲线】:选【根据方程】,将会出现以下选择与操作3 T$ L) }% u5 W7 r5 I8 w G7 ~
规律曲线t,默认,点确定→出现“定义x”,系统默认xt,点确定→回到规律曲线选择方式介面,仍然选【根据方程】→规律曲线t,默认,点确定→出现“定义y”,系统默认yt,点确定→回到规律曲线选择方式介面,仍然选【根据方程】→规律曲线t,默认,点确定→出现“定义z”,系统默认zt,点确定;上述操作完成后,出现曲线定位方式的介面,选择“点”构造器,选“重置”,点“”确定“确定”,生产中间段的螺旋线;
D# k C' g3 x: G5 P2. 生成上部(+Z最大端)螺旋曲线:操作过程与上面相同,但是在定义x、y、z的时候要将系统默认的“xt、yt、zt”对应改为“xt1、yt1、zt1”,然后在定位曲线时仍然选择点构造器,定位点为(0,0,0)
3 Y7 `7 i: ]$ q) `# n3. 生成下部(+Z最小端)螺旋曲线:操作过程与上面相同,但是在定义x、y、z的时候要将系统默认的“xt、yt、zt”对应改为“xt2、yt2、zt2”,然后在定位曲线时仍然选择点构造器,定位点为(0,0,+wire_dia);: g) S. k2 o ~! h$ A8 B
三. 生成实体弹簧:【插入】→【扫掠】→【管道】,或者通过选择成形特征工具栏的管道命令来操作,出现介面,选择外直径后面的下拉箭头,并选择“公式”,进入到表达式列表中,选中“wire_dia”双击确定退出表达式列表,输出类型选多段,点确定,选中上面做出来的螺旋曲线即可生成实体弹簧。
8 G1 v, `( {, s7 Q, f* x }& ^四. 两端截去多余部分,以生成磨削平面" b" A- w0 r4 H+ c
1. 下部(+Z最小端)螺旋截面:选建立基准平面,在其中选择固定方法,并选择X-Y平面,方向为+Z向,偏置距离为+wire_dia/2(即过这端螺旋线端点),建立好基准平面;【插入】→【裁剪】→【修剪体】,目标体选择实体弹簧,修剪方式选平面并选中刚才建立的基准面,修剪方向为-Z向,偏置距离为0,确定即可;
0 X; K% K5 N) j7 n( m/ L9 T+ F2. 下部(+Z最小端)螺旋截面:选建立基准平面,在其中选择固定方法,并选择X-Y平面,方向为+Z向,偏置距离为实际自由高度(即过这端螺旋线端点),建立好基准平面;【插入】→【裁剪】→【修剪体】,目标体选择实体弹簧,修剪方式选平面并选中刚才建立的基准面,修剪方向为-Z向,偏置距离为0,确定即可;
- ~# x/ G& F9 E3 N; L+ ?/ h# Q0 s8 U4 K, Y2 m3 t; @9 v4 v2 y
注:按上述方法建立起弹簧实体模型后,以该文件做为模板备用,另存后,只需改动弹簧参数,即可得到不同的弹簧,但是有可能压缩(受载)端(即+Z方向端)的截面要重新进行修改。把零件复制到装配图中,将高度参数减去一个压缩变形量即可,同样这一端的截面要进行修改。对于末端不需磨平的弹簧就更简单了。 |
|