版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026-2027学年铜仁市高考压轴卷物理试卷(含答案解析)
- 2026-2027学年云南省迪庆藏族自治州高三下学期第五次调研考试物理试题(含答案解析)
- 医院住院部护士2026年上半年病患护理工作总结
- 临床腰椎骨折病人护理查房
- 快乐暑假安全同行主题班会课件
- 2026 年秋季开学:小学开学第一课书香伴我快乐学习
- 2026年秋季小学开学第一课 劳动教育与实践主题班会
- 2026年北师大版小学三年级数学上册《正方形的周长》课时教案
- 26秋八年级英语上册《单词默写表》英汉互译
- 加速康复的工作展望
- 2026年乡镇自来水抄表客服招聘考试笔试试题(含答案)
- 容县辅警招聘考试题库 (答案+解析)
- 2025年福州市鼓楼区城投集团招聘笔试历年参考题库(含答案详解)
- 2026内蒙古呼伦贝尔市海拉尔区红旅文化旅游开发有限责任公司下属四家子公司招聘23人考试参考题库及答案详解
- 2026年山东事业编统考考试《综合应用能力》真题及答案解析
- 现代渔业园区规划布局方案
- 饲料学全套课件
- 助力新员工融入团队的入职培训计划
- 彭吉象《艺术学概论》100题-考研
- 质量保证体系图
- 护理带教实习生工作总结(3篇)
评论
0/150
提交评论