机床数控课设(插补)_第1页
机床数控课设(插补)_第2页
机床数控课设(插补)_第3页
机床数控课设(插补)_第4页
机床数控课设(插补)_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

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

文档简介

1、、 课设任务用DDA法插补第二象限直线。用逐点比较法插补第三到第二象限顺圆弧。、课设要求1 、具有数据输入界面,有起点、终点、半径及插补步长等;2 、具有单步插补过程的动态显示功能;3 、插补的步长可调;、编程语言Visual Basic四、功能说明本程序用逐点比较法插补第二象限的直线, 及第三二象限的顺圆 弧,可进行连续插补或单步插补。1、直线插补:用逐点比较法实现第二象限任意直线的插补,需 要输入起点、终点坐标及步长。2、圆弧插补:用逐点比较法实现第三二象限的顺圆弧段的插补,需要输入起点、终点坐标、半径和步长。3、插补步长可调。4、可以单步执行所有插补动作,单击一次按钮执行一次插补 五、程

2、序内容DDA法插补第二象限直线1、源程序:Dim A, B, C, D, E, F, G, I, J, E, F As Single*连续直线插补*Private Sub Command1_Click()If (-C + A) > (D - B) Then F = -C + A Else: F = D - B G = 1Do While (2 A G) <= FG = G + 1LoopFor H = 0 To (2 A G) Step 1I = I + (-C + A) x1 = x2If (I / (2 A G) >= E Then I = I - E * (2 A G)

3、: x2 = x2 - EJ = J + (D - B) y1 = y2If (J / (2 A G) >= E Then J = J - E * (2 A G): y2 = y2 - E (x2 * , y2 * -(x1 * , y1 * , vbGreenNext H(C * , -D * -(A * , -B * , vbRed End Sub*单步直线插补*Private Sub Command2_Click()If (-C + A) > (D - B) Then F = -C + A Else: F = D - BG = 1Do While (2 A G) <=

4、FG = G + 1(C * , -D * -(A * , -B * , vbRedLoopI = I + (-C + A)J = J + (D - B)If (I / (2 A G) >= E And (J / (2 A G) >= E Then (x2 - E) * , (y2 - E) * -(x2 * , y2 * , vbGreenI = I - E * (2 A G)J = J - E * (2 A G) x2 = x2 - E y2 = y2 - EElseIf (I / (2 A G) >= E And (J / (2 A G) < E Then (x2

5、 - E) * , y2 * -(x2 * , y2 * , vbGreenI = I - E * (2 A G) x2 = x2 - EElseIf (I / (2 A G) < E And (J / (2 A G) >= E Then (x2 * , (y2 - E) * -(x2 * , y2 * , vbGreenJ = J - E * (2 A G)y2 = y2 - EEnd IfEnd Sub 3. DDA 法插补第二象限直线的流程图:Y结束逐点比较法插补第三到第二象限顺圆弧1.源程序:Dim XO, YO, CXY, CD, CX1, CY1, CX2, CY2,

6、CX11, CY11, CX22, CY22, ci, R, a1, b1, c1, d1, e1, x1, y1, x2, y2 As Si ngleCONST Pi=*连续圆弧插补 *Private Sub Command6_Click()di = 1 / 2 * (CX22 A 2 + CY22 A 2 - CX11 A 2 - CY11 A 2) / (CY22 - CY11)e1 = (CX11 - CX22) / (CY22 - CY11)a1 = 1 + e1 A 2b1 = 2 * d1 * e1 - 2 * CX11 - 2 * CY11 * e1c1 = CX11 A 2

7、+ CY11 A 2 + d1 A 2 - 2 * d1 * CY11 - R A 2X0 = (-b1 + Sqr(b1 A 2 - 4 * a1 * c1) / (2 * a1)*求得圆Y0 = d1 + e1 * X0 心If CX1 <> X0 And CX2 <> X0 Theno = Atn(CY1 - Y0) / (CX1 - X0) + Pi o1 = Atn(CY2 - Y0) / (CX2 - X0) + Pi*起始角终止角4(X0, Y0), R, vbRed, o1, oElse*画圆*开始插补过程(X0, Y0), R, vbRed, 2 /

8、Pi, 3 * Pi / 2 End If again:If CY1 < Y0 ThenIf (CX1 - X0) A 2 + (CY1 - Y0) A 2 <= R A 2 Then (CX1, CY1)-(CX1 - ci, CY1)CX1 = CX1 - ciElse(CX1, CY1)-(CX1, CY1 + ci)CY1 = CY1 + ciEnd IfElseIf (CX1 - X0) A 2 + (CY1 - Y0) A 2 <= R A 2 Then (CX1, CY1)-(CX1, CY1 + ci)CY1 = CY1 + ciElse(CX1, CY1)-

9、(CX1 + ci, CY1)CX1 = CX1 + ciEnd IfEnd IfIf (CX1 - CX2) A 2 + (CY1 - CY2) A 2 > (CX1 - CX2 + ci) A 2 + (CY1 - CY2) A 2 Or (CX1 - CX2) A 2 + (CY1 - CY2) A 2 > (CX1 - CX2 - ci) A 2 + (CY1 - CY2) A 2 Or (CX1 - CX2) A 2 + (CY1 - CY2) A 2 > (CX1 - CX2) A 2 + (CY1 - CY2 + ci) A 2 Or (CX1 - CX2) A

10、 2 + (CY1 - CY2) A 2 > (CX1 - CX2) A 2 + (CY1 - CY2 - ci) A 2 ThenGoTo againElseEnd If#End Sub*单步圆弧插补 *5Private Sub Command7_Click()di = 1 / 2 * (CX22 A 2 + CY22 A 2 - CX11 A 2 - CY11 A 2) / (CY22 - CY11)e1 = (CX11 - CX22) / (CY22 - CY11)a1 = 1 + e1 A 2b1 = 2 * d1 * e1 - 2 * CX11 - 2 * CY11 * e1c

11、1 = CX11 A 2 + CY11 A 2 + d1 A 2 - 2 * d1 * CY11 - R A 2X0 = (-b1 + Sqr(b1 A 2 - 4 * a1 * c1) / (2 * a1)*求得Y0 = d1 + e1 * X0 圆心If CX1 <> X0 And CX2 <> X0 Then o = Atn(CY1 - Y0) / (CX1 - X0) + Pi o1 = Atn(CY2 - Y0) / (CX2 - X0) + Pi(X0, Y0), R, vbRed, o1, oElse*终止角终止角#*(X0, Y0), R, vbRed,

12、 2 / Pi, 3 * Pi / 2 End If画圆If (CX1 - CX2) A 2 + (CY1 - CY2) A 2 > (CX1 - CX2 + ci) A 2 + (CY1- CY2) A 2 Or (CX1 - CX2) A 2 + (CY1 - CY2) A 2 > (CX1 - CX2 - ci) A2 + (CY1 - CY2) A 2 Or (CX1 - CX2) A 2 + (CY1 - CY2) A 2 > (CX1 - CX2) A 2 + (CY1 - CY2 + ci) A 2 Or (CX1 - CX2) A 2 + (CY1 - CY2

13、) A 2 > (CX1- CX2) A 2 + (CY1 - CY2 - ci) A 2 ThenElse*开始插GoTo cover 补过程End IfIf CY1 < Y0 ThenIf (CX1 - X0) A 2 + (CY1 - Y0) A 2 <= R A 2 Then (CX1, CY1)-(CX1 - ci, CY1)CX1 = CX1 - ciElse(CX1, CY1)-(CX1, CY1 + ci)CY1 = CY1 + ciEnd IfElseIf (CX1 - X0) A 2 + (CY1 - Y0) A 2 <= R A 2 Then (C

14、X1, CY1)-(CX1, CY1 + ci)CY1 = CY1 + ciElse(CX1, CY1)-(CX1 + ci, CY1)CX1 = CX1 + ciEnd IfEnd Ifcover:End Sub2. 变量说明:CX仁圆弧起点的横坐标值,CY1圆弧起点的纵坐标值CX2二圆弧终点的横坐标值,CY2圆弧终点的纵坐标值X0=圆弧半径的横坐标值,Y0二圆弧半径的纵坐标值R=圆弧半径,ci=圆弧插补的步长a1,b1,c1,d1为计算圆点的中间变量3. 逐点比较法插补第三象限顺圆弧程序流程图起始结束逐点比较法插补第二象限顺圆弧程序流程图:6六、程序界面及运行结果DDA插补第二象限直线运行

15、界面DDA插补第二象限直线运行结果8逐点比较法插补二三象限顺圆弧运行界面逐点比较法插补二三象限顺圆弧运行结果七、课设中遇到的问题及解决办法1、在进行单步插补时出现问题,单步插补出不来定义的变量应为全局变量,通过按钮来实现单步操作。按第 一次按钮,程序执行一步,按第二次时,程序执行两步,及将第一步 做的覆盖后在多做一步。依此,每次按下按钮都比前一次多做一步, 这样,作图时就表现为单步运行。2、在圆弧插补是画出的圆跟圆弧的插补在起点和终点处不重合在画图的pitcure 属性中的scaletop和scalewidth 的值应相等,否则画出的横纵坐标不等,导致在横坐标和纵坐标上的长对 不等使得与圆弧不重合。3、如何解决起点不是原点的直线的插补若是起点不是原点的话,可以将起点平移到原点位置,而终 点也相应的平移即可, 这样就解决了起点不是原点的问题。 根据这个 思想在判断象限时就拿终点坐标和起点坐标比较来判断终点属于哪 个象限。和插补直线一样,当圆心不是原点时,可以将圆心平移到原 点位置,圆上各点相应的平移即可。八、心得体会通过这次的机床数控课程设计, 使我加深了对数控机床的插补的 了解,更好的掌握了逐点比较法的插补原理。这次课程设计选择了 Visual Ba

温馨提示

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

评论

0/150

提交评论