《机床数控技术》课程设计说明书班级:学号:姓名:指导教师:时间说明书⑴课设任务:⒈ DL2 ,DDA法插补第二象限直线⒉ PA34,逐点比较法插补第3-4象限逆圆弧⑵课设要求:⒈具有数据输入界面,如起点、终点、圆心、半径及插补步长等⒉具有插补过程的动态显示功能,如单步插补、连续插补⒊插补的步长可调⑶编程语言:Visual Basic⑷程序设计流程图:DDA法插补第二象限直线:逐点比较法插补第3-4象限逆圆弧:⑸变量说明、源程序Dim A!, B!, C!, D!, E!, F!, G!, H!, I!, J!, K!, L!, M!, N!, P!, Q!Dim X1!, X2!, X3!, F1!, Xp!, Yp!, Y1!, Y2!, Y3!, X0!, Y0!, R!, S!, T!, U!, V!, W!, X!, Y!, Z!,o1!Private Sub Command1_Click() ******************直线DDA连续插补A = Text1.TextB = Text2.Text 直线起点坐标(A,B)C = Text3.TextD = Text4.Text 直线终点坐标(C,D)E = Text5.Text 直线插补步长F = (A - C)G = (D - B)Picture1.Line (A, B)-(C, D)If F > G Then H = F Else: H = GI = 1Do While (2 ^ I) <= HI = I + 1LoopJ = 0K = 0L = AM = BFor N = 0 To (2 ^ I) Step 1J = J + FP = LIf (J / (2 ^ I)) >= E Then J = J - E * (2 ^ I): L = L - EK = K + GQ = MIf (K / (2 ^ I)) >= E Then K = K - E * (2 ^ I): M = M + EPicture1.Line (P, Q)-(L, M), vbRedNext NEnd SubPrivate Sub Command2_Click() *******************圆弧单步逐点插补X1 = Text6.TextY1 = Text7.TextX2 = Text8.TextY2 = Text9.TextR = Text10.TextU = Text11.TextDim xe, ye As Singlexe = (X1 + X2) / 2ye = (Y1 + Y2) / 2S = Sqr(((X2 - X1) ^ 2 + (Y2 - Y1) ^ 2)) / 2T = (Y2 - Y1) / (X2 - X1)If Y1 = Y2 ThenX0 = (X1 + X2) / 2Y0 = Y1 + Sqr(R ^ 2 - S ^ 2)ElseIf Y1 < Y2 ThenX0 = xe - Sqr((R ^ 2 - S ^ 2) * T ^ 2 / (1 + T ^ 2))Y0 = (xe - X0) / T + yeElseIf Y1 > Y2 ThenX0 = xe + Sqr((R ^ 2 - S ^ 2) * T ^ 2 / (1 + T ^ 2))Y0 = (xe - X0) / T + yeEnd IfIf (X0 < X1 And Y0 >= Y2) Then X = 2 * 3.14 + Atn((Y1 - Y0) / (X1 - X0)): Y = 2 * 3.14 + Atn((Y2 - Y0) / (X2 - X0))If (X0 = X1 And Y0 >= Y2) Then X = (3 * 3.14 / 2): Y = 2 * 3.14 + Atn((Y2 - Y0) / (X2 - X0))If (X0 > X1 And X0 < X2 And Y0 >= Y1 And Y0 >= Y2) Then X = 3.14 + Atn((Y1 - Y0) / (X1 - X0)): Y = 2 * 3.14 + Atn((Y2 - Y0) / (X2 - X0))If (X0 > X2 And Y0 >= Y1) Then X = 3.14 + Atn((Y1 - Y0) / (X1 - X0)): Y = 3.14 + Atn((Y2 - Y0) / (X2 - X0))If (X0 = X2 And Y0 >= Y1) Then X = 3.14 + Atn((Y1 - Y0) / (X1 - X0)): Y = (3 * 3.14) / 2 Picture1.Circle (X0, Y0), R, , X, YSelect Case (o1 = 0)Case 1F1 = 0Xp = X1Yp = Y1o1 = 1End SelectIf (Xp >= X1 And Xp < X0 And Xp < X2) ThenIf F1 >= 0 ThenF1 = F1 + (2 * (Xp - X0)) + U ^ 2: V = Xp: Xp = Xp + UPicture1.Line (V, Yp)-(Xp, Yp), vbBlueElseF1 = F1 - (2 * (Yp - Y0)) + U ^ 2: W = Yp: Yp = Yp - UPicture1.Line (Xp, W)-(Xp, Yp), vbBlueEnd IfElseIf (Xp >= X0 And (Xp < X2 Or Yp < Y2)) ThenSelect Case (Xp > X2)Case 0If F1 >= 0 ThenF1 = F1 + (2 * (Yp - Y0)) + U ^ 2: W = Yp: Yp = Yp + UPicture1.Line (Xp, W)-(Xp, Yp), vbBlueElseF1 = F1 + (2 * (Xp - X0)) + U ^ 2: V = Xp: Xp = Xp + UPicture1.Line (V, Yp)-(Xp, Yp), vbBlueEnd IfEnd SelectEnd IfEnd SubPrivate Sub Command4_Click() ******************圆弧连续逐点插补X1 = Text6.TextY1 = Text7.Text 圆弧起点坐标(X1,Y1)X2 = Text8.TextY2 = Text9.Text 圆弧终点坐标(X2,Y2)R = Text10.Text 圆弧半径U = Text11.Text 圆弧插补步长Dim xe, ye As Singlexe = (X1 + X2) / 2ye = (Y1 + Y2) / 2S = Sqr(((X2 - X1) ^ 2 + (Y2 - Y1) ^ 2)) / 2T = (Y2 - Y1) / (X2 - X1)If Y1 = Y2 ThenX0 = (X1 + X2) / 2Y0 = Y1 + Sqr(R ^ 2 - S ^ 2)ElseIf Y1 < Y2 ThenX0 = xe - Sqr((R ^ 2 - S ^ 2) * T ^ 2 / (1 + T ^ 2))Y0 = (xe - X0) / T + yeElseIf Y1 > Y2 ThenX0 = xe + Sqr((R ^ 2 - S ^ 2) * T ^ 2 / (1 + T ^ 2))Y0 = (xe - X0) / T + ye 圆弧圆心(X0,Y0)End IfIf (X0 < X1 And Y0 >= Y2) Then X = 2 * 3.14 + Atn((Y1 - Y0) / (X1 - X0)): Y = 2 * 3.14 + Atn((Y2 - Y0) / (X2 - X0))If (X0 = X1 And Y0 >= Y2) Then X = (3 * 3.14 / 2): Y = 2 * 3.14 + Atn((Y2 - Y0) / (X2 - X0))If (X0 > X1 And X0 < X2 And Y0 >= Y1 And Y0 >= Y2) Then X = 3.14 + Atn((Y1 - Y0) / (X1 - X0)): Y = 2 * 3.14 + Atn((Y2 - Y0) / (X2 - X0))If (X0 > X2 And Y0 >= Y1) Then X = 3.14 + Atn((Y1 - Y0) / (X1 - X0)): Y = 3.14 + Atn((Y2 - Y0) / (X2 - X0))If (X0 = X2 And Y0 >= Y1) Then X = 3.14 + Atn((Y1 - Y0) / (X1 - X0)): Y = (3 * 3.14) / 2 Picture1.Circle (X0, Y0), R, , X, YF1 = 0Xp = X1Yp = Y1Do While (Xp >= X1 And Xp < X0 And Xp < X2)If F1 >= 0 ThenF1 = F1 + (2 * (Xp - X0)) + U ^ 2: V = Xp: Xp = Xp + UPicture1.Line (V, Yp)-(Xp, Yp), vbRedElseF1 = F1 - (2 * (Yp - Y0)) + U ^ 2: W = Yp: Yp = Yp - UPicture1.Line (Xp, W)-(Xp, Yp), vbRedEnd IfLoopDo While (Xp >= X0 And (Xp < X2 Or Yp < Y2))Select Case (Xp > X2)Case 0If F1 >= 0 ThenF1 = F1 + (2 * (Yp - Y0)) + U ^ 2: W = Yp: Yp = Yp + UPicture1.Line (Xp, W)-(Xp, Yp), vbRedElseF1 = F1 + (2 * (Xp - X0)) + U ^ 2: V = Xp: Xp = Xp + UPicture1.Line (V, Yp)-(Xp, Yp), vbRedEnd IfEnd SelectLoopEnd SubPrivate Sub Command5_Click() ****************DDA单步直线插补A = Text1.TextB = Text2.TextC = Text3.TextD = Text4.TextE = Text5.TextF = (A - C)G = (D - B)Picture1.Line (A, B)-(C, D)If F > G Then H = F Else: H = GI = 1Do While (2 ^ I) <= HI = I + 1LoopSelect Case (L = C Or M = D)Case 0P = LQ = MDo While (P = L And Q = M)If (K / (2 ^ I)) >= E Then K = K - E * (2 ^ I): M = M + EK = K + GIf (J / (2 ^ I)) >= E Then J = J - E * (2 ^ I): L = L - EJ = J + FLoopPicture1.Line (P, Q)-(L, M), vbBlueEnd SelectEnd SubPrivate Sub Command3_Click() ***********************直线清图Picture1.ClsPicture1.Scale (-21, 21)-(21, -21)Picture1.Line (-20, 0)-(20, 0)Picture1.Line (0, -20)-(0, 20)Picture1.Line (20, 0)-(19.5, 0.3)Picture1.Line (20, 0)-(19.5, -0.3)Picture1.Line (0, 20)-(0.3, 19.5)Picture1.Line (0, 20)-(-0.3, 19.5)Dim X4!, Y4!X4 = -20Y4= -20Do While X4 < 19X4 = X4 + 1Picture1.Line (X4, 0)-(X4, 0.2)LoopDo While Y4 < 19Y4 = Y4 + 1Picture1.Line (0, Y4)-(0.2, Y4)LoopL = AM = BJ = 0K = 0Picture1.CurrentX = 20Picture1.CurrentY = -1Picture1.Print "X"Picture1.CurrentX = 1Picture1.CurrentY = 20Picture1.Print "y"End SubPrivate Sub Command6_Click() ***********************圆弧清图Picture1.ClsPicture1.Scale (-21, 21)-(21, -21)Picture1.Line (-20, 0)-(20, 0)Picture1.Line (0, -20)-(0, 20)Picture1.Line (20, 0)-(19.5, 0.3)Picture1.Line (20, 0)-(19.5, -0.3)Picture1.Line (0, 20)-(0.3, 19.5)Picture1.Line (0, 20)-(-0.3, 19.5)Dim X4!, Y4!X4 = -20Y4 = -20Do While X4 < 19X4 = X4 + 1Picture1.Line (X4, 0)-(X4, 0.2)LoopDo While Y4 < 19Y4 = Y4 + 1Picture1.Line (0, Y4)-(0.2, Y4)Loopo1 = 0Picture1.CurrentX = 20Picture1.CurrentY = -1Picture1.Print "X"Picture1.CurrentX = 1Picture1.CurrentY = 20Picture1.Print "y"End SubPrivate Sub Command7_Click() *****************清数据Text1.Text = ""Text2.Text = ""Text3.Text = ""Text4.Text = ""Text5.Text = ""Text6.Text = ""Text7.Text = ""Text8.Text = ""Text9.Text = ""Text10.Text = ""Text11.Text=""End SubPrivate Sub Form_Load()L = AM = BJ = 0K = 0O1=0End SubPrivate Sub Picture1_Paint() *********************显示坐标Picture1.Scale (-21, 21)-(21, -21)Picture1.Line (-20, 0)-(20, 0)Picture1.Line (0, -20)-(0, 20)Picture1.Line (20, 0)-(19.5, 0.3)Picture1.Line (20, 0)-(19.5, -0.3)Picture1.Line (0, 20)-(0.3, 19.5)Picture1.Line (0, 20)-(-0.3, 19.5)Dim X4!, Y4!X4 = -20Y4 = -20Do While X4 < 19X4 = X4 + 1Picture1.Line (X4, 0)-(X4, 0.2)LoopDo While Y4 < 19Y4 = Y4 + 1Picture1.Line (0, Y4)-(0.2, Y4)LoopPicture1.CurrentX = 20Picture1.CurrentY = -1Picture1.Print "X"Picture1.CurrentX = 1Picture1.CurrentY = 20Picture1.Print "y"End Sub参考资料:《机床数控技术及应用》陈蔚防王宏涛主编,科学出版社;《Visual Basic 6.0 程序设计教程》张钧良主编,东南大学出版社、中国水利电出版社、上海交通大学出版社;。