您好,欢迎访问三七文档
当前位置:首页 > 机械/制造/汽车 > 机械/模具设计 > 2.1数表cadcam
第页12.1数表的计算机处理【上页】【下页】【返回】【结束】【首页】2.1数表的计算机处理2.1.1数表的程序化2.1.2数表的文件化第页22.1数表的计算机处理【上页】【下页】【返回】【结束】【首页】数表的分类数据彼此间存在函数关系的表格。例如,普通V带传动的包角系数表。常数数表列表函数数据彼此间没有函数关系的表格。例如普通V带传动的弯曲影响系数表和链轮轴孔最大直径表。公式化处理数组赋值法按数据间有无函数关系分第页32.1数表的计算机处理【上页】【下页】【返回】【结束】【首页】按数表的维数分所要检索的数据只与一个变量有关。例如普通V带传动的弯曲影响系数表。一维数表所要检索的数据与两个变量有关。例如链轮轴孔最大直径表。二维数表多维数表所要检索的数据与两个以上的变量有关。例如单根V带许用功率值表。(教材57页)数表的分类几维数表就用几维数组第页42.1数表的计算机处理【上页】【下页】【返回】【结束】【首页】2.1.1数表的程序化常数数表程序化的主要内容是数表的输入和简单检索。即将数表的数据存储到数组中,再用循环和判断语句将已知参数和数组的元素值进行比较,找到相对应的数组元素的下标,即可获得正确的查询结果。一维数表用一维数组存储,二维数表用二维数组存储,依次类推。如果常数数表的数据量较大,或需要共享的数表,则用存入数据文件或数据库的方法。第页52.1数表的计算机处理【上页】【下页】【返回】【结束】【首页】例1、计算机处理V带传动的弯曲影响系数表。写成语句如下:用i=0-7代表带型,kb[7]用来存储表中的数值。在程序中,若前面计算已得带型为B,则相应的i=3,弯曲影响系数为kb[i]即kb[3]=2.65e-3mm。带型第页62.1数表的计算机处理【上页】【下页】【返回】【结束】【首页】例2、将V带型号及断面尺寸表程序化。第页72.1数表的计算机处理【上页】【下页】【返回】【结束】【首页】检索V型带的C语言程序#includestdio.hmain(){inti;floata[7]={10.0,13.0,17.0,22.0,32.0,38.0,50.0};floath[7]={6.0,8.0,10.5,13.5,19.0,23.5,30.0};floata0[7]={8.5,11.0,14.0,19.0,27.0,32.0,42.0};floaty0[7]={2.1,2.3,4.1,4.8,6.9,8.3,11.0};while(1){scanf(“请输入V带型号(0,1,2,3,4,5,6):%d”,&i);if(I=0&&I=6){printf(“您查找的V带顶宽为%f,断面高为%f,节宽为%f,节高为%f”,a[i],h[i],a0[i],y0[i]);break;}elseprintf(“您所输入的V带型号不对,请重新输入!”);}}说明i表示V带型号;a[7]存储V带的顶宽;h[7]存储V带的断面高;a0[7]存储V带的节宽;y0[7]存储V带的节高.第页82.1数表的计算机处理【上页】【下页】【返回】【结束】【首页】doublesk(doublei){intn;doublesi[5]={1.0,1.04,1.19,1.49,2.95};doubleski[5]={1.0,1.03,1.08,1.12,1.14};if(isi[0]){printf(“传动比在范围之外!\n);Return(0);}elseif(isi[4])return(ski[4]);elsefor(n=0;n5;n++)if(i=si[n+1])Return(ski[n]);}例3、对下表所示传动系数表程序化该表程序化时要先判断。第页92.1数表的计算机处理【上页】【下页】【返回】【结束】【首页】2.1.2数表的文件化数表文件化即将数据按指定的文件名以一定的格式存放在外存中,需要时,指出文件名,用命令语句将所需的信息从外存中取出,送入内存,供程序使用,若数据用毕,还可将它们送回外存,不再占用内存。适用于数表很大,数据需要共享,以及表中数据可能发生变化的情况。数表文件化处理,可使程序简练,使数表和应用程序分离,实现数表的共享。早期的CAD系统多采用数据文件来存储数据。第页102.1数表的计算机处理【上页】【下页】【返回】【结束】【首页】例:为数表建立数据文件*#includestdio.h#defingenum14Structkey_gb{Floatd1,d2,b,h,t,t1;}key;Main(){inti;FILE*fP;If((fp=fopen(“key.dat”,”w”))==NULL{printf(“can’topenthefile”);Exit();}For(i=0;inum;i++){printf(“record%d:d1,d2,b,h,t,t1=“,i);Scanf(“%f,%f,%f,%f,%f,%f”,&key.d1,&key.d2,&dey.b,&key.h&key.t,&key.t1);fwrite(&key,sizeof(structkey_gb),1,fp)}fclosefp;}将该程序编译、连接,然后运行,逐行输入各记录数据项,便在磁盘上建立了名为“key.dat”的数据文件。第页112.1数表的计算机处理【上页】【下页】【返回】【结束】【首页】例:检索数表的程序#includestdio.h#defingenum14Structkey_gb{Floatd1,d2,b,h,t,t1;}key;Main(){inti;FILE*fP;while(1){printf(“inputtheshaftdiameterd=”);scanf(“%f”,&d);if(d8&&d=85)break;Elseprintf(“thediameterdisnotintherange,inputagain!”);}第页122.1数表的计算机处理【上页】【下页】【返回】【结束】【首页】If((fp=fopen(“key.dat”,”r”))==NULL{printf(“can’topenthefile”);Exit();}For(i=0;inum;i++){fseek(fp,i*sizeof(structkey_gb),0);fread(&key,sizeof(structkey_gb),1,fp);if(dkey.d1&&=key.d2)printf(“thekey:b=“%f,h=%f,t=%f,t1=%f”,&dey.b,&key.h&key.t,&key.t1);break;}}fclosefp;}第页132.1数表的计算机处理【上页】【下页】【返回】【结束】【首页】平键和键槽尺寸第页142.1数表的计算机处理【上页】【下页】【返回】【结束】【首页】V带弯曲影响系数kbkb[0]kb[1]kb[2]kb[3]kb[4]kb[5]kb[6]——假设前面设计已选定B型带,则后续程序中将kb[3]编入相应的语句。——在程序中,只要给定普通V带型号的代码即数组元素的下标,即可通过数组元素检索到相应的弯曲影响系数,并参与运算。第页152.1数表的计算机处理【上页】【下页】【返回】【结束】【首页】11131517192123258.009.52512.70┆101118┆131522┆162028┆202434┆252941┆283347┆313751┆344257┆链轮轴孔最大直径dmax表ZP第页162.1数表的计算机处理【上页】【下页】【返回】【结束】【首页】α90o100o110o120o125o130o135o140o145o150o155o160o165o170o175o180ok20.590.740.780.820.840.860.880.890.910.920.930.950.960.980.991.00普通V带传动的包角影响系数表α第页172.1数表的计算机处理【上页】【下页】【返回】【结束】【首页】随机读写与fseek()函数所谓随机读写是指,读写完当前数据后,可通过调用fseek()函数,将位置指针移动到文件中任何一个地方。1.用法:intfseek(文件指针,位移量,参照点);2.功能:将指定文件的位置指针,从参照点开始,移动指定的字节数。(1)参照点:用0(文件头)、1(当前位置)和2(文件尾)表示。(2)位移量:以参照点为起点,向前(当位移量0时)或后(当位移量0时)移动的字节数。在ANSIC标准中,要求位移量为longint型数据。第页182.1数表的计算机处理【上页】【下页】【返回】【结束】【首页】读写数据块函数fread()和fwrite()函数,一般用于二进制文件的处理。intfread(void*buffer,intsize,intcount,FILE*fp);intfwrite(void*buffer,intsize,intcount,FILE*fp);fread()──从fp所指向文件的当前位置开始,一次读入size个字节,重复count次,并将读入的数据存放到从buffer开始的内存中;同时,将读写位置指针向前移动size*count个字节。其中,buffer是存放读入数据的起始地址(即存放何处)。fwrite()──从buffer开始,一次输出size个字节,重复count次,并将输出的数据存放到fp所指向的文件中;同时,将读写位置指针向前移动size*count个字节。第页192.1数表的计算机处理【上页】【下页】【返回】【结束】【首页】文件的打开──fopen()函数1.用法:FILE*fopen(文件名,操作方式);2.功能:返回一个指向指定文件的指针。3.函数原型:stdio.h。“文件名”是指要打开(或创建)的文件名。如果使用字符数组(或字符指针),则不使用双引号。“操作方式”:r—为读打开一个文件;w—为写打开一个文件。A—向文件尾添加数据。r+、w+、a+—为读写打开一个文件。如果不能实现打开指定文件的操作,则fopen()函数返回一个空指针NULL。第页202.1数表的计算机处理【上页】【下页】【返回】【结束】【首页】文件的关闭──fcolse()函数1.用法:intfclose(FILE*文件指针);2.功能:关闭“文件指针”所指向的文件。如果正常关闭了文件,则函数返回值为0;否则,返回值为非0。例如,fclose(fp);/*关闭fp所指向的文件*/第页212.1数表的计算机处理【上页】【下页】【返回】【结束】【首页】第页222.1数表的计算机处理【上页】【下页】【返回】【结束】【首页】例2、计算机处理链轮轴孔最大直径dmax表。写成语句如下:inti,j;floatdmax[12][8]={{10,13,16,20,25,28,31,34},{11,15,20,24,29,33,37,42},{18,22,28,34,41,47,51,57}……};用i=0-11代表不同的节距,j=0-7代表不同齿数,dmax[12][8]用来存储表中的数值。在程序中,若前面计算已得p=12.70、z=19,则相应的i=2、j=4,链轮轴孔最大直径为d[i][j]即d[2][4]=41mm。节距齿数
本文标题:2.1数表cadcam
链接地址:https://www.777doc.com/doc-3197834 .html