当前位置:文档之家› 解析法设计凸轮

解析法设计凸轮

解析法设计凸轮Ⅱ的实际轮廓曲线代码:Private Sub Command1_Click()Form2.Show '焦点出现form2End SubPrivate Sub Command1_Click()Dim l1, l2, l3 As SingleForm2.Picture2.Scale (-0.1, 400)-(7, -400)l1 = -Abs(Form2.Picture1.ScaleHeight / Form2.Picture1.ScaleWidth)l3 = -Abs(Form2.Picture3.ScaleHeight / Form2.Picture3.ScaleWidth) '定义两个图框的高宽比Form2.Picture1.ScaleWidth = 9.5Form2.Picture3.ScaleWidth = 150 '设定图框的长度Form2.Picture1.ScaleHeight = l1 * Form2.Picture1.ScaleWidthForm2.Picture3.ScaleHeight = l3 * Form2.Picture3.ScaleWidthForm2.Picture1.ScaleLeft = -0.1Form2.Picture3.ScaleLeft = -70Form2.Picture1.ScaleTop = 7Form2.Picture3.ScaleTop = 63 '规定高度的起点Dim dt1, dt2, dt3, dt4, dt5, s1, v1, s2, v2, k1, s0 As SingleDim n, m As IntegerDim h, e As IntegerDim dt6, dt7, dt8, dt9, dt10, dt11, x1, y1, x2, y2, r As SingleDim x3, y3, x4, y4, rg '定义各种量h = Form2.Text3e = Form2.Text2k1 = Form2.Text4s0 = Form2.Text1rg = Form2.Text5 '试各种变量与文本框相等,用于输入数据Const pi = 3.1415926n = 1000 '把每一步定义为360°/1000dt11 = 0dt1 = pi / 3dt2 = pi / 3dt3 = pi / 2 / ndt4 = 0dt6 = pi / 18Form2.Picture3.Line (-70, 0)-(70, 0)Form2.Picture3.Line (0, 70)-(0, -70)Form2.Picture1.Line (0, 0)-(7, 0)Form2.Picture1.Line (0, 6.5)-(0, 0)Form2.Picture2.Line (0, 0)-(7, 0)Form2.Picture2.Line (0, 390)-(0, -390) '画出各个两个图框的坐标轴s1 = h * ((dt4 / dt1) - Sin(2 * pi * dt4 / dt1) / (2 * pi))v1 = h * k1 * (1 - Cos(2 * pi * dt4 / dt1)) / dt1 '计算第一个点的速度和推程,选择正弦加速度规律x1 = (s0 + s1) * Sin(dt4) + e * Cos(dt4)y1 = (s0 + s1) * Cos(dt4) - e * Sin(dt4) '计算凸轮理论轮廓第一个点的坐标x3 = (s0 + s1 - rg) * Sin(dt4) + e * Cos(dt4)y3 = (s0 + s1 - rg) * Cos(dt4) - e * Sin(dt4) '计算实际工作轮廓曲线的第一个点的坐标While dt4 < dt1 '第一个六十度的循环绘制推程的曲线dt5 = dt4 + dt3s2 = h * ((dt5 / dt1) - Sin(2 * pi * dt5 / dt1) / (2 * pi))v2 = h * k1 * (1 - Cos(2 * pi * dt5 / dt1)) / dt1x2 = (s0 + s2) * Sin(dt5) + e * Cos(dt5)y2 = (s0 + s2) * Cos(dt5) - e * Sin(dt5)x4 = (s0 + s2 - rg) * Sin(dt5) + e * Cos(dt5)y4 = (s0 + s2 - rg) * Cos(dt5) - e * Sin(dt5) '绘制上述参数的第二个点Form2.Picture1.Line (dt4, s1)-(dt5, s2)Form2.Picture2.Line (dt4, v1)-(dt5, v2)Form2.Picture3.Line (x1, y1)-(x2, y2)Form2.Picture3.Line (x3, y3)-(x4, y4) '画直线,由于每一个步长很小,故可以一直代曲dt4 = dt5s1 = s2v1 = v2x1 = x2y1 = y2x3 = x4y3 = y4 '交换数值Wenddt11 = dt4While dt11 >= dt1 And dt11 < dt1 + dt6 '第二个10的远休角的的循环,绘制的理论和实际轮廓曲线都都是一段圆心角为十度的圆弧dt11 = dt11 + dt3x2 = (s0 + s2) * Sin(dt11) + e * Cos(dt11)y2 = (s0 + s2) * Cos(dt11) - e * Sin(dt11)x4 = (s0 + s2 - rg) * Sin(dt11) + e * Cos(dt11)y4 = (s0 + s2 - rg) * Cos(dt11) - e * Sin(dt11)Form2.Picture3.Line (x1, y1)-(x2, y2)Form2.Picture3.Line (x3, y3)-(x4, y4) '循环画点形成一个曲线x1 = x2y1 = y2x3 = x4y3 = y4Wenddt4 = dt4 + dt6Form2.Picture1.Line (dt1, s1)-(dt4, s1)Form2.Picture2.Line (dt1, v1)-(dt4, v1) '绘制远休时的s曲线While dt4 >= dt1 + dt6 And dt4 < dt1 + dt6 + dt2 '第三个60°近休循环,绘制回程的曲线dt8 = dt4 - dt1 - dt6s2 = h * (1 - (dt8 / dt2) + Sin(2 * pi * dt8 / dt2) / (2 * pi))v2 = h * k1 * (Cos(2 * pi * dt8 / dt2) - 1) / dt2x2 = (s0 + s2) * Sin(dt4) + e * Cos(dt4)y2 = (s0 + s2) * Cos(dt4) - e * Sin(dt4)x4 = (s0 + s2 - rg) * Sin(dt4) + e * Cos(dt4)y4 = (s0 + s2 - rg) * Cos(dt4) - e * Sin(dt4)dt5 = dt4 + dt3Form2.Picture1.Line (dt4, s1)-(dt5, s2)Form2.Picture2.Line (dt4, v1)-(dt5, v2)Form2.Picture3.Line (x1, y1)-(x2, y2)Form2.Picture3.Line (x3, y3)-(x4, y4) '坐标点连线dt4 = dt5x1 = x2y1 = y2x3 = x4y3 = y4s1 = s2v1 = v2 '数据交换Wenddt9 = dt4While dt9 >= dt1 + dt6 + dt2 And dt9 <= 2 * pi '第四个230°的近休循环dt9 = dt9 + dt3x2 = (s0 + s2) * Sin(dt9) + e * Cos(dt9)y2 = (s0 + s2) * Cos(dt9) - e * Sin(dt9)x4 = (s0 + s2 - rg) * Sin(dt9) + e * Cos(dt9)y4 = (s0 + s2 - rg) * Cos(dt9) - e * Sin(dt9)Form2.Picture3.Line (x1, y1)-(x2, y2)Form2.Picture3.Line (x3, y3)-(x4, y4)x1 = x2y1 = y2x3 = x4y3 = y4WendForm2.Picture1.Line (dt1 + dt6 + dt2, s1)-(2 * pi, s1)Form2.Picture2.Line (dt1 + dt6 + dt2, v1)-(2 * pi, v1) '绘制近休是的s曲线End SubPrivate Sub Command2_Click()Form2.Picture1.ClsForm2.Picture2.ClsForm2.Picture3.ClsForm2.Text1 = ""Form2.Text2 = ""Form2.Text3 = ""Form2.Text4 = ""Form2.Text5 = "" '曲线清空End Sub。

相关主题