南京工程学院数控原理与系统课程设计_直线-直线刀具补偿刀补程序源代码_第1页
南京工程学院数控原理与系统课程设计_直线-直线刀具补偿刀补程序源代码_第2页
南京工程学院数控原理与系统课程设计_直线-直线刀具补偿刀补程序源代码_第3页
南京工程学院数控原理与系统课程设计_直线-直线刀具补偿刀补程序源代码_第4页
南京工程学院数控原理与系统课程设计_直线-直线刀具补偿刀补程序源代码_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 数控122 太劣阿昕哥四、程序设计Public X0 As Double, Y0 As Double, X1 As Double, Y1 As Double, X2 As Double, Y2 As Double, R As DoublePublic Xs1 As Double, Ys1 As Double, Xs2 As Double, Ys2 As DoublePublic Ori As IntegerPublic Xl1 As Double, Yl1 As Double, Xl2 As Double, Yl2 As Double, dX1 As Double, dY1 As Doubl

2、e, dX2 As Double, dY2 As Double, d1 As Double, d2 As DoublePrivate Sub Command1_Click()Dim X1_FWD As Integer, Y1_FWD As Integer, X2_FWD As Integer, Y2_FWD As IntegerDim alfa As Double, beta As DoubleCall PaintAxis'绘制补偿前图像Picture1.ForeColor = vbBluePicture1.DrawWidth = 1Picture1.Line (X0, Y0)-(X1

3、, Y1)Picture1.Line (X1, Y1)-(X2, Y2)'算法设计'计算坐标增量dX1 = X1 - X0dY1 = Y1 - Y0dX2 = X2 - X1dY2 = Y2 - Y1alfa = Atn(dY1 / dX1)beta = Atn(dY2 / dX2)If dX1 >= 0 ThenX1_FWD = 1ElseX1_FWD = -1End IfIf dX2 >= 0 ThenX2_FWD = 1ElseX2_FWD = -1End IfIf dY1 >= 0 ThenY1_FWD = 1ElseY1_FWD = -1End If

4、If dY2 >= 0 ThenY2_FWD = 1ElseY2_FWD = -1End If'计算d1,d2d1 = Sqr(dX1 2 + dY1 2)d2 = Sqr(dX2 2 + dY2 2)'计算方向矢量投影Xl1 = dX1 / d1Yl1 = dY1 / d1Xl2 = dX2 / d2Yl2 = dY2 / d2'判断缩短型,伸长型,插入型If Ori * (Yl2 * Xl1 - Xl2 * Yl1) >= 0 Then '缩短型 '刀补建立 If Combo1.ListIndex = 0 And Ori * (Yl2 *

5、 Xl1 - Xl2 * Yl1) <> 0 Then Xs1 = X1 - R * Ori * Yl2 Ys1 = Y1 + R * Ori * Xl2 X_0p.Text = X0 Y_0p.Text = Y0 X_s1.Text = Xs1 Y_s1.Text = Ys1 X_2p.Text = Xs1 + dX2 Y_2p.Text = Ys1 + dY2 Picture1.ForeColor = vbMagenta Picture1.Line (X0, Y0)-(Xs1, Ys1) Picture1.Line (Xs1, Ys1)-(Xs1 + dX2, Ys1 + dY

6、2) '刀补进行 ElseIf Combo1.ListIndex = 1 Then If Yl2 * Xl1 - Xl2 * Yl1 = 0 Then 'l1与l2共线 Xs1 = X1 - R * Ori * Yl1 Ys1 = Y1 + R * Ori * Xl1 X_0p.Text = Xs1 - dX1 Y_0p.Text = Ys1 - dY1 X_s1.Text = Xs1 Y_s1.Text = Ys1 X_2p.Text = Xs1 + dX2 Y_2p.Text = Ys1 + dY2 Picture1.ForeColor = vbMagenta Pictur

7、e1.Line (Xs1 - dX1, Ys1 - dY1)-(Xs1, Ys1) Picture1.Line (Xs1, Ys1)-(Xs1 + dX2, Ys1 + dY2) Else ' l1与l2不共线 Xs1 = X1 + (Xl2 - Xl1) * Ori * R / (Xl1 * Yl2 - Xl2 * Yl1) Ys1 = Y1 + (Yl2 - Yl1) * Ori * R / (Xl1 * Yl2 - Xl2 * Yl1) X_0p.Text = Xs1 - dX1 Y_0p.Text = Ys1 - dY1 X_s1.Text = Xs1 Y_s1.Text =

8、Ys1 X_2p.Text = Xs1 + dX2 Y_2p.Text = Ys1 + dY2 Picture1.ForeColor = vbMagenta Picture1.Line (Xs1 - dX1, Ys1 - dY1)-(Xs1, Ys1) Picture1.Line (Xs1, Ys1)-(Xs1 + dX2, Ys1 + dY2) End If '刀补撤销 ElseIf Combo1.ListIndex = 2 And Ori * (Yl2 * Xl1 - Xl2 * Yl1) <> 0 Then Xs1 = X1 - R * Ori * Yl1 Ys1 =

9、 Y1 + R * Ori * Xl1 X_0p.Text = Xs1 - dX1 Y_0p.Text = Ys1 - dY1 X_s1.Text = Xs1 Y_s1.Text = Ys1 X_2p.Text = X2 Y_2p.Text = Y2 Picture1.ForeColor = vbMagenta Picture1.Line (Xs1 - dX1, Ys1 - dY1)-(Xs1, Ys1) Picture1.Line (Xs1, Ys1)-(X2, Y2) End IfElseIf Ori * (Yl2 * Xl1 - Xl2 * Yl1) < 0 And (Yl2 *

10、Yl1 + Xl2 * Xl1) >= 0 Then '伸长型 '刀补建立 If Combo1.ListIndex = 0 Then '第一对转接点 Xs1 = X1 - R * Ori * Yl1 Ys1 = Y1 + R * Ori * Yl1 '第二对转接点 Xs2 = X1 + (Xl2 - Xl1) * R * Ori / (Xl1 * Yl2 - Xl2 * Yl1) Ys2 = Y1 + (Yl2 - Yl1) * R * Ori / (Xl1 * Yl2 - Xl2 * Yl1) '输出坐标 'X0',Y0'

11、 X_0p.Text = X0 Y_0p.Text = Y0 'Xs1,Ys1 X_s1.Text = Xs1 Y_s1.Text = Ys1 'Xs2,Ys2 X_s2.Text = Xs2 Y_s2.Text = Ys2 'X2' Y2' X_2p.Text = Xs2 + dX2 Y_2p.Text = Ys2 + dY2 '绘图 Picture1.ForeColor = vbMagenta Picture1.Line (X0, Y0)-(Xs1, Ys1) Picture1.Line (Xs1, Ys1)-(Xs2, Ys2) Pictu

12、re1.Line (Xs2, Ys2)-(Xs2 + dX2, Ys2 + dY2) '刀补进行 ElseIf Combo1.ListIndex = 1 Then Xs1 = X1 + (Xl2 - Xl1) * R * Ori / (Xl1 * Yl2 - Xl2 * Yl1) Ys1 = Y1 + (Yl2 - Yl1) * R * Ori / (Xl1 * Yl2 - Xl2 * Yl1) '输出坐标 'X0',Y0' X_0p.Text = X0 Y_0p.Text = Y0 'Xs1,Ys1 X_s1.Text = Xs1 Y_s1.T

13、ext = Ys1 'X2' Y2' X_2p.Text = Xs2 + dX2 Y_2p.Text = Ys2 + dY2 '绘图 Picture1.ForeColor = vbMagenta Picture1.Line (Xs1 - dX1, Ys1 - dY1)-(Xs1, Ys1) Picture1.Line (Xs1, Ys1)-(Xs1 + dX2, Ys1 + dY2) '刀补撤销 ElseIf Combo1.ListIndex = 2 Then Xs1 = X1 + (Xl2 - Xl1) * R * Ori / (Xl1 * Yl2 -

14、 Xl2 * Yl1) Ys1 = Y1 + (Yl2 - Yl1) * R * Ori / (Xl1 * Yl2 - Xl2 * Yl1) Xs2 = X1 - R * Ori * Yl2 Ys2 = Y1 + R * Ori * Xl2 '输出坐标 'X0',Y0' X_0p.Text = Xs1 - dX1 Y_0p.Text = Ys1 - dY1 'Xs1,Ys1 X_s1.Text = Xs1 Y_s1.Text = Ys1 'Xs2,Ys2 X_s2.Text = Xs2 Y_s2.Text = Ys2 'X2' Y

15、2' X_2p.Text = X2 Y_2p.Text = Y2 '绘图 Picture1.ForeColor = vbMagenta Picture1.Line (Xs1 - dX1, Ys1 - dY1)-(Xs1, Ys1) Picture1.Line (Xs1, Ys1)-(Xs2, Ys2) Picture1.Line (Xs2, Ys2)-(X2, Y2) End IfElseIf Ori * (Yl2 * Xl1 - Xl2 * Yl1) < 0 And (Yl2 * Yl1 + Xl2 * Xl1) < 0 Then '插入型 '刀补

16、建立 If Combo1.ListIndex = 0 Then '第一对转接点 Xs1 = X1 - R * Ori * Yl1 Ys1 = Y1 + R * Ori * Xl1 '第二对转接点 Xs2 = X1 - Ori * R * Yl1 + R * Xl1 Ys2 = Y1 + Ori * R * Xl1 + R * Yl1 '第三对转接点 Xs3 = X1 - R * Ori * Yl2 - R * Xl2 Ys3 = Y1 + R * Ori * Xl2 - R * Yl2 '输出坐标 'X0',Y0' X_0p.Text =

17、 X0 Y_0p.Text = Y0 'Xs1,Ys1 X_s1.Text = Xs1 Y_s1.Text = Ys1 'Xs2,Ys2 X_s2.Text = Xs2 Y_s2.Text = Ys2 'Xs3,Ys3 X_s3.Text = Xs3 Y_s3.Text = Ys3 'X2' Y2' X_2p.Text = Xs3 + dX2 + Abs(R * Cos(beta) * X2_FWD Y_2p.Text = Ys3 + dY2 + Abs(R * Sin(beta) * X2_FWD '绘图 Picture1.ForeCo

18、lor = vbMagenta Picture1.Line (X0, Y0)-(Xs1, Ys1) Picture1.Line (Xs1, Ys1)-(Xs2, Ys2) Picture1.Line (Xs2, Ys2)-(Xs3, Ys3) Picture1.Line (Xs3, Ys3)-(Xs3 + dX2 + Abs(R * Cos(beta) * X2_FWD, Ys3 + dY2 + Abs(R * Sin(beta) * Y2_FWD) '刀补进行 ElseIf Combo1.ListIndex = 1 Then '第一对转接点 Xs1 = X1 - R * Or

19、i * Yl1 + R * Xl1 Ys1 = Y1 + R * Ori * Xl1 + R * Yl1 '第二对转接点 Xs2 = X1 - R * Ori * Yl2 - R * Xl2 Ys2 = Y1 + R * Ori * Xl2 - R * Yl2 '输出坐标 'X0',Y0' X_0p.Text = Xs1 - dX1 - Abs(R * Cos(alfa) * X1_FWD Y_0p.Text = Ys1 - dY1 - Abs(R * Sin(alfa) * Y1_FWD 'Xs1,Ys1 X_s1.Text = Xs1 Y_s

20、1.Text = Ys1 'Xs2,Ys2 X_s2.Text = Xs2 Y_s2.Text = Ys2 'X2' Y2' X_2p.Text = Xs2 + dX2 + Abs(R * Cos(beta) * X2_FWD Y_2p.Text = Ys2 + dY2 + Abs(R * Sin(beta) * Y2_FWD '绘图 Picture1.ForeColor = vbMagenta Picture1.Line (Xs1 - dX1 - Abs(R * Cos(alfa) * X1_FWD, Ys1 - dY1 - Abs(R * Sin(a

21、lfa) * Y1_FWD)-(Xs1, Ys1) Picture1.Line (Xs1, Ys1)-(Xs2, Ys2) Picture1.Line (Xs2, Ys2)-(Xs2 + dX2 + Abs(R * Cos(beta) * X2_FWD, Ys2 + dY2 + Abs(R * Sin(beta) * Y2_FWD) '刀补撤销 ElseIf Combo1.ListIndex = 2 Then '第一对转接点 Xs1 = X1 - R * Ori * Yl1 + R * Xl1 Ys1 = Y1 + R * Ori * Xl1 + R * Yl1 '第二

22、对转接点 Xs2 = X1 - R * Ori * Yl2 - R * Xl2 Ys2 = Y1 + R * Ori * Xl2 - R * Yl2 '第三对转接点 Xs3 = X1 - R * Ori * Yl2 Ys3 = Y1 + R * Ori * Xl2 '输出坐标 'X0',Y0' X_0p.Text = Xs1 - dX1 - Abs(R * Cos(alfa) * X1_FWD Y_0p.Text = Ys1 - dY1 - Abs(R * Sin(alfa) * Y1_FWD 'Xs1,Ys1 X_s1.Text = Xs1 Y

23、_s1.Text = Ys1 'Xs2,Ys2 X_s2.Text = Xs2 Y_s2.Text = Ys2 'Xs3,Ys3 X_s3.Text = Xs3 Y_s3.Text = Ys3 'X2' Y2' X_2p.Text = X2 Y_2p.Text = Y2 '绘图 Picture1.ForeColor = vbMagenta Picture1.Line (Xs1 - dX1 - Abs(R * Cos(alfa) * X1_FWD, Ys1 - dY1 - Abs(R * Sin(alfa) * Y1_FWD)-(Xs1, Ys1)

24、 Picture1.Line (Xs1, Ys1)-(Xs2, Ys2) Picture1.Line (Xs2, Ys2)-(Xs3, Ys3) Picture1.Line (Xs3, Ys3)-(X2, Y2) End IfEnd IfEnd SubPrivate Sub Command2_Click()Call PaintAxisEnd SubPrivate Sub Form_Load()'补偿后坐标不可编辑,只读X_0p.Locked = TrueY_0p.Locked = TrueX_s1.Locked = TrueY_s1.Locked = TrueX_s2.Locked =

25、 TrueY_s2.Locked = TrueX_2p.Locked = TrueY_2p.Locked = True'初始化ComboBox 两个Combo1.AddItem "刀补建立", 0Combo1.AddItem "刀补进行", 1Combo1.AddItem "刀补撤销", 2End SubPrivate Sub Text1_Change()End SubPrivate Sub Option1_Click()Ori = 1End SubPrivate Sub Option2_Click()Ori = -1End

26、SubPrivate Sub Picture1_Paint()Call PaintAxisEnd SubPrivate Sub Text9_Change()R = Val(R_K.Text)End SubPrivate Sub R_K_Change()R = Val(R_K.Text)End SubPrivate Sub X_0_Change()'赋值坐标X0 = Val(X_0.Text)End SubPrivate Sub X_1_Change()'赋值坐标X1 = Val(X_1.Text)End SubPrivate Sub X_2_Change()'赋值坐标X

27、2 = Val(X_2.Text)End SubPrivate Sub Y_0_Change()'赋值坐标Y0 = Val(Y_0.Text)End SubPrivate Sub Y_1_Change()'赋值坐标Y1 = Val(Y_1.Text)End SubPrivate Sub Y_2_Change()'赋值坐标Y2 = Val(Y_2.Text)End SubPrivate Sub PaintAxis()ClsDim i As IntegerPicture1.BackColor = vbWhitePicture1.ForeColor = vbBlackPicture1.Scale (-1000, 1000)-(1000, -1000)Picture1.DrawWidth = 2Picture1.Line (-1000, 0)-(1000, 0) '画x轴Picture1.Line (1000, 0)-(970, 15) '画箭头Picture1.Line (1000, 0)-(970, -15) '画箭头Picture1.Line (0, -1000)-(0, 1000) '画y轴Picture1.Line (0, 1000)-(10, 964)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论