工程数据的处理方法及CAD程序编制CAD/CAM技术基础在机械设计过程中,常常需要从有关的工程手册或设计规范中查找及检索有关曲线、表格数据,以获得设计或校核计算时所需要的各种系数、参数等。如何将这种人工查找转变成在CAD进程中的高效、快速处理,这就涉及工程数据的处理方法及CAD程序编制技术。目前,在CAD技术中,对工程数据进行处理的方法主要有以下三种:(1)将工程数据转化为程序存入计算机内存;(2)将工程数据转化为数据文件存入计算机外存;(3)将工程数据转化为结构存入数据库。4.3工程数据的处理方法及CAD程序编制公差配合的查询在机械设计中,常用数表形式给出机械零部件的设计参数。设计计算时,需根据给定条件从表格中选取需要的值。在编制机械CAD计算程序的时候,应将数表作程序化处理,以便调用。机械设计过程中所使用的工程技术数表种类很多。通常,按数表中的数据有无函数关系,可分为:数表简单数表列表函数表有计算公式的列表函数表无计算公式的列表函数表按数表的维数,又可分为:数表一维数表二维数表n维数表等4.3.1数表的分类及存取1.数表的分类包角α708090100110120130140Kα0.560.620.680.730.780.820.860.89表4-1包角系数Kα一维数表表4-2V带长度系数KL二维数表在CAD作业中,进行工程数表存取的一般原则如下:■数据存入计算机的形式应考虑到检索的方便,通常将数据按一定规则进行排列,然后存入数组。■一维数表采用一维数组进行存储。■二维数表采用二维数组进行存储。■查取数据时用逻辑判断语句进行比较,检索出所需要的数据。(1)一维数表的存取现以例4-1为例说明一维数表的存取方法。例4-1一平键联接中的平键基本尺寸数据如表4-3所示,试编写程序根据轴径d查取相应的键宽b和键高h。2.数表的存取表4-3平键尺寸与轴径关系(摘自GB1095-79)规格(i)轴径d(mm)b(mm)h(mm)规格(i)轴径d(mm)b(mm)h(mm)0自6~822522~308718~1033630~38108210~1244738~44128312~1755844~50149417~2266950~581610解:根据表中轴径d检索键宽b和键高h尺寸时,首先需要判断轴径d所在的范围。根据数表的这一特点,在程序中存储该数表时,可用两个一维数组b[10]和h[10]分别存储键宽和键高的值,再用另一个一维数组d[11]存储轴径的范围界限值。在CAD作业中,当需要检索键宽和键高时,先用条件语句判断轴径d所在的范围,在此范围内便可检索出键宽和键高的数据值。依据这一思想,实现表4-3的数表存取的程序编写如下:/*chp4_01.c*/#includestdio.hmain(){staticfloatd[11]={6.0,8.0,10.0,12.0,17.0,22.0,30.0,38.0,44.0,50.0,58.0},b[10]={2.0,3.0,4.0,5.0,6.0,8.0,10.0,12.0,14.0,16.0},h[10]={2.0,3.0,4.0,5.0,6.0,7.0,8.0,8.0,9.0,10.0};floatdd,bb,hh;inti;puts(Pleaseinputd=?\n);scanf(%f,&dd);if(ddd[0]||ddd[10]){puts(Thedataisoutoftherange!\n);exit(1);}for(i=0;i10;i++)if(dd=d[i+1]){bb=b[i];hh=h[i];printf(b=%f,h=%f\n,bb,hh);exit(2);}}现以例4-2为例说明二维数表的存取方法。例4-2表4-2所示为V长度系数KL,如果V带的截面型号为A型,内周长度为560mm,试编写程序在该表中查取相应的长度系数KL。解:对本例二维数表,首先需给资料名称加注序号,即给数表的行和列加注序号:在行向加注序号i=0~31(共32种内周长度),在列向加注序号j=0~6(共7种V带类型)。然后就可以定义一个二维数组将数表中的数据存入计算机。在查表时,只要给出其数据的位置序号(i,j),即可检索到对应的数据值。对于本例,即A型截面所对应的列序号为j=1,内周长为560mm所对应的行序号为i=2,查取的V带长度系数KL的程序如下:(2)二维数表的存取序号j0123456i截面型号OABCDEF内周长度(mm)04500.8915000.9125600.940.80..................2911501.123014001.153116001.18表4-2V带长度系数KL/*chp4_02.c*/#includestdio.hmain(){staticfloatkl[32][7]={{0.89,100.0,100.0,100.0,100.0,100.0,100.0},{0.91,100.0,100.0,100.0,100.0,100.0,100.0},{0.94,0.80,100.0,100.0,100.0,100.0,100.0},..................}};inti,j;floatkl1;i=2;j=1;kl1=kl[i][j];if(fabs(kl1-100.0)1.0e-6)printf(THEDATAOUTOFTHETABLE!);elseprintf(kl=%f,kl1);}对于数表中出现的空格,应在存入计算机时用一个适当的有别于数表中其它数据的数字来代替,并在程序中使用判断语句进行检查。在本例程序中使用数字“100.0”来代替空格,并使用判断语句:“if(fabs(kl1-100.0)1.0e-6)……”来检查是否出现空格。例1.普通V带型号及截面尺寸六个实例inti;floatb[7]={6.0,10.0,13.0,17.0,22.0,32.0,38.0};floath[7]={4.0,6.0,8.0,11.0,14.0,19.0,25.0};floatbp[7]={5.3,8.5,11.0,14.0,19.0,27.0,32.0};用户给定i=2(即A型),则程序可以立即查出:b[2]=13.0,h[2]=8.0,bp[2]=11.0特点:一个非数值型自变量。所查的值为离散型数据。方法:利用一维数组和一个整型变量。例2.平键和键槽的剖面尺寸特点:根据计算结果确定范围。方法:利用一维数组和判断语句来编程实现。例3.包角影响系数K2特点:自变量和需要查的值均为连续值。方法:利用一元插值函数。例4.齿轮传动工况系数KAfloatKA;inti,j;floatKK[3][3]={{1.0,1.25,1.75},{1.25,1.5,2.0},{1.5,1.75,2.25}};特点:两个离散型自变量和一个离散型函数值。方法:利用二维数组。r/dD/d6.03.02.01.501.201.101.051.031.021.010.042.592.402.332.212.092.001.881.801.721.010.101.881.801.731.681.621.591.531.491.441.360.151.641.591.551.521.481.461.421.381.341.260.201.491.461.441.421.391.381.341.311.271.200.251.391.371.351.341.331.311.291.271.221.170.301.321.311.301.291.271.2261.251.231.201.14例5:轴肩圆角处理论应力集中系数特点:两个自变量是连续值。方法:利用二元插值函数。例6.单根V带的基本额定功率PI特点:三个离散型自变量。方法:利用三维数组。线图是函数关系的一种常用表示方法。线图的特点是鲜明直观,并能清楚地表示出函数的变化趋势及规律。因此,在工程设计资料中,很多参数间的函数关系是用线图来表达的。但在CAD作业中,目前尚不能直接对线图进行编程,因此必须对它进行相应的处理,才能实现对参数图存储和自动检索的目的。1.线图的类型根据线图中数据的来源,线图可分为两类:线图有计算公式的线图区域图无计算公式的线图直线图曲线图4.3.2线图的分类及处理为了CAD作业需要,进行线图程序化处理的方法有以下几种:►线图数表化处理(将线图整理成数表);►线图公式化处理(建立出线图的解析式);►曲线拟合处理(建立出线图的近似式)。在线图的处理方法中,可分如下几种:1)有计算公式线图的处理2)无计算公式线图的处理(1)线图的数表化处理(2)线图的公式化处理①直角坐标系直线图的公式化处理;②对数坐标系直线图的公式化处理;③区域图的处理。2.线图的处理有些线图所表示的各参数之间关系原本就有计算公式,但为了设计人员工作时查取方便,将计算公式绘制成为线图,如图4-2。对于这样的线图,在CAD作业时,应在CAD计算程序中可直接使用公式进行计算。ββcosZ图4-2螺旋角参数Zβ1)有计算公式线图的处理(1)线图的数表化处理线图的数表化处理就是将线图离散化为数表,然后再用4.3.1节中所述方法加以处理。以在CAD作业时,供进行数据检索。例如,表4-4就是图4-3离散化后形成的数表。图4-3蜗轮的齿形系数Y2(变位系数ζ=0,α=20°,ha=1)2)无计算公式线图的处理表4-4蜗轮的齿形系数Y2(变位系数ζ=0,α=20°,ha=1)进行线图公式化处理,对不同类型的线图有不同的处理方法:►对有计算公式的线图,可直接将公式编入程序;►对直线图可将其图形转化为线性方程,再编入程序。而直线图通常又分如下三种情况:●直角坐标直线图●对数坐标直线图●区域图具体处理方法如下:(2)线图的公式化处理如图4-4所示是齿轮强度计算时所用到的动载系数Kv的线图,横坐标为:VZ1/100,纵坐标为:Kv。包括直齿轮和斜齿轮共有16条直线分别代表不同精度等级下的函数关系。①直角坐标系直线图的公式化处理对于该线图若用数表化处理,则要转化为16个一维数表或2个二维数表,不仅数据量很大,而且还要占用较多的计算机内存。对此,可通过取直线上任意两点的坐标值来求其斜率,从而写出直线方程式。若已知直线上任意两个点坐标,则该直线方程为:1122(,)(,)xyxy、211121()()yyyxyxxxx直齿轮斜齿轮图4-4动载荷系数Kv(4-1)对于Kv线图,则可表示成:2111111211()100100100100vvvvKKVZVZKKVZVZ21vvKK、1211100100VZVZ、式中:为直线上任意两点的纵坐标值;为该两点的横坐标值。因此,对图4-4上每一条直线选取其上任意两点的坐标值,带入上式,便可列出直线方程,利用该方程便可计算出任意VZ1/100的动载系数Kv值。利用上述方法,图4-4中的16条直线,可变换为16个直线方程。②对数坐标系直线图的公式化处理在机械设计资料中,常会遇到对数坐标直线图,如图4-5所示。图4-5弯曲强度的寿命系数YN若已知对数坐标系下直线上的任意两点的坐标:211121lglglglg(lglg)lglgyyyyxxxx1122(lg,lg),(lg,lg)xyxy令211121lglglglg(lglg)lglgyycyyxxxx则10cy(4-2)其对数坐标的直线方程可以表示为:对于图4-5所示的齿轮弯曲强度寿命系数YN的每一条直线,只要给出其两任意点的坐标,即可列出它的直线方程式:211121(lglg)lglg(lglg)(lglg)NNNNYYYYNNNN将图中某一直线任意两点的坐标值(N1,YN1),(N2,YN2)及要求取寿命系数YN的应力值次数N带入上式,并令:211121(lglg)lg(lglg)(lglg)NNNYYcYNNNN令10cNY这样就可用程序语言把Y