机械设计上机设计班级:姓名:学号:目录1.数表和线图的程序化处理 (1)1.1数表的程序化 (1)1.1.1查表检索法 (1)1.1.2数表解析法 (12)1.2线图的程序化 (15)1.3有关数据处理 (16)2.典型零部件的程序设计 (18)2.1 V带传动的程序设计 (18)2.2 齿轮传动的程序设计 (19)2.3 滚动轴承的程序设计 (21)3.课后习题计算 (22)一、表和线图的程序化处理1.1数表程序化数表程序化有两种方法:一是查表检索法;二是数表解析法1.1.1 查表检索法1)一元数表的存取表1-1 普通V带型号及有关参数运行界面:程序代码:Private Sub Command1_Click()Dim s As IntegerDim q1 As Single, dm As Single, kb As Singles = Val(Txt_s.Text)Select Case sCase 0q1 = 0.02: dm = 20: kb = 0.00006Case 1q1 = 0.06: dm = 50: kb = 0.00039Case 2q1 = 0.1: dm = 75: kb = 0.00103Case 4q1 = 0.17: dm = 125: kb = 0.00265Case 5q1 = 0.3: dm = 200: kb = 0.0075Case 6q1 = 0.62: dm = 355: kb = 0.0266Case 7q1 = 0.9: dm = 500: kb = 0.0498End SelectTxt_q1.Text = Str(q1)Txt_dmin.Text = Str(dm)Txt_kb.Text = Str(kb)End SubPrivate Sub Command2_Click()EndEnd Sub2)二元数表的存取表1-2齿轮传动工作状况系数K运行界面:程序代码:Option ExplicitDim ii As IntegerDim jj As IntegerPublic appdir As String Private Sub Check1_Click() If Check1.Value = 1 Then Check2.Value = 0Check3.Value = 0ii = 0End IfEnd SubPrivate Sub Check2_Click() If Check2.Value = 1 Then Check1.Value = 0Check3.Value = 0ii = 1End IfEnd SubPrivate Sub Check3_Click() If Check3.Value = 1 Then Check1.Value = 0Check2.Value = 0ii = 2End IfEnd SubPrivate Sub Check4_Click()If Check4.Value = 1 ThenCheck5.Value = 0Check6.Value = 0jj = 0End IfEnd SubPrivate Sub Check5_Click()If Check5.Value = 1 ThenCheck4.Value = 0Check6.Value = 0jj = 1End IfEnd SubPrivate Sub Check6_Click()If Check6.Value = 1 ThenCheck4.Value = 0Check5.Value = 0jj = 2End IfEnd SubPrivate Sub Command1_Click()Dim i As Integer, j As IntegerDim ka(0 To 2, 0 To 2) As Singleka(0, 0) = 1ka(0, 1) = 1.25ka(0, 2) = 1.75ka(1, 0) = 1.25ka(1, 1) = 1.5ka(1, 2) = 2ka(2, 0) = 1.5ka(2, 1) = 1.75ka(2, 2) = 2.25txt_ka.Text = Str(ka(ii, jj))End SubPrivate Sub Command1_Click()EndEnd Sub表1-3V工作状况系数K运行界面:程序代码:Private Sub Command1_Click()If (Combo1.Text = Combo1.List(0) And Option1.Value) Then Text_ka.Text = 1 If (Combo1.Text = Combo1.List(0) And Option2.Value) Then Text_ka.Text = 1.1 If (Combo1.Text = Combo1.List(0) And Option3.Value) Then Text_ka.Text = 1.2 If (Combo1.Text = Combo1.List(1) And Option1.Value) Then Text_ka.Text = 1.1 If (Combo1.Text = Combo1.List(1) And Option2.Value) Then Text_ka.Text = 1.2 If (Combo1.Text = Combo1.List(1) And Option3.Value) Then Text_ka.Text = 1.3 If (Combo1.Text = Combo1.List(2) And Option1.Value) Then Text_ka.Text = 1.2 If (Combo1.Text = Combo1.List(2) And Option2.Value) Then Text_ka.Text = 1.3 If (Combo1.Text = Combo1.List(2) And Option3.Value) Then Text_ka.Text = 1.4 If (Combo1.Text = Combo1.List(3) And Option1.Value) Then Text_ka.Text = 1.3 If (Combo1.Text = Combo1.List(3) And Option2.Value) Then Text_ka.Text = 1.4 If (Combo1.Text = Combo1.List(3) And Option3.Value) Then Text_ka.Text = 1.5 Text_pc.Text = Str(Text_ka) * Str(Text_p)End SubPrivate Sub Command2_Click()EndEnd Sub3)区间检索运行界面:程序代码:Private Sub Command1_Click()Dim i As Integer, d As IntegerDim dd As Variant, b As Variant, h As Variantdd = Array(0, 6, 8, 10, 12, 17, 22, 30, 38, 44, 50, 58)b = Array(0, 2, 3, 4, 5, 6, 8, 10, 12, 14, 16, 18)h = Array(0, 2, 3, 4, 5, 6, 7, 8, 8, 9, 10, 11)d = Val(Txt_d.Text)For i = 0 To 10If d <= dd(i + 1) ThenEnd IfNext iTxt_b.Text = Str(b(i))Txt_h.Text = Str(h(i))End SubPrivate Sub Command2_Click()EndEnd Sub4)复杂表格程序化(含插值处理)①一元数表的线性插值α运行界面:程序代码:Private Sub Command1_Click()Dim i As IntegerDim t As Single, u As Single, f As SingleDim kf As Single, af As SingleDim x As Variant, y As Variantx = Array(120, 125, 130, 135, 140, 145, 150, 155, 160, 165, 170, 175, 180, 185) y = Array(0.82, 0.84, 0.86, 0.88, 0.89, 0.91, 0.92, 0.93, 0.95, 0.96, 0.98, 0.99, 1, 1) t = Val(Txt_t.Text)If t < x(0) Theni = 0ElseIf t >= x(12) Theni = 12ElseFor i = 1 To 12If t <= x(i) ThenExit ForEnd IfNext iEnd Ifu = (t - x(i)) / (x(i + 1) - x(i))f = y(i) + u * (y(i + 1) - y(i))kf = f: af = tTxt_af.Text = Str(af)Txt_kf.Text = Str(kf)End SubPrivate Sub Command2_Click()Txt_t.Text = ""Txt_af.Text = ""Txt_kf.Text = ""End Sub②二元数表的线性插值表1-6轴的圆角处应力集中系数Kσ运行界面:Dim Appdir As StringDim i As Integer, j As IntegerDim ii As Integer, jj As IntegerPrivate Sub Cmdstart_Click()Dim ki As Integer, kj As IntegerDim ax As Single, ay As Single, ap As SingleDim bt As Single, f As SingleDim x As Variant, y As VariantDim z(8, 6) As Singlex = Array(0, 0, 0.02, 0.04, 0.06, 0.08, 0.1, 0.15, 0.2)y = Array(0, 500, 600, 700, 800, 900, 1000)z(1, 1) = 2.32z(1, 2) = 2.5z(1, 3) = 2.71z(1, 4) = 0z(1, 5) = 0z(1, 6) = 0z(2, 1) = 1.84z(2, 2) = 1.96z(2, 3) = 2.08z(2, 4) = 2.2z(2, 5) = 2.35z(2, 6) = 2.5z(3, 1) = 1.6z(3, 2) = 1.66z(3, 3) = 1.69z(3, 4) = 1.75z(3, 5) = 1.81z(3, 6) = 1.87z(4, 1) = 1.51z(4, 2) = 1.51z(4, 3) = 1.54z(4, 4) = 1.54z(4, 5) = 1.6z(4, 6) = 1.6z(5, 1) = 1.4z(5, 2) = 1.4z(5, 3) = 1.42z(5, 4) = 1.42z(5, 5) = 1.46z(5, 6) = 1.46z(6, 1) = 1.34z(6, 3) = 1.37z(6, 4) = 1.37z(6, 5) = 1.39z(6, 6) = 1.39z(7, 1) = 1.25z(7, 2) = 1.25z(7, 3) = 1.27z(7, 4) = 1.27z(7, 5) = 1.3z(7, 6) = 1.3z(8, 1) = 1.19z(8, 2) = 1.19z(8, 3) = 1.22z(8, 4) = 1.22z(8, 5) = 1.24z(8, 6) = 1.24ax = Val(txt_rd.Text)ay = Val(txt_cb.Text)For i = 1 To 8If ax <= x(i + 1) Thenki = iExit ForElseki = 8End IfNext iFor j = 1 To 6If ay <= y(j + 1) Thenkj = jExit ForElsekj = 6End IfNext jap = (ax - x(ki)) / (x(ki + 1) - x(ki))bt = (ay - y(kj)) / (y(kj + 1) - y(kj))f = (1 - ap) * (1 - bt) * z(ki, kj) + bt * (1 - ap) * z(ki, kj + 1) + ap * (1 - bt) * z(ki + 1, kj) + ap * bt * z(ki + 1, kj + 1)txt_kc.Text = Str(f)End SubPrivate Sub Command2_Click()EndEnd Sub③非线性插值表1-7蜗轮齿形系数Y运行界面:程序代码:Private Sub Command1_Click()Dim i As Integer, z As Integer, hi As IntegerDim x1 As Single, x2 As Single, x3 As SingleDim u As Single, v As Single, w As Single, yf As SingleDim x As Variant, y As Variantx = Array(0, 20, 24, 26, 28, 30, 32, 35, 37, 40, 45, 50, 60, 80, 100, 150, 300)y = Array(0, 1.98, 1.88, 1.85, 1.8, 1.76, 1.71, 1.64, 1.61, 1.55, 1.48, 1.45, 1.4, 1.34, 1.3, 1.27, 1.24) z = Val(Txt_z.Text)For i = 1 To 14If z - x(i + 1) <= 0 Thenhi = iExit ForElsehi = 14End IfNext iIf hi > 1 And z - x(hi) < x(hi + 1) - z Then hi = hi - 1x1 = x(hi): x2 = x(hi + 1): x3 = x(hi + 2)u = (z - x2) * (z - x3) / ((x1 - x2) * (x1 - x3))v = (z - x1) * (z - x3) / ((x2 - x1) * (x2 - x3))w = (z - x1) * (z - x2) / ((x3 - x1) * (x3 - x2))yf = u * y(hi) + v * y(hi + 1) + w * y(hi + 2)Txt_zv.Text = Str(z)Txt_yf.Text = Str(yf)End SubPrivate Sub Command2_Click()Txt_zv.Text = ""Txt_yf.Text = ""Txt_z.Text = ""End Sub1.1.2 数表解析法表1-8圆弧齿锥齿轮几何系数运行界面:程序代码:Private Sub Command1_Click()Dim YY As Variantm = 2: n = 9X = Array(0, 16, 20, 24, 28, 32, 36, 40, 45, 50)Y = Array(0, 0.171, 0.186, 0.201, 0.214, 0.226, 0.234, 0.245, 0.263, 0.28) YY = Array(0, 0.171, 0.186, 0.201, 0.214, 0.226, 0.234, 0.245, 0.263, 0.28) Call 最小二乘法程序txt_a0 = A(1, JJ)txt_a1 = A(2, JJ)txt_a2 = A(3, JJ)For j = 1 To n'将计算结果写入到表格中MSHFlexGrid1.TextMatrix(j, 0) = Str(j)MSHFlexGrid1.TextMatrix(j, 1) = Str(X(j))MSHFlexGrid1.TextMatrix(j, 2) = Str(YY(j))MSHFlexGrid1.TextMatrix(j, 3) = Str(Y(j))Next jEnd SubPrivate Sub Command2_Click()EndEnd SubPrivate Sub Form_Load()'设置各行的宽度MSHFlexGrid1.ColWidth(0) = 500: MSHFlexGrid1.ColWidth(1) = 600 MSHFlexGrid1.ColWidth(2) = 800: MSHFlexGrid1.ColWidth(3) = 1600 '设置表头MSHFlexGrid1.TextMatrix(0, 0) = "组数"MSHFlexGrid1.TextMatrix(0, 1) = "齿数Z1"MSHFlexGrid1.TextMatrix(0, 2) = "J原始值"MSHFlexGrid1.TextMatrix(0, 3) = "几何系数J拟合值"End SubPublic X As Variant, Y As VariantPublic A(10, 11) As Single, S(10) As Single, T(10) As SinglePublic i As Integer, j As Integer, k As Integer, m As IntegerPublic n As Integer, l As Integer, LL As Integer, KK As Integer Public JJ As Integer, KP1 As IntegerPublic b As Single, p As Single, TEMP As SinglePublic Sub 最小二乘法程序()LL = 2 * m + 1KK = m + 1JJ = KK + 1For l = 2 To LLS(l) = 0Next lS(1) = nFor k = 1 To KKT(k) = 0Next kFor i = 1 To nb = 1: T(1) = T(1) + Y(i)For j = 2 To KKb = X(i) * b: S(j) = S(j) + bT(j) = T(j) + Y(i) * bNext jFor j = JJ To LLb = X(i) * b: S(j) = S(j) + bNext jNext iFor i = 1 To KKFor j = 1 To KKk = i + j: A(j, i) = S(k - 1)Next jNext iFor i = 1 To KKA(i, JJ) = T(i)Next iFor k = 1 To KKp = 0For i = k To KKIf p < Abs(A(i, k)) Thenp = Abs(A(i, k))l = iEnd IfNext iIf p <= 0.0000000001 ThenExit For '线性方程组无解End IfFor j = k To JJTEMP = A(k, j)A(k, j) = A(l, j)A(l, j) = TEMPNext jKP1 = k + 1For j = KP1 To JJA(k, j) = A(k, j) / A(k, k)Next jFor i = 1 To KKIf (i - k) <> 0 ThenFor j = KP1 To JJA(i, j) = A(i, j) - A(i, k) * A(k, j)Next jEnd IfNext iNext kFor j = 1 To nY(j) = 0For i = 1 To KKY(j) = Y(j) + A(i, JJ) * X(j) ^ (i - 1)Next iNext jEnd Sub1.2线图的程序化1.2.1 查表检索法图1-1普通V带选型图运行界面:程序代码:Dim i As IntegerPrivate Sub Cmdstart_Click()Dim pc As Double, n1 As Double, c(5) As DoubleDim xh As Stringpc = Val(txt_pc.Text)n1 = Val(txt_n1.Text)c(0) = (Log(365) + (Log(2500) -Log(365)) * (Log(pc) -Log(0.8)) / (Log(5) -Log(0.8))) / Log(10)c(1) = (Log(100) + (Log(1250) - Log(100)) * (Log(pc) - Log(1)) / (Log(10) - Log(1))) / Log(10) c(2) = (Log(100) + (Log(870) - Log(100)) * (Log(pc) - Log(3.15)) / (Log(18) - Log(3.15))) / Log(10)c(3) = (Log(100) + (Log(700) - Log(100)) * (Log(pc) - Log(9)) / (Log(40) - Log(9))) / Log(10)c(4) = (Log(100) + (Log(500) -Log(100)) * (Log(pc) -Log(50)) / (Log(200) -Log(50))) / Log(10)For i = 0 To 4If n1 >= 10 ^ c(i) ThenExit ForEnd IfNext iSelect Case iCase 0: xh = "Z"Case 1: xh = "A"Case 2: xh = "B"Case 3: xh = "C"Case 4: xh = "D"Case 5: xh = "E"End Selecttxt_xh.Text = xhEnd SubPrivate Sub Command2_Click()EndEnd Sub1.3有关数据处理1.3.1标准值圆整表1-9圆柱齿轮标准模数运行界面:程序代码:Private Sub Command1_Click()Dim i As IntegerDim mm As Single, md As Single, mj As SingleDim m As Variantm = Array(1, 1.25, 1.5, 1.75, 2, 2.25, 2.5, 2.75, 3, 3.5, 4, 4.5, 5, 5.5, _ 6, 7, 8, 9, 10, 12, 14, 16, 18, 20, 22, 25, 28, 32, 36, 40, 45, 50) mm = Val(txt_mm.Text)For i = 0 To 31If mm <= m(i) ThenExit ForEnd IfNext imd = m(i)For i = 1 To 31If mm <= m(i) ThenExit ForEnd IfNext iIf (m(i) - mm) <= (mm - m(i - 1)) Thenmj = m(i)Elsemj = m(i - 1)End Iftxt_md.Text = Str(md)txt_mj.Text = Str(mj)End Sub二、典型机械零部件的程序设计2.1V带传动的程序设计运行界面:2.2齿轮传动的程序设计运行界面:2.3滚动轴承的程序设计运行界面:三、课后习题计算题6-3运行界面:题8-4运行界面:题13-4运行界面:。