数控原理VB圆弧接圆弧课程设计Word文档格式.docx

上传人:b****4 文档编号:16902994 上传时间:2022-11-27 格式:DOCX 页数:16 大小:187.91KB
下载 相关 举报
数控原理VB圆弧接圆弧课程设计Word文档格式.docx_第1页
第1页 / 共16页
数控原理VB圆弧接圆弧课程设计Word文档格式.docx_第2页
第2页 / 共16页
数控原理VB圆弧接圆弧课程设计Word文档格式.docx_第3页
第3页 / 共16页
数控原理VB圆弧接圆弧课程设计Word文档格式.docx_第4页
第4页 / 共16页
数控原理VB圆弧接圆弧课程设计Word文档格式.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

数控原理VB圆弧接圆弧课程设计Word文档格式.docx

《数控原理VB圆弧接圆弧课程设计Word文档格式.docx》由会员分享,可在线阅读,更多相关《数控原理VB圆弧接圆弧课程设计Word文档格式.docx(16页珍藏版)》请在冰豆网上搜索。

数控原理VB圆弧接圆弧课程设计Word文档格式.docx

DimYy1AsSingle

DimStart1AsSingle'

第一段圆弧起始弧度

DimEnd1AsSingle'

第一段圆弧结束弧度

DimStart2AsSingle'

第二段圆弧起始弧度

DimEnd2AsSingle'

第二段圆弧结束弧度

ConstPi=3.1415926

 

PrivateSubCommand1_Click()

Picture1.Cls'

清除picturebox控件中的内容

Picture1.DrawWidth=1

X0=Val(Split(Text1.Text,"

"

)(0))'

将文本框中的文本从逗号分离并转化成数值

Y0=Val(Split(Text1.Text,"

(1))

X1=Val(Split(Text2.Text,"

)(0))

Y1=Val(Split(Text2.Text,"

X2=Val(Split(Text3.Text,"

Y2=Val(Split(Text3.Text,"

I1=Val(Itext1.Text)'

取圆心相对圆弧起点坐标

J1=Val(Jtext1.Text)

I2=Val(Itext2.Text)

J2=Val(Jtext2.Text)

R1=Sqr(I1*I1+J1*J1)'

计算第一段圆弧半径

IfNotOption1.ValueThenR1=-R1'

通过确定顺圆逆圆判断半径符号

R2=Sqr(I2*I2+J2*J2)'

计算第二段圆弧半径

IfNotOption3.ValueThenR2=-R2'

r=Val(rText.Text)'

取刀具半径

IfNotOption5.ValueThenr=-r'

通过确定左刀补右刀补判断刀具半径符号

'

=======================画动态坐标系======================

Dimt1AsSingle'

取出X最大值

Dimt2AsSingle'

取出X最小值

Dimt3AsSingle'

取出Y最大值

Dimt4AsSingle'

取出Y最小值

t1=X0

t2=X0

t3=Y0

t4=Y0

Ift1<

X1Thent1=X1'

求坐标中最大值与最小值

X2Thent1=X2

Ift2>

X1Thent2=X1

X2Thent2=X2

Ift3<

Y1Thent3=Y1

Y2Thent3=Y2

Ift4>

Y1Thent4=Y1

Y2Thent4=Y2

t3Thent1=t3

t4Thent2=t4

DimmAsSingle

IfAbs(R1)<

Abs(R2)Then

m=Abs(R2)

Else

m=Abs(R1)

EndIf

t1=t1+Abs(r)+m'

坐标轴对圆弧和刀补轨迹留有余量

t2=t2-Abs(r)-m

Picture1.Scale(t2,t1)-(t1,t2)'

设定picturebox左上角右下角坐标值

Picture1.Line(t2,0)-(t1,0),vbRed'

画X轴

Picture1.Line(0,t2)-(0,t1),vbRed'

画Y轴

DimIAsInteger

DimTs1AsInteger

DimTs2AsInteger

Ts1=Fix(t2)

Ts2=Fix(t1)

ForI=Ts1ToTs2Step1

Picture1.Line(I,-0.2)-(I,0.2),vbRed'

画X轴竖线

Picture1.CurrentY=-0.2

Picture1.PrintI'

打印刻度值

Picture1.Line(-0.2,I)-(0.2,I),vbRed'

画Y轴横线

Picture1.CurrentX=-0.5

NextI

Picture1.CurrentX=Ts2-1

Picture1.CurrentY=-1

Picture1.Print"

X"

'

标上X

Picture1.CurrentX=-1

Picture1.CurrentY=Ts2-1

Y"

标上Y

Picture1.Line(t1-0.3,-0.3)-(t1,0),vbRed'

画箭头

Picture1.Line(t1-0.3,0.3)-(t1,0),vbRed

Picture1.Line(-0.3,t1-0.3)-(0,t1),vbRed

Picture1.Line(0.3,t1-0.3)-(0,t1),vbRed

================================================

EndSub

PrivateSubCommand2_Click()

Picture1.DrawWidth=2'

线宽

OX1=I1+X0'

圆心实际坐标

OY1=J1+Y0

OX2=I2+X1

OY2=J2+Y1

DimttAsSingle

Xx1=-I1'

圆弧起点相对圆心坐标

Yy1=-J1

Start1=hudu(Xx1,Yy1)'

第一段圆弧起点对应弧度

Xx1=X1-OX1'

圆弧终点相对圆心坐标

Yy1=Y1-OY1

End1=hudu(Xx1,Yy1)'

第一段圆弧终点对应弧度

IfOption1.ValueThen'

画图时如果是顺圆,起点与终点弧度调换

tt=Start1

Start1=End1

End1=tt

IfEnd1<

Start1Then'

圆弧经过X轴正方向

Picture1.Circle(OX1,OY1),Abs(R1),,Start1,2*Pi,624/697

Picture1.Circle(OX1,OY1),Abs(R1),,0,End1,624/697

Else'

圆弧不经过X轴正方向

Picture1.Circle(OX1,OY1),Abs(R1),,Start1,End1,624/697

Xx1=-I2'

Yy1=-J2'

Start2=hudu(Xx1,Yy1)'

第二段圆弧起点对应弧度

Xx1=X2-OX2

Yy1=Y2-OY2

End2=hudu(Xx1,Yy1)'

第二段圆弧终点对应弧度

IfOption3.ValueThen'

tt=Start2

Start2=End2

End2=tt

IfEnd2<

Start2Then'

Picture1.Circle(OX2,OY2),Abs(R2),,Start2,2*Pi,624/697

Picture1.Circle(OX2,OY2),Abs(R2),,0,End2,624/697

Picture1.Circle(OX2,OY2),Abs(R2),,Start2,End2,624/697

Picture1.Circle(3,4),5

=======================弧度计算函数=====================

Functionhudu(ByValmAsSingle,ByValnAsSingle)AsSingle

DimkAsSingle

Ifm<

>

0Then'

斜率存在时

k=n/m

Ifm>

=0Andn>

=0Thenhudu=Atn(k)

=0Andn<

0Thenhudu=Atn(k)+2*Pi

Ifm<

0Andn>

=0Thenhudu=Atn(k)+Pi

0Andn<

0Thenhudu=Atn(k)+Pi

斜率不存在时

Ifn>

=0Then

hudu=Pi/2

Else

hudu=Pi/2+Pi

EndIf

EndFunction

=============刀补运算=======================

PrivateSubCommand3_Click()

DimX01AsSingle'

圆心相对圆弧交接点坐标

DimY01AsSingle

DimX02AsSingle

DimY02AsSingle

DimXl1AsSingle'

圆弧在交接点处的方向矢量

DimYl1AsSingle

DimXl2AsSingle

DimYl2AsSingle

X01=X0+I1-X1

Y01=Y0+J1-Y1

X02=I2

Y02=J2

Xl1=-Y01/R1

Yl1=X01/R1

Xl2=-Y02/R2

Yl2=X02/R2

DimCasesAsSingle

DimXs1AsSingle'

转接点坐标

DimYs1AsSingle

DimXs2AsSingle

DimYs2AsSingle

DimXs3AsSingle

DimYs3AsSingle

DimXs4AsSingle

DimYs4AsSingle

DimXlAsSingle'

书上公式中的变量

DimYlAsSingle

DimD1AsSingle

DimD2AsSingle

DimFsAsSingle

DimkAsSingle'

中间变量

DimsAsSingle

DimSsAsSingle

DimMmxAsSingle

DimMmyAsSingle

DimMmaAsSingle

DimFlag1AsBoolean

DimFlag2AsBoolean

DimttAsSingle'

Cases=Sgn(r)*(Yl2*Xl1-Xl2*Yl1)

IfCases>

0Then

======================================缩短型======================================

MATLAB中得到的两圆交点公式

k=(R1^2+4*R1*r+2*R1*R2-OY2^2-OX1^2-OY1^2-OX2^2+4*R2*r+2*OY1*OY2+R2^2+4*r^2+2*OX2*OX1)

s=(-OY2^2-OY1^2+2*OY1*OY2+2*OX2*OX1-2*R1*R2+R1^2+R2^2-OX1^2-OX2^2)

Ss=-2*OY2*OY1*OX2^2+OX2^2*OY2^2+OY1*(-(OX1-OX2)^2*(-OY2^2-OY1^2+2*OY1*OY2+2*OX2*OX1-2*R1*R2+R1^2+R2^2-OX1^2-OX2^2)*(R1^2+4*R1*r+2*R1*R2-OY2^2-OX1^2-OY1^2-OX2^2+4*R2*r+2*OY1*OY2+R2^2+4*r^2+2*OX2*OX1))^(1/2)+2*OY2*OX1^2*OY1+2*OX2*OX1*R2^2-2*OX2*OX1*R1^2-2*OX2^2*R2*r+2*R1*r*OX2^2-2*OX1^2*R2*r+2*OX1^2*R1*r-4*OX2*OX1*R1*r+4*OX2*OX1*R2*r+R1^2*OX1^2+R1^2*OX2^2-OX1^2*OY1^2-OX1^2*R2^2-OX1^2*OY2^2+OY1^2*OX2^2-R2^2*OX2^2-OX1^4+OX2^4+2*OX2*OX1^3-2*OX2^3*OX1-OY2*(-(OX1-OX2)^2*s*k)^(1/2)

Mmx=-1/2*Ss/(-2*OX2*OX1-2*OY1*OY2+OX1^2+OY1^2+OX2^2+OY2^2)/(OX1-OX2)

Mmy=-1/2*(-R1^2*OY2-OY1^3-OX1^2*OY2+2*OY2*R2*r+2*OX2*OX1*OY1+2*OX2*OX1*OY2-2*OY2*R1*r-2*OY1*R2*r+2*OY1*R1*r+R1^2*OY1-OY1*OX2^2-OX1^2*OY1+OY1^2*OY2-OY1*R2^2-OY2*OX2^2+OY1*OY2^2+OY2*R2^2-OY2^3-(-(OX1-OX2)^2*(-OY2^2-OY1^2+2*OY1*OY2+2*OX2*OX1-2*R1*R2+R1^2+R2^2-OX1^2-OX2^2)*(R1^2+4*R1*r+2*R1*R2-OY2^2-OX1^2-OY1^2-OX2^2+4*R2*r+2*OY1*OY2+R2^2+4*r^2+2*OX2*OX1))^(1/2))/(-2*OX2*OX1-2*OY1*OY2+OX1^2+OY1^2+OX2^2+OY2^2)

Xx1=Mmx-OX1

Yy1=Mmy-OY1

Mma=hudu(Xx1,Yy1)

IfEnd1<

判断该点是否满足第一段圆弧

IfMma<

Start1AndMma>

End1Then

Flag1=False

Flag1=True

IfMma>

Start1AndMma<

Xx1=Mmx-OX2

Yy1=Mmy-OY2

IfEnd2<

判断该点是否满足第二段圆弧

Start2AndMma>

End2Then

Flag2=False

Flag2=True

Start2AndMma<

IfFlag1AndFlag2Then'

判断得到的点是否满足条件

Xs1=Mmx

Ys1=Mmy

k=R1^2+4*R1*r+2*R1*R2-OY2^2-OX1^2-OY1^2-OX2^2+4*R2*r+2*OY1*OY2+R2^2+4*r^2+2*OX2*OX1

s=-(OX1-OX2)^2*(-OY2^2-OY1^2+2*OY1*OY2+2*OX2*OX1-2*R1*R2+R1^2+R2^2-OX1^2-OX2^2)

Ss=(-2*OY2*OY1*OX2^2+OX2^2*OY2^2-OY1*(-(OX1-OX2)^2*(-OY2^2-OY1^2+2*OY1*OY2+2*OX2*OX1-2*R1*R2+R1^2+R2^2-OX1^2-OX2^2)*(R1^2+4*R1*r+2*R1*R2-OY2^2-OX1^2-OY1^2-OX2^2+4*R2*r+2*OY1*OY2+R2^2+4*r^2+2*OX2*OX1))^(1/2)+2*OY2*OX1^2*OY1+2*OX2*OX1*R2^2-2*OX2*OX1*R1^2-2*OX2^2*R2*r+2*R1*r*OX2^2-2*OX1^2*R2*r+2*OX1^2*R1*r-4*OX2*OX1*R1*r+4*OX2*OX1*R2*r+R1^2*OX1^2+R1^2*OX2^2-OX1^2*OY1^2-OX1^2*R2^2-OX1^2*OY2^2+OY1^2*OX2^2-R2^2*OX2^2-OX1^4+OX2^4+2*OX2*OX1^3-2*OX2^3*OX1+OY2*(s*k)^(1/2))

Mmy=-1/2*(-R1^2*OY2-OY1^3-OX1^2*OY2+2*OY2*R2*r+2*OX2*OX1*OY1+2*OX2*OX1*OY2-2*OY2*R1*r-2*OY1*R2*r+2*OY1*R1*r+R1^2*OY1-OY1*OX2^2-OX1^2*OY1+OY1^2*OY2-OY1*R2^2-OY2*OX2^2+OY1*OY2^2+OY2*R2^2-OY2^3+(-(OX1-OX2)^2*(-OY2^2-OY1^2+2*OY1*OY2+2*OX2*OX1-2*R1*R2+R1^2+R2^2-OX1^2-OX2^2)*(R1^2+4*R1*r+2*R1*R2-OY2^2-OX1^2-OY1^2-OX2^2+4*R2*r+2*OY1*OY2+R2^2+4*r^2+2*OX2*OX1))^(1/2))/(-2*OX2*OX1-2*OY1*OY2+OX1^2+OY1^2+OX2^2+OY2^2)

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

当前位置:首页 > 农林牧渔 > 林学

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

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