南京工程学院数控原理与系统课程设计直线直线刀具补偿刀补程序源代码讲解.docx

上传人:b****1 文档编号:1718994 上传时间:2022-10-23 格式:DOCX 页数:12 大小:32.47KB
下载 相关 举报
南京工程学院数控原理与系统课程设计直线直线刀具补偿刀补程序源代码讲解.docx_第1页
第1页 / 共12页
南京工程学院数控原理与系统课程设计直线直线刀具补偿刀补程序源代码讲解.docx_第2页
第2页 / 共12页
南京工程学院数控原理与系统课程设计直线直线刀具补偿刀补程序源代码讲解.docx_第3页
第3页 / 共12页
南京工程学院数控原理与系统课程设计直线直线刀具补偿刀补程序源代码讲解.docx_第4页
第4页 / 共12页
南京工程学院数控原理与系统课程设计直线直线刀具补偿刀补程序源代码讲解.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

南京工程学院数控原理与系统课程设计直线直线刀具补偿刀补程序源代码讲解.docx

《南京工程学院数控原理与系统课程设计直线直线刀具补偿刀补程序源代码讲解.docx》由会员分享,可在线阅读,更多相关《南京工程学院数控原理与系统课程设计直线直线刀具补偿刀补程序源代码讲解.docx(12页珍藏版)》请在冰豆网上搜索。

南京工程学院数控原理与系统课程设计直线直线刀具补偿刀补程序源代码讲解.docx

南京工程学院数控原理与系统课程设计直线直线刀具补偿刀补程序源代码讲解

数控122太劣阿昕哥

四、程序设计

PublicX0AsDouble,Y0AsDouble,X1AsDouble,Y1AsDouble,X2AsDouble,Y2AsDouble,RAsDouble

PublicXs1AsDouble,Ys1AsDouble,Xs2AsDouble,Ys2AsDouble

PublicOriAsInteger

PublicXl1AsDouble,Yl1AsDouble,Xl2AsDouble,Yl2AsDouble,dX1AsDouble,dY1AsDouble,dX2AsDouble,dY2AsDouble,d1AsDouble,d2AsDouble

PrivateSubCommand1_Click()

DimX1_FWDAsInteger,Y1_FWDAsInteger,X2_FWDAsInteger,Y2_FWDAsInteger

DimalfaAsDouble,betaAsDouble

CallPaintAxis'绘制补偿前图像

Picture1.ForeColor=vbBlue

Picture1.DrawWidth=1

Picture1.Line(X0,Y0)-(X1,Y1)

Picture1.Line(X1,Y1)-(X2,Y2)'算法设计'计算坐标增量dX1=X1-X0dY1=Y1-Y0dX2=X2-X1dY2=Y2-Y1alfa=Atn(dY1/dX1)beta=Atn(dY2/dX2)

IfdX1>=0Then

X1_FWD=1

Else

X1_FWD=-1

EndIf

IfdX2>=0Then

X2_FWD=1

Else

X2_FWD=-1

EndIf

IfdY1>=0Then

Y1_FWD=1

Else

Y1_FWD=-1

EndIf

IfdY2>=0Then

Y2_FWD=1

Else

Y2_FWD=-1

EndIf'计算d1,d2d1=Sqr(dX1人2+dY1人2)d2=Sqr(dX2人2+dY2人2)

'计算方向矢量投影

Xl1=dX1/d1

Yl1=dY1/d1

Xl2=dX2/d2

Yl2=dY2/d2'判断缩短型,伸长型,插入型

IfOri*(Yl2*Xl1-Xl2*Yl1)>=0Then'缩短型

'刀补建立

IfCombo1.ListIndex=0AndOri*(Yl2*Xl1-Xl2*Yl1)<>0Then

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)

'刀补进行

ElseIfCombo1.ListIndex=1Then

IfYl2*Xl1-Xl2*Yl1=0Then'11与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

Picture1.Line(Xs1-dX1,Ys1-dY1)-(Xs1,Ys1)

Picture1.Line(Xs1,Ys1)-(Xs1+dX2,Ys1+dY2)

Else'11与12不共线

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=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)

EndIf

'刀补撤销

ElseIfCombo1.ListIndex=2AndOri*(Yl2*Xl1-Xl2*Yl1)<>0ThenXs1=X1-R*Ori*Yl1

Ys1=Y1+R*Ori*Xl1X_0p.Text=Xs1-dX1Y_0p.Text=Ys1-dY1X_s1.Text=Xs1Y_s1.Text=Ys1X_2p.Text=X2Y_2p.Text=Y2

Picture1.ForeColor=vbMagenta

Picture1.Line(Xs1-dX1,Ys1-dY1)-(Xs1,Ys1)

Picture1.Line(Xs1,Ys1)-(X2,Y2)

EndIf

ElseIfOri*(Yl2*Xl1-Xl2*Yl1)<0And(Yl2*Yl1+Xl2*Xl1)>=0Then'伸长型

'刀补建立

IfCombo1.ListIndex=0Then'第一对转接点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'

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)

Picture1.Line(Xs2,Ys2)-(Xs2+dX2,Ys2+dY2)

'刀补进行

ElseIfCombo1.ListIndex=1Then

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=X0Y_0p.Text=Y0'Xs1,Ys1X_s1.Text=Xs1Y_s1.Text=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)

'刀补撤销

ElseIfCombo1.ListIndex=2Then

Y_s1.Text=Ys1

'Xs2,Ys2

X_s2.Text=Xs2

Y_s2.Text=Ys2'X2'Y2'

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)

EndIf

ElseIfOri*(Yl2*Xl1-Xl2*Yl1)<0And(Yl2*Yl1+Xl2*Xl1)<0Then'插入型

'刀补建立

IfCombo1.ListIndex=0Then

'第一对转接点

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=X0Y_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.ForeColor=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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学 > 化学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1