1、第2章 机械设计数表处理 第2章 机械设计数表处理 2.1 非函数表处理非函数表处理 2.2 函数表处理函数表处理 2.3 数值处理数值处理 习习 题题第2章 机械设计数表处理 为了便于编写计算机查询程序,可将数表进行分类。按数表中数据之间是否具有客观的连续函数关系,分为两大类型。数据之间存在连续函数关系的数表称为函数表,如V带传动中,小带轮的包角1与包角系数k1的关系表;否则,则称为非函数表,如V带的型号与V带截面尺寸的关系表。函数表可以使用插值法或拟合公式获得表中未列出的数据,非函数表则不能。第2章 机械设计数表处理 查询数表的基本思路是,用某种方法把数表的数据存储到数组中,再用循环语句和
2、判断语句将已知参数(即输入参数)和数组的元素值进行比较,找到匹配或相对应的数组元素的下标,做一些相应的必要处理,即可获得正确的查询结果。进而,根据处理程序中必须使用的数组的最高维数,还可以把数表分为一维数表、二维数表、三维数表等多种类型。此外,还可以根据数表中数据是否规则排列,分为规则数表和不规则数表。对于不规则数表,应作必要的手工“预处理”使之规则化,比如把数表拆分、把数据重新排列、增删一些数据等等,以便于程序的编写。数表类型列于表2-1中,供读者参考。第2章 机械设计数表处理 表表2-1 数数 表表 分分 类类 第2章 机械设计数表处理 把数据存储到数组中是编写数表处理程序时需要解决的一个
3、基本问题。根据数表中的数据量和使用的编程语言不同,可以灵活采用不同的解决方案。若用Visual Basic 6.0语言编程,如果数据量不大,比如数据不超过400个,比较简捷的方法是用array()函数构建一维数组,还可通过构建一维数组,再把一维数组的数据用循环语句赋给二维数组、三维数组 的方法构建多维数组。如果数据量太大,用array()函数构建一维数组将受最大换行数的限制,则可把数据事先用手工写入文本文件并存入磁盘中,在程序运行中通过文件操作把数据转存到数组中。如果采用Visual FoxPro 6.0编程,则可用copy to array 语句把表(该表中事先已存入待处理数据)中数据赋给二
4、维数组。第2章 机械设计数表处理 2.1 非函数表处理非函数表处理2.1.1 规则非函数表处理规则非函数表处理 1.一维规则非函数表一维规则非函数表 1)单行表 表2-2是普通平键的长度系列表。该表仅有一行数据,属单行表。表中所列的长度系列值,用于一般机械传动。平键长度的手工查询过程是,根据轮毂长度B,从表2-2中查出相近的标准长度L。考虑到轮毂两端和平键两端一般情况下都需要倒角,通常,保证(B-L)min=5 mm 即可。例如,轮毂长度B=58 mm,相近的标准长度有56 mm、50 mm,取L=50 mm,见表中阴影处。又如,轮毂长度B=12 mm,相近的标准长度有12 mm、10 mm、
5、8 mm、6 mm,取L=6 mm。第2章 机械设计数表处理 表表2-2 普通平键长度系列表普通平键长度系列表 第2章 机械设计数表处理 计算机程序查询的过程是,先把数据存入一维数组,再通过循环语句嵌套判断语句,将输入参数(轮毂长度)与数组元素值逐个比较。如果满足某种条件,则退出循环,此时的循环次数就反映了输入参数在数组(数表)中的大致位置(行或列),然后进行相应的分析与判断,即可查出所需的标准平键长度。计算机查询程序所用参数见表2-3。程序的流程图见图2-1。程序运行时,窗体外观见图2-2、图2-3。第2章 机械设计数表处理 表表2-3 查询平键长度的程序参数表查询平键长度的程序参数表 第2
6、章 机械设计数表处理 图2-1 平键长度查询程序的流程图 第2章 机械设计数表处理 图2-2 平键长度查询前的窗体外观 第2章 机械设计数表处理 图2-3 平键长度查询后的窗体外观 第2章 机械设计数表处理 窗体frmpj.frm的全部代码,见代码2-1。代码2-1 窗体frmpj.frm的全部代码 Option Explicit 选用显式声明,即变量先声明,后使用Option Base 1 声明数组下标从1开始Private Sub Command1-Click()功能:定义变量、接收输入、查 询、显示 Dim shuruL As Single Dim biaozhunL As Single
7、 Dim x As Integer Dim L shuruL=Val(txtshuruL.Text)为shuruL赋值,实现输入 第2章 机械设计数表处理 If shuruL 12 Then MsgBox(长度不得小于12mm!):Exit Sub 用array()函数定义一个一维数组L,存储平键长度数据。根据VB规定,这个一维数组L,必须定义为变体型variant(variant是VB的默认类型,可省略)L=Array(6,8,10,12,14,16,18,20,22,25,28,32,36,40,45,50,56,63,70,80,90,-100,110,125,140,160,180,2
8、00,220,250,280,320,360,400,450,500)For x=1 To UBound(L)If shuruL=L(x)Then Exit For Next x y=1While shuruL L(x-y)+5 y=y+1WendbiaozhunL=L(x-y)第2章 机械设计数表处理 txtbiaozhunL.Text=biaozhunL 为文本框的text属性赋值,显示查询结果,实现输出End SubPrivate Sub Form-Initialize()窗体初始化事件,为对象赋初值 txtshuruL.Text=文本框置空 txtbiaozhunL.Text=End
9、Sub 注意:VB规定,一个语句在一行写不下或编写者嫌太长时,可换行接着写。此时,必须在行尾加一个空格和一个下划线“-”。第2章 机械设计数表处理 2)多行表 表2-4是普通V带型号与相应初拉力增量F0的关系表。表中有两行数据,属多行表。从表中可以看出,普通V带型号不同,其初拉力的增量F0也不同,即F0大小随着带型号变化,但两者之间并不存在客观上的连续函数关系。手工查询F0的过程是,根据普通V带型号查找其所在列,该列的F0即为所要查的。例如,型号为B,F0=20 N。计算机查询程序设计时,可用两个一维数组分别存储第一行(带型号)和第二行(F0)的值。因为两行数据个数相同,上下一一对照,所以,查
10、到输入型号所在列数,以该列数为下标的F0数组元素值,就是该型号的F0值。程序所用参数见表2-5,流程图见图2-4,程序运行时,窗体外观见图2-5、图2-6。第2章 机械设计数表处理 表表2-4 初拉力的增量初拉力的增量F0 第2章 机械设计数表处理 表表2-5 处理初拉力增量的程序参数表处理初拉力增量的程序参数表 第2章 机械设计数表处理 图2-4 F0查询程序的流程图 第2章 机械设计数表处理 图2-5 F0查询前的窗体 第2章 机械设计数表处理 图2-6 F0查询后的窗体 第2章 机械设计数表处理 窗体frmdltf0.frm的全部代码,见代码2-2。代码2-2 窗体frmdltf0.fr
11、m的全部代码 Option Explicit Option Base 1Private Sub Command1-Click()功能:定义变量、接收输入、查询、输出显示 Dim x as integer Dim vdxh As String Dim dltf0 As Single Dim vdxhsz 定义存储带型号的变体型变量 Dim dltfsz 定义存储初拉力增量的变体型变量 vdxh=Trim(cbovdxh.Text)为vdxh赋值,实现输入 vdxhsz=Array(Y,Z,A,B,C,D,E)dltfsz=Array(6,10,15,20,29.4,58.8,108)第2章 机械
12、设计数表处理 For x=1 To UBound(vdxhsz)If vdxh=vdxhsz(x)Then Exit For Next x dltf0=dltfsz(x)lbldltf0.Caption=dltf0 为对象dltf0的caption属性赋值,显示查询结 果,实现输出 End Sub Private Sub Form-Load()功能:为对象赋初值 cbovdxh.Text=A End Sub 第2章 机械设计数表处理 值得说明的是,对于表2-4,也可把全部数据存储到二维数组中,再作相应的处理。但由于为二维数组赋值的代码量相对增大,故此处不宜采用。实践证明,对于一维规则非函数表,
13、采用一维数组处理显得比较简单,行列数越多越明显,如表2-6所示的普通V带截面尺寸表。下面就给出该表的计算机查询程序的流程图(见图2-7),程序参数(见表2-7),读者可参照编写该表的处理程序。第2章 机械设计数表处理 表表2-6 普通普通V带截面尺寸带截面尺寸 第2章 机械设计数表处理 表表2-7 处理处理V带截面尺寸的程序参数表带截面尺寸的程序参数表 第2章 机械设计数表处理 图2-7 V带截面尺寸查询程序的流程图 第2章 机械设计数表处理 2.二维规则非函数表二维规则非函数表 一维规则非函数表在查询时,只需要一个输入参数,存储数据使用一维数组即可,这是比较简单的情况。与此不同,多维规则非函
14、数数表在查询时,需要一个以上的输入参数,存储数据不仅需要一维数组,还需要两维甚至更多维数的数组。表2-8为链传动工作情况系数KA表,查询时需要两个输入参数,即工作机实际工作情况和原动机实际工作情况;需要两个内部一维数组,分别存储工作机情况数据和原动机情况数据;需要一个内部二维数组,存储工作情况系数KA。手工查询过程是,查找工作机实际工作情况所在行,查找原动机实际工作情况所在列,行、列交点处的数据即为KA。例如,工作机实际工作情况为“中等振动”,原动机实际工作情况为“轻微振动”,1.5就是要查的KA。与手工查询类似,计算机查询的过程如图2-8所示,其参数见表2-9,运行时的窗体外观见图2-9、图
15、2-10。第2章 机械设计数表处理 表表2-8 链传动工作情况系数链传动工作情况系数KA 第2章 机械设计数表处理 图2-8 链传动工作情况系数KA查询程序的流程图第2章 机械设计数表处理 表表2-9 处理链传动工作情况系数处理链传动工作情况系数KA的查询程序参数表的查询程序参数表 第2章 机械设计数表处理 图2-9 链传动工作情况系数KA查询前的窗体外观 第2章 机械设计数表处理 图2-10 链传动工作情况系数KA查询后的窗体外观 第2章 机械设计数表处理 窗体frmkA.frm的全部代码,见代码2-3。代码2-3窗体frmkA.frm的全部代码 Option Explicit Option
16、 Base 1 Private Sub Command1-Click()功能:定义变量与数组、接收输入、查询、显示结果 Dim gjqk As String Dim yjqk As String Dim ka As Single Dim gjqksz Dim yjqksz Dim kaywsz Dim kaewsz(4,4)As Single 第2章 机械设计数表处理 Dim X As Integer Dim Y As Integer Dim js As Integer gjqk=Trim(cbogjqk.Text)yjqk=Trim(cboyjqk.Text)gjqksz=Array(平稳转
17、动,中等振动,严重振动)yjqksz=Array(转动平稳,轻微振动,中等振动)kaywsz=Array(1,1.1,1.3,1.4,1.5,1.7,1.8,1.9,2.1)js=0 For X=1 To UBound(gjqksz)For Y=1 To UBound(yjqksz)js=js+1 kaewsz(X,Y)=kaywsz(js)Next Y Next X 第2章 机械设计数表处理 For X=1 To UBound(gjqksz)If gjqk=gjqksz(X)Then Exit For Next X For Y=1 To UBound(yjqksz)If yjqk=yjqks
18、z(Y)Then Exit For Next Y ka=kaewsz(X,Y)txtka.Text=ka End Sub Private Sub Form-Initialize()功能:为组合框对象的Text属性赋初值 cbogjqk.Text=cbogjqk.List(0)cboyjqk.Text=cboyjqk.List(0)txtka.Text=End Sub 第2章 机械设计数表处理 3.三维规则非函数表三维规则非函数表 表2-10所示为普通V带传动的工作情况系数KA表。人工查询工作情况系数的过程是,查找实际工作情况所在行,查找实际启动情况所在大列,查找每天工作小时数在大列中所处的小列
19、,行与小列的交汇处即为所查KA。如工作实际情况为“载荷变动小”,实际启动情况为“重载启动”,实际工作小时数为“1016”,KA为1.3。由计算机程序查询,需要三个输入参数:工况、每天工作小时数和启动情况,故三个一维数组分别存储表中的工况情况、启动情况和每天工作小时数。一个三维数组存储工作情况KA数据以及一些内部变量。程序参数见表2-11,流程图见图2-11,程序运行时的窗体见图2-12和图2-13。第2章 机械设计数表处理 表表2-10 V带传动工作情况系数带传动工作情况系数KA 第2章 机械设计数表处理 表表2-11 处理处理V带传动工作情况系数带传动工作情况系数KA的程序参的程序参 第2章
20、 机械设计数表处理 图2-11 带传动工作情况系数KA查询程序的流程图 第2章 机械设计数表处理 图2-12 带传动工作情况系数KA查询前的窗体外观 第2章 机械设计数表处理 图2-13 带传动工作情况系数KA查询后的窗体外观 第2章 机械设计数表处理 窗体frmvdkA.frm的全部代码,见代码2-4。代码2-4 窗体frmvdkA.frm的全部代码 Option Explicit Option Base 1 Private Sub Command1-Click()功能:定义变量与数组、接收输入、查询、显示结果 Dim zhqk As String Dim qdqk As String Di
21、m mtss As String Dim zhqksz Dim qdqksz Dim mtsssz Dim ka As Single 第2章 机械设计数表处理 Dim kaywsz Dim kaswsz(5,2,4)As Single Dim x As Integer Dim y As Integer Dim j As Integer Dim js As Integer zhqk=Trim(cbozhqk.Text)qdqk=Trim(cboqdqk.Text)mtss=Trim(cbomtss.Text)kaywsz=Array(1,1.1,1.2,1.1,1.2,1.3,-1.1,1.2,
22、1.3,1.2,1.3,1.4,-1.2,1.3,1.4,1.4,1.5,1.6,-1.3,1.4,1.5,1.5,1.6,1.8)第2章 机械设计数表处理 zhqksz=Array(载荷变动最小,载荷变动小,载荷变动较大,载荷变动最大)qdqksz=Array(空、轻载启动,重载启动)mtsssz=Array(16)js=0 For x=1 To UBound(zhqksz)For y=1 To UBound(qdqksz)For j=1 To UBound(mtsssz)js=js+1 kaswsz(x,y,j)=kaywsz(js)Next j Next y Next x For x=1
23、 To UBound(zhqksz)If zhqk=zhqksz(x)Then Exit For Next x 第2章 机械设计数表处理 For y=1 To UBound(qdqksz)If qdqk=qdqksz(y)Then Exit For Next y For j=1 To UBound(mtsssz)If mtss=mtsssz(j)Then Exit For Next j ka=kaswsz(x,y,j)txtka.Text=kaEnd SubPrivate Sub Form-Initialize()功能:为组合框对象的text属性赋初值 cbozhqk.Text=cbozhqk
24、.List(1)cboqdqk.Text=cboqdqk.List(1)cbomtss.Text=cbomtss.List(1)End Sub 第2章 机械设计数表处理 2.1.2 不规则非函数表处理不规则非函数表处理 1.一维不规则非函数表一维不规则非函数表 表2-12为渐开线圆柱齿轮的模数国家标准系列表。表中有两行数据,第一行有28个数据,第二行比第一行少六个数据,因此该表是不规则的非函数表。表2-12 渐开线圆柱齿轮标准模数系列表第2章 机械设计数表处理 从表2-12中选用模数时,一般应优先选用第一系列(如设计标准减速器时,模数作为输入参数,由用户从表中选择)。有时根据具体情况也可以选第
25、二系列,例如,设计非标准减速器时,模数是输出参数,由强度条件确定,为了减少减速器尺寸与重量,模数应选择最接近的较大值。于是,可能出现这种情况:齿轮强度条件确定的最小模数为m=3.6,由表2-12可以看出,按优先原则,应选第一系列的m=4;若按“满足强度条件的前提下用料要少”的原则考虑,应选第二系列的m=3.75。因此,为了满足不同的需求,提高程序的通用性,模数的查询程序应满足各种用户需求。第2章 机械设计数表处理 根据上述设计要求,作出如下处理方案:将该表拆分为两个规则的非函数表:模数第一系列表(见表2-13)、第一系列与第二系列按大小混合后的系列表(见表2-14)。为满足用户使用要求,程序需
26、要询问用户是否总采用第一系列。如果总采用第一系列,就从第一系列表中查询,否则则从混合系列表中查询。从混合系列表中查询时,往值增大的方向查到与m=3.6最接近的值(模数为3.75),还要判断该值是属于第一系列,还是第二系列。程序的参数表见表2-15,程序流程图见图2-14,运行时的窗体外观见图2-15、图2-16。读者可以考虑是否还有其他处理方案。第2章 机械设计数表处理 表表2-13 第一系列标准模数表第一系列标准模数表 第2章 机械设计数表处理 表表2-14 将第一、将第一、第二系列按大小混合后的标准模数系列表第二系列按大小混合后的标准模数系列表 第2章 机械设计数表处理 表表2-15 处理
27、模数的程序参数表处理模数的程序参数表 第2章 机械设计数表处理 图2-14 模数查询程序的流程图 第2章 机械设计数表处理 图2-15 模数查询前的窗体外观 第2章 机械设计数表处理 图2-16 模数查询后的窗体外观(a)选取最接近的模数;(b)总采用第一系列模数 第2章 机械设计数表处理 窗体frmm.frm的全部代码,见代码2-5。代码2-5 窗体frmm.frm的全部代码 Option Explicit Option Base 1 Private Sub Command1-Click()功能:定义变量与数组、接收输入、查询、显示结果 Dim shurum As Single Dim sh
28、uchum As Single Dim mdiyixilie Dim mhunhexilie Dim diyi As Integer Dim x 第2章 机械设计数表处理 mdiyixilie=Array(0.1,0.12,0.15,0.2,0.25,0.3,0.4,0.5,0.6,0.8,1,1.25,1.5,2,2.5,3,-4,5,6,8,10,12,16,20,25,32,40,50)mhunhexilie=Array(0.1,0.12,0.15,0.2,0.25,0.3,0.35,0.4,0.5,0.6,0.7,0.8,0.9,1,-1.25,1.5,1.75,2,2.25,2.5,
29、2.75,3,3.25,3.5,3.75,4,4.5,5,5.5,6,6.5,7,8,9,11,-12,14,16,18,20,22,25,28,32,36,40,45,50)shurum=Val(txtshurum.Text)If shurum=0 Then MsgBox(模数不能小于零!请重新输入)Exit SubEnd IfIf chkxilie.Value=1 Then For diyi=1 To UBound(mdiyixilie)-1 If shurum=mdiyixilie(diyi)Then Exit For Next diyi 第2章 机械设计数表处理 shuchum=mdi
30、yixilie(diyi)txtquedingm.Text=shuchum lblxilie.Caption=第一系列Else For x=1 To UBound(mhunhexilie)-1 If shurum=mhunhexilie(x)Then Exit For Next x shuchum=mhunhexilie(x)txtquedingm.Text=shuchum For diyi=1 To UBound(mdiyixilie)-1 If shurum ymax=55(biaozhun(55)=2500,biaozhun(56)是不存在的),反向查找到外径不为零时,y=48,此时,b
31、iaozhundd(y)=800,故shuchudd=biaozhundd(y)=800。窗体frmdd.frm的全部代码,见代码2-6。第2章 机械设计数表处理 代码2-6 窗体frmdd.frm的全部代码 窗体frmdd.frm的全部代码,见代码2-6。Option Explicit Option Base 1 Private Sub Command1-Click()功能:定义变量与数组、接收输入、查询、显示结果 Dim shuruxinghao As String Dim shurudd As Single Dim shuchudd As Single Dim shuchuwaijing
32、 As Single Dim xinghao Dim biaozhundd Dim biaozhunda 第2章 机械设计数表处理 Dim da(56,8)As Single Dim x As Integer Dim y As Integer Dim j As Integer Dim s As Integer shuruxinghao=cboxinghao.Text shurudd=Val(txtchuxuandd.Text)If shurudd=0 ThenHJ MsgBox(初选基准直径不能小于零!请重新选择)Exit Sub End If xinghao=Array(Y,Z,A,B,C,
33、D,E)第2章 机械设计数表处理 biaozhundd=Array(20,22.4,25,28,31.5,35.5,40,45,50,56,63,71,75,80,85,90,-95,100,106,112,118,125,132,140,150,160,170,180,200,212,224,236,250,265,-280,315,355,375,400,425,450,475,500,530,560,630,710,800,900,1000,1120,-1250,1600,2000,2500)biaozhunda=Array(23.2,0,0,0,0,0,0,25.6,0,0,0,0,0
34、,0,28.2,0,0,0,0,0,0,31.2,0,-0,0,0,34.7,0,0,0,0,0,0,38.7,0,0,0,0,0,0,43.2,0,0,0,0,0,0,48.2,0,0,0,0,0,-0,53.2,54,0,0,0,0,0,59.2,60,0,0,0,0,0,66.2,67,0,0,0,0,0,0,75,0,0,0,0,0,0,-79,80.5,0,0,0,0,83.2,84,85.5,0,0,0,0,0,0,90.5,0,0,0,0,93.2,94,95.5,0,0,0,0,-0,0,100.5,0,0,0,0,103.2,104,105.5,0,0,0,0,0,0,111
35、.5,0,0,0,0,115.2,116,117.5,-0,0,0,0,0,0,123.5,0,0,0,0,128.2,129,130.5,132,0,0,0,0,0,137.5,139,0,0,0,-0,144,145.5,147,0,0,0,0,154,155.5,157,0,0,0,0,164,165.5,167,0,0,0,0,0,0,-177,0,0,0,0,184,185.5,187,0,0,0,0,204,205.5,207,209.6,0,0,0,0,0,219,221.6,-0,0,0,0,0,231,233.6,0,0,0,0,0,243,245.6,0,0,0,254,2
36、55.5,257,259.6,0,0,0,0,0,-第2章 机械设计数表处理 0,274.6,0,0,0,284,0,287,289.6,0,0,0,319,320.5,322,324.6,0,0,0,359,0,362,-364.6,371.2,0,0,0,0,0,0,391.2,0,0,404,405.5,407,409.6,416.2,0,0,0,0,0,0,441.2,-0,0,0,0,0,459.6,466.2,0,0,0,0,0,0,491.2,0,0,504,505.5,507,509.6,516.2,519.2,-0,0,0,0,0,546.2,549.2,0,0,0,0,56
37、9.6,572.2,579.2,0,634,635.5,637,639.6,646.2,-649.2,0,0,0,0,0,726.2,729.2,0,0,805.5,807,809.6,816.2,819.2,0,0,0,0,0,-916.2,919.2,0,0,0,1007,1009.6,1016.2,1019.2,0,0,0,1127,0,0,1139.2,0,0,0,0,-1259.6,1266.2,1269.2,0,0,0,0,0,1616.2,1619.2,0,0,0,0,0,2016.2,2019.2,0,0,0,-0,0,0,25)s=0 For x=1 To UBound(bi
38、aozhundd)For y=1 To UBound(xinghao)s=s+1 da(x,y)=biaozhunda(s)Next y 第2章 机械设计数表处理 Next x For x=1 To UBound(xinghao)If shuruxinghao=xinghao(x)Then Exit For 查列(即型号)Next x For y=1 To UBound(biaozhundd)If shurudd 0 Then Exit For 查行 Next y If y=1 And xinghao(x)=Y Or y=9 And xinghao(x)=Z-Or y=13 And xingh
39、ao(x)=A Or y=22 And xinghao(x)=B-Or y=29 And xinghao(x)=C Or y=37 And xinghao(x)=D-Or y=43 And xinghao(x)=“E”Then 如果y是各种带型的最小外径行 shuchuwaijing=da(y,x)shuchudd=biaozhundd(y)txtbiaozhundd.Text=shuchudd txtwaijing.Text=shuchuwaijing Exit Sub 第2章 机械设计数表处理 End IfIf y 0 Then If Abs(biaozhundd(j)-shurudd)U
40、Bound(biaozhundd)Then Do While y 1 y=y-1 If da(y,x)0 Then shurudd=biaozhundd(y)shuchuwaijing=da(y,x)txtwaijing.Text=shuchuwaijing txtbiaozhundd.Text=da(y,x)Exit Sub 第2章 机械设计数表处理 End If Loop End If End Sub Private Sub Form-Initialize()功能:为对象的text属性赋初值 cboxinghao.Text=A txtchuxuandd.Text=80 txtbiaozhu
41、ndd.Text=txtwaijing.Text=End Sub 第2章 机械设计数表处理 3.三维不规则非函数表三维不规则非函数表 表2-19给出了V带轮的结构形式和辐板厚度(见文献4),每行数据多少不同,且数据之间无函数关系。为了查询带轮的结构形式和辐板厚度,需要输入三个参数:带型号、孔径、带轮基准直径,表中的数据需要用三维数组存储。不仅如此,此表内的数据也没有一定的规律,有结构形式,如实心轮、辐板轮、四孔板轮、六孔板轮、四椭圆辐轮、六椭圆辐轮;对辐板轮或板孔轮,还有厚度,除此之外都是空格及大面积空白区域等等,所以该表是一个比较复杂的三维不规则非函数表。第2章 机械设计数表处理 为了方便处
42、理,需要把表中的数据进行预处理,空格处填以数字“0”(也可以填以其他字符),大面积的空白区域,要划分成方格,并填以相应的数据。由于array()函数对换行数和每行数据个数都有限度,而带轮结构与辐板厚度数据较多(1320个),有可能超出函数限度,故不宜采用array()函数建立一维数组。可以手工先把数据写入一个纯文本文件中(如jiegou.txt,见表2-20,该表仅列出了部分数据),然后在程序运行过程中,从该文件中读出数据,并赋给一维数组,由一维数组再转给三维数组。存储孔径数据的二维数组的建立,也采用这种方法。由此可知,本表的处理需要的数组的最高维数为三。第2章 机械设计数表处理 查询程序的编
43、写思路可分为三个主要步骤:(1)将表中数据存储到数组。(2)将用户输入的型号,赋给变量shuruxinghao,用循环语句与判断语句查找该变量在表中的位置:大行数x(在型号数组中查),即得到sanweijiegou(x,y,j)中的第一维x的值。将用户输入的孔径,赋给变量shurud0,用循环语句与判断语句查找该变量的位置:小行数y(在相应型号的孔径数组中查),即得到sanweijiegou(x,y,j)中的第二维y的值。将用户输入的带轮基准直径,赋给变量shurudd,查询该变量的位置:列数j(在基准直径数组中查),即得到sanweijiegou(x,y,j)中的第三维j的值。第2章 机械设
44、计数表处理 (3)对查到的sanweijiegou(x,y,j)的值,进行判断分类与提取信息,对非“0”值,用字符串函数left()从中提取带轮结构信息,用mid()函数从中提取辐板厚度信息。查询程序的参数见表2-21,流程图见图2-20,程序执行示例见图2-21、图2-22。第2章 机械设计数表处理 表表2-21 带轮结构与辐板厚度查询程序参数表带轮结构与辐板厚度查询程序参数表 第2章 机械设计数表处理 图2-20 V带轮轮辐结构与辐板厚度查询流程图第2章 机械设计数表处理 图2-21 带轮结构与辐板厚度查询示例1(B型带轮,孔径40 mm,基准直径200 mm)第2章 机械设计数表处理 图
45、2-22 V带轮结构与辐板厚度查询示例2(D型带轮,孔径70 mm,基准直径600 mm)第2章 机械设计数表处理 Option Explicit Option Base 1 Private Sub Command1-Click()Dim shuruxinghao As String Dim shurud0 As Single Dim shurudd As Single Dim dd 基准直径数组 Dim xinghao 型号数组 Dim yiweid0 孔径一维数组 Dim erweid0(7,8)As Single 孔径二维数组 窗体frmdljg.frm的全部代码,见代码2-7。代码2-
46、7 窗体frmdljg.frm的全部代码第2章 机械设计数表处理 Dim yiweijiegou(1360)结构一维数组 Dim sanweijiegou(7,8,41)As String 结构三维数组 Dim shuchujiegou As String 输出结构形式 Dim shuchuhoudu As Single 输出带轮辐板厚度 Dim shuchucaoshu As String 输出带轮槽数 Dim jj1 As Integer Dim jj2 As Integer Dim x As Integer Dim y As Integer Dim j As Integer Dim s
47、As Integer Dim k As Integer 第2章 机械设计数表处理 lbljiegou.Visible=False lblcaoshu.Visible=False lblhoudu.Visible=False txtjiegou.Visible=False txthoudu.Visible=False txtcaoshu.Visible=False txtjiegou.Text=txthoudu.Text=txtcaoshu.Text=shuruxinghao=Trim(cbocaoxing.Text)shurud0=Val(txtd0.Text)shurudd=Val(txtd
48、d.Text)If shurudd 2500 Then MsgBox(带轮直径不能超过2500 mm,请重新输入)Exit Sub End If 第2章 机械设计数表处理 If shurudd=0 Then MsgBox(带轮基准直径必须大于零,请重新输入)Exit SubEnd If If shurud0=0 Then MsgBox(孔径必须大于零,请重新输入)Exit SubEnd If 带轮型号数组xinghao=Array(Z,A,B,C,D,E)孔径d0数组yiweid0=Array(14,18,22,25,30,35,18,22,25,30,35,40,45,35,40,45,55
49、,65,45,-55,65,75,85,65,75,85,95,110,85,95,110,130,150)s=0 For y=1 To 6 s=s+1 erweid0(1,y)=yiweid0(s)Next y 第2章 机械设计数表处理 For y=1 To 7 s=s+1 erweid0(2,y)=yiweid0(s)Next y For x=3 To UBound(xinghao)For y=1 To 5 s=s+1 erweid0(x,y)=yiweid0(s)sx实心,fb6辐板厚度为6 mm,fb7辐板厚度为7 mm Next y sk20四孔辐板轮厚度是20 mm,lk30六孔辐
50、板轮厚度是30 mm Next x st四椭圆辐轮,lt六椭圆辐轮 dd=Array(63,71,75,80,90,95,100,106,112,118,125 ,132,140,150,160,170,180,200,212,224,236,250,265,280,300,315,355,375,400,425,450,475,500,530,560,600,630,710,2500,2501)基准直径dd 第2章 机械设计数表处理 存结构与厚度的一维数组 Dim wj As String wj=App.Path+jiegou.txt Open wj For Input As 1 For x
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。