【VB+数控原理与系统】数控原理与系统课程设计刀具半径补偿直线-直线VB模拟软件实现

这是一个南京工程学院数控专业课程设计项目,使用VB编程实现了直线-直线刀具半径补偿的模拟软件。根据直线的三个点,通过判断刀补阶段和直线夹角,确定补偿轨迹,并在图形界面展示。提供了工程文件和运行结果的下载链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本课题是刀具半径补偿的直线-直线软件实现,是南京工程学院数控专业的数控原理与系统的课程设计,整个工程都是自己随便弄弄的,作为课设作业还算比较严谨吧。题目不难,具体的直线-直线的刀具补偿原理,见机械工业出版社出版的汪木兰主编的《数控原理与系统》的P56~P59,这里不再赘述,具体的代码贴在下边,另外附件中有zip包附带整个工程文件(界面、工程、代码)。具体实现都很简单,因为学期末了,找工作的找工作,考研复试的复试,大多都没兴趣好好弄了,在这里贴上来方便大家交差把。

具体思路稍微一提,对给定的直线的3个点,首先在界面中选择刀补阶段,到底是刀补建立,还是刀补进行,还是刀补撤销,进一步通过直线投影判断两直线夹角,分为伸长型,缩短型,插入型三种情况,分别予以讨论,计算出补偿后的刀具轨迹,然后加以在PICTUREbox中显示。

VB工程代码:

        

Public X0 As Double, Y0 As Double, X1 As Double, Y1 As Double, X2 As Double, Y2 As Double, R As Double
Public Xs1 As Double, Ys1 As Double, Xs2 As Double, Ys2 As Double
Public Ori As Integer
Public Xl1 As Double, Yl1 As Double, Xl2 As Double, Yl2 As Double, dX1 As Double, dY1 As Double, dX2 As Double, dY2 As Double, d1 As Double, d2 As Double

Private Sub Command1_Click()

Dim X1_FWD As Integer, Y1_FWD As Integer, X2_FWD As Integer, Y2_FWD As Integer
Dim alfa As Double, beta As Double

Call PaintAxis

'绘制补偿前图像
Picture1.ForeColor = vbBlue
Picture1.DrawWidth = 1
Picture1.Line (X0, Y0)-(X1, Y1)
Picture1.Line (X1, Y1)-(X2, Y2)

'算法设计

'计算坐标增量
dX1 = X1 - X0
dY1 = Y1 - Y0
dX2 = X2 - X1
dY2 = Y2 - Y1

alfa = Atn(dY1 / dX1)

beta = Atn(dY2 / dX2)

If dX1 >= 0 Then
X1_FWD = 1
Else
X1_FWD = -1
End If

If dX2 >= 0 Then
X2_FWD = 1
Else
X2_FWD = -1
End If

If dY1 >= 0 Then
Y1_FWD = 1
Else
Y1_FWD = -1
End If

If dY2 >= 0 Then
Y2_FWD = 1
Else
Y2_FWD = -1
End If

'计算d1,d2
d1 = Sqr(dX1 ^ 2 + dY1 ^ 2)
d2 = Sqr(dX2 ^ 2 + dY2 ^ 2)
'计算方向矢量投影
Xl1 = dX1 / d1
Yl1 = dY1 / d1
Xl2 = dX2 / d2
Yl2 = dY2 / d2

'判断缩短型,伸长型,插入型


If Ori * (Yl2 * Xl1 - Xl2 * Yl1) >= 0 Then '缩短型
    
    '刀补建立
    If Combo1.ListIndex = 0 And Ori * (Yl2 * 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 + dY2)
    
    '刀补进行
    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
 
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值