
机械零件设计的C语言编程.doc
6页机械零件设计的C语言编程摘要:介绍机械零件设计的编程特点及其c语言处理关键词:机械零件设计:C语言编程机械设计是一个“设计一评价一再设计”的反复选代、不断完善的过程传统的人工设 计周期长,不能适应激烈竞争的市场经济需要CAD技术的岀现,缩短了设计周期、提高了 设计质量、降低了设计成本本文就运川c语言进行机械零件设计作了探讨1. 机械零件没计计算程序的特点用计算机对机械零部件进行设计计算与计算机演算复杂的数式不同,前者要涉及许多特 殊问题:(1>数表和线图的程序化及检索问题这一问题涉及到怎样把数表和线图输人计算机、怎样检索数表和线图的数据以及怎样用 插值法求数表中所没有的数据2>设计参数的处理问题这一问题涉及到计算机怎样对各种机械零部件的设计参数根据具体情况进行合理的处 理例如:齿轮传动中,要把计算出的模数取为标准值,齿数取为整数等3)设计方案的校核和处理问题这一问题涉及到怎样由计算机对各种机械零部件的设计进行校核;当校核不合格时.又 怎样通过程序进行自动处理或者用人机对话的方法来处理2. 机械零件设计的C语言编程2.1数表的程序化工程技术巾的W题通常是很复杂的,有很多问题往往很难 用理论公式來表示,而是制成数表來表示。
K面通过两个例子來 说明数表程序化的方法例1.试编写A型普通平键(如图2.1.1)的数表和检索程 序⑴键长系列用数组形式表示 ffi 2.1.1为了便于识别和记忆,把键长变量命名为L键长系列如表 2.1.1所示这样同一个变g:名就有19个数值若给每个L数值一个序号,则有19个序号, 序号也是变釐,令其变董名为I,那么键长系列就是一组下标变S的值:表2.1.1.键长系列L[0]=20, L[ 1]=22,…,L[18]=160这样就把它写成了数组形式若制成表 如表2.1.2所示具体程序如下:恵01234567囂I.III2022252S3236404919101里1213141S1617)81411566570M)90100110125140160表2.1.2用下标变从表示的性长系列键长L20,22,25,28,32,36,40,45,50,56,63,70,80,90100,110,125,140,160intdata[19]={20, 22, 25,…,160}, L[19]z i; for(i=0; l<=18; 1++){L[l]=data[l]; }}(2)用条件语句检索标准键长。
设按挤压强度确定的计算键为L1,则实际键长LL=LI + B可用条件语句将其圆整为 标准值:if(LL<=L[I]){LL= L[I];break ;}如在程序的输人语句中提供键长值,那么检索标准键长的完整程序如下:{inti, L[19],LL;int data[ 19]={ 20, 22, 25,...160};scanfp%d", &LL);for(l=0; l<=18; i++){L[l]=data[l];If (LL <=L[I] {LL=L[I]; break; }}}例2.试编写A型普通平键的基本尺寸数组及检索程 序表2. 1.3是A型普通平键基本尺寸表此表与 表2.1.1不同在于:① 某一范围的轴径只有一个键宽值因此,在 查找对应于某一轴径的b和h吋,先要判定轴径在 哪个范围,然后才能检取相应的b和h;② 检取的数值有b和h两项1>确定程序变:名,写成数值形式,并赋值用d, b, h分别作为轴径、键宽和键高的程序变 量名,I为序号变量名{intd[ 13], b[13], h[13], IJ=0; int data[40]={ 8, 2, 2,10, 3, 3, 12, 4, 4,— , 85,22,14 );for (1=0; I<=12;1++){d[l]=data [ j++]; b[l]=data [ j++]; h[l]=data [ j++];}轴的直径d键宽b键高h白6〜822>8-1033>10 〜1244〉12 〜1755〉17 〜2266〉22 〜3087〉30 〜38108〉38 〜44128〉44 〜50149>50—581610>58—651811〉65 〜752012>75 〜852214表2.1.3 A型普通平键的基本尺-、r(2)设实际轴径为dd,首先用条件语句判定轴径的界限,然后再检取键宽bb,键高hh。
if(dd<=d[l]) {bb=b[l];hh=h[l]; }(3)应当指出,当实际轴径d超出表1.3的范围时,不能使用该程序段可以用两个条件语句 来限定:if (dd <6) exit (0); if (dd〉85) exit (0);完整程序如下:int b J=0z dd, bb, hh, d [ 13 ], b[13], h[13];int data[40】={8, 2, 2,…,14};scanf("%d", &dd);if(dd <6) exit⑼;if(dd> 85) exit(0);for(l=0;l<=12;l++){ d[l]=data [j++]; b[l] =data[j++]; h(i)=data [j++]; if (dd<=d[l]> { bb=b(l]; hh = h[l]; break;}}2. 2线图的程序化在机械设计资料中,参数间的关系也常用线阁来表示,在编制程序时必须将线阁程序化线图程序化的方法:① 把线图公式化② 先把线图变换成相应的数表,然后用以上的方法将它以数组形式程序化这里涉及了函数插值问题2.2.1线阁公式化在机械设计中,考虑到手工计算费时较多,为了提高设计效率,常常把复杂的计算 I公式变换成线图或数表直接查取有关数据。
但在计算机计算时,为了发挥其高速进行大量运算的优点,在进行程序设计时,则应尽可能地把线图或数表公式化,凡是原来有公式的,就应尽量利用原有公式,而不用线图或数表对原來没有公式的线图和数表,如能推算出计算公式或适当简化后能求出其近似的计算公式时,都应该用公式来代替优质碳素钢(钢质 > 的试验齿轮的齿根接TOO600300400优质礦聚锏调质成正火齿形系敵触疲劳极限如图所示为便于计算机直接计算而公式化该直线的方程式(点斜式)为:^Hlim = ^Hliml + ^Hlim2 —^Hliml)* (HB一HB!) / (HB〗一 HB!)=470+(545^70) *(HB — 150) / (280—150) = 470 + 0. 58*(HB — 150)2.2.2函数插值有些函数关系也可用数表来表示用数表表示的函数只能给出结点Xo,Xb ... Xi-j,..., Xno对应函数值有不在结点上的函数值,当精度要求较低吋,可检取 相近结点上的函数值来近似;当精度要求较高时,就要川插值方法來处理一般常川一次插 值法,没X为乂^和巧,之间的任意点,其函数值Y应在Yhl和\之间,则:Y = YH+(Yj —Yp)*(X — XH)/(Xj — XH)例1.试编写如图所示渐开线齿轮的齿形系数检索程序。
所制成的表见表2.2.2.取Z.Y分别为齿数Z.齿形系数Y;的程序变量名,N为序号变量名渐开线齿轮的齿形系数检索程序如下:main()int n,j=0, ZZ,Z[13],flag=l; float YY,Y[ 13];float data [ 30 ]={ 17, 3.08, 19,-, 2. 1}; scarf(“%d", &ZZ); if (ZZ<=17) {YY=3.08;flag=0;}if(ZZ>=400) {YY=2. l;flag=0;}if (flag){for (n=0; n<=12;n++){Z[n]=data [ j++];Y[n]=data [j++]; if (ZZ==Z[n]) {YY=Y[n];goto Loop;} if(ZZ 2) 三角带根数Z取为整数,可用Z二(int) (Z — 0.1)+1语句來实现例当 Z=l.l 时,圆整为 Z=(int)(l.l-0.1)+l=l+l=2;当 Z=1.09 时,圆整为 Z 二(int) (1.09 — 0.1)+1=0+1=1⑶齿轮中心距a圆整为尾数为或5,可用a=5* (int)((a+2)/5)语句来实现 例当 a=42 时,圆整为 a=5*(int)((42+2)/5)=5*8=40 ;当 a=43 时,圆整为 a=5*(int)((43+2)/5)=5*9=45o。












