vb编写的一个凸轮NC代码生成软件.docx
《vb编写的一个凸轮NC代码生成软件.docx》由会员分享,可在线阅读,更多相关《vb编写的一个凸轮NC代码生成软件.docx(29页珍藏版)》请在冰豆网上搜索。
vb编写的一个凸轮NC代码生成软件
OptionExplicit
Constpi=3.141592653
PrivateSubbtnRun_Click()
lbldraw.Visible=True
lbldraw.Caption="»æͼÖÐ......"
Picture1.Cls
'ÉèÖõÚÒ»»æͼ´°×ø±êϵ
Picture1.ScaleMode=6
Picture1.Scale(-500,300)-(500,-300)
Picture1.Line(-500,0)-(500,0)
Picture1.Line(0,300)-(0,-300)
Picture1.CurrentX=0:
Picture1.CurrentY=0:
Picture1.Print0
Picture1.CurrentX=480:
Picture1.CurrentY=40:
Picture1.Print"X"
Picture1.CurrentX=10:
Picture1.CurrentY=300:
Picture1.Print"Y"
DimnAsSingle,dAsSingle,rAsSingle,XAsSingle,YAsSingle,SAsSingle
DimbAsSingle,qAsSingle,kAsSingle
r=Text2
(2).Text
n=Text2(0).Text
S=Text2
(1).Text
b=Text2(3).Text
q=Text2(4).Text
k=360-n-b-q
DimFAsSingle
Picture1.CurrentX=r:
Picture1.CurrentY=0
RemµÈËÙÔ˶¯ÂÖÀª
Ifmnudengsu.CheckedThen
Ford=0TonStep0.01
X=(r+S*d/n)*Cos(pi/180*d)
Y=(r+S*d/n)*Sin(pi/180*d)
Picture1.PSet(X,Y),vbRed
Next
Ford=0TobStep0.01
Y=(r+S)*Sin(pi/180*(n+d))
X=(r+S)*Cos(pi/180*(n+d))
Picture1.PSet(X,Y),vbRed
Next
Ford=0ToqStep0.01
Y=(r+S-S*d/q)*Sin(pi/180*(n+b+d))
X=(r+S-S*d/q)*Cos(pi/180*(n+b+d))
Picture1.PSet(X,Y),vbRed
Next
Ford=0TokStep0.01
Y=r*Sin(pi/180*(n+b+q+d))
X=r*Cos(pi/180*(n+b+q+d))
Picture1.PSet(X,Y),vbRed
Next
lbldraw.Caption="»æͼÍê³É"
RemÔȼӼõËÙÔ˶¯ÂÖÀª
ElseIfmnudengjiajian.CheckedThen
Ford=0Ton/2Step0.01
X=(r+2*S*d^2/n^2)*Cos(pi/180*d)
Y=(r+2*S*d^2/n^2)*Sin(pi/180*d)
Picture1.PSet(X,Y),vbRed
Next
Ford=n/2TonStep0.01
X=(r+S-2*S*(n-d)^2/n^2)*Cos(pi/180*d)
Y=(r+S-2*S*(n-d)^2/n^2)*Sin(pi/180*d)
Picture1.PSet(X,Y),vbRed
Next
Ford=0TobStep0.01
Y=(r+S)*Sin(pi/180*(n+d))
X=(r+S)*Cos(pi/180*(n+d))
Picture1.PSet(X,Y),vbRed
Next
F=n+b
Ford=qToq/2Step-0.01
F=F+0.01
X=(r+S-2*S*(q-d)^2/q^2)*Cos(pi/180*F)
Y=(r+S-2*S*(q-d)^2/q^2)*Sin(pi/180*F)
Picture1.PSet(X,Y),vbRed
Next
Ford=q/2To0Step-0.01
F=F+0.01
X=(r+2*S*d^2/q^2)*Cos(pi/180*F)
Y=(r+2*S*d^2/q^2)*Sin(pi/180*F)
Picture1.PSet(X,Y),vbRed
Next
Ford=0TokStep0.01
Y=r*Sin(pi/180*(n+b+q+d))
X=r*Cos(pi/180*(n+b+q+d))
Picture1.PSet(X,Y),vbRed
Next
lbldraw.Caption="»æͼÍê³É"
Rem°ÚÏßÔ˶¯ÂÖÀª
ElseIfmnubaixian.CheckedThen
Ford=0TonStep0.01
X=(r+S*(10*(d/n)^3-15*(d/n)^4+6*(d/n)^5))*Cos(pi/180*d)
Y=(r+S*(10*(d/n)^3-15*(d/n)^4+6*(d/n)^5))*Sin(pi/180*d)
Picture1.PSet(X,Y),vbRed
Next
Ford=0TobStep0.01
Y=(r+S)*Sin(pi/180*(n+d))
X=(r+S)*Cos(pi/180*(n+d))
Picture1.PSet(X,Y),vbRed
Next
F=n+b
Ford=qTo0Step-0.01
F=F+0.01
X=(r+S*(10*(d/q)^3-15*(d/q)^4+6*(d/q)^5))*Cos(pi/180*F)
Y=(r+S*(10*(d/q)^3-15*(d/q)^4+6*(d/q)^5))*Sin(pi/180*F)
Picture1.PSet(X,Y),vbRed
Next
Ford=0TokStep0.01
Y=r*Sin(pi/180*(n+b+q+d))
X=r*Cos(pi/180*(n+b+q+d))
Picture1.PSet(X,Y),vbRed
Next
lbldraw.Caption="»æͼÍê³É"
'ÕýÏÒ¼ÓËÙÔ˶¯°ÚÏßÂÖÀª
ElseIfmnuSin.CheckedThen
Ford=0TonStep0.01
X=(r+S*(d/n-Sin(2*pi*d/n)/(2*pi)))*Cos(pi/180*d)
Y=(r+S*(d/n-Sin(2*pi*d/n)/(2*pi)))*Sin(pi/180*d)
Picture1.PSet(X,Y),vbRed
Next
Ford=0TobStep0.01
Y=(r+S)*Sin(pi/180*(n+d))
X=(r+S)*Cos(pi/180*(n+d))
Picture1.PSet(X,Y),vbRed
Next
F=n+b
Ford=qTo0Step-0.01
F=F+0.01
X=(r+S*(d/q-Sin(2*pi*d/q)/(2*pi)))*Cos(pi/180*F)
Y=(r+S*(d/q-Sin(2*pi*d/q)/(2*pi)))*Sin(pi/180*F)
Picture1.PSet(X,Y),vbRed
Picture1.PSet(X,Y),vbRed
Next
Ford=0TokStep0.01
Y=r*Sin(pi/180*(n+b+q+d))
X=r*Cos(pi/180*(n+b+q+d))
Picture1.PSet(X,Y),vbRed
Next
lbldraw.Caption="»æͼÍê³É"
RemÓàÏÒ¼ÓËÙÔ˶¯ÂÖÀª
Else
Ford=0TonStep0.01
X=(r+S/2*(1-Cos(pi*d/n)))*Cos(pi/180*d)
Y=(r+S/2*(1-Cos(pi*d/n)))*Sin(pi/180*d)
Picture1.PSet(X,Y),vbRed
Next
Ford=0TobStep0.01
Y=(r+S)*Sin(pi/180*(n+d))
X=(r+S)*Cos(pi/180*(n+d))
Picture1.PSet(X,Y),vbRed
Next
F=n+b
Ford=qTo0Step-0.01
F=F+0.01
X=(r+S/2*(1-Cos(pi*d/q)))*Cos(pi/180*F)
Y=(r+S/2*(1-Cos(pi*d/q)))*Sin(pi/180*F)
Picture1.PSet(X,Y),vbRed
Next
Ford=0TokStep0.01
Y=r*Sin(pi/180*(n+b+q+d))
X=r*Cos(pi/180*(n+b+q+d))
Picture1.PSet(X,Y),vbRed
Next
lbldraw.Caption="»æͼÍê³É"
EndIf
EndSub
PrivateSubcmmCreate_Click()
Frame1.Caption="Éú³ÉNC´úÂë......"
Text3.Text=""
DimX0AsSingle,Y0AsSingle,X1AsSingle,Y1AsSingle,ag1AsSingle,ag2AsSingle,ag3AsSingle,ag4AsSingle
DimSAsSingle,FAsSingle,rAsSingle,hAsSingle,LAsSingle,qAsSingle,wAsSingle,pAsSingle
DimiAsInteger
DimnAsSingle
DimeAsSingle,kAsSingle,aAsSingle
ag1=Text2(0).Text:
ag2=Text2(3).Text:
ag3=Text2(4).Text:
ag4=360-ag1-ag2-ag3
r=Abs(Text2
(2).Text):
h=Text2
(1).Text:
S=Text2(6).Text:
F=Text2(7).Text:
p=Abs(Text1.Text)
X0=r:
Y0=0
'Éú³ÉµÈËÙÔ˶¯µÄ¼Ó¹¤´úÂë
IfS=0OrF=0Then
MsgBox"ΪÊäÈëÕýȷתËٺͽø¸øËÙ¶È",vbCritical,"ϵͳÌáʾ"
Else
L=2*Sqr(r*p)
q=Format(Val(X0),"0.000")
w=Format(Val(Y0),"0.000")
Ifag1=0Orag3=0Then
MsgBox"ÍƳ̽Ǻͻس̽Dz»ÄÜΪ0£¬ÇëÖØÐÂÊäÈë",vbCritical,"ϵͳÌáʾ"
ExitSub
Else
Ifmnudengsu.CheckedThen
Text3.Text=""
Text3.SelText="N00"&""&"G91"&""&"G00"&""&"x"&(q)&""&"y"&(w)&""&"M03"&""&"LF"
Do
Fore=aToag1Step0.0001
X1=(r+h*e/ag1)*Cos(pi/180*e)
Y1=(r+h*e/ag1)*Sin(pi/180*e)
k=Abs((X1-X0)^2+(Y1-Y0)^2-L^2)
a=e
If(k<0.05)And(k>0)Then
ExitFor
EndIf
Next
Picture1.Line(X0,Y0)-(X1,Y1),vbBlue
q=Format(Val(X1-X0),"0.000")
w=Format(Val(Y1-Y0),"0.000")
i=i+1
Ifi=1Then
Text3.SelText=vbNewLine&"N0"&(i)&""&"G01"&""&"X"&(q)&""&"Y"&(w)&""&"F"&(F)&""&"S"&(S)&""&"LF"
ElseIfi>9Then
Text3.SelText=vbNewLine&"N"&(i)&""&"G01"&""&"X"&(q)&""&"Y"&(w)&""&"LF"
Else
Text3.SelText=vbNewLine&"N0"&(i)&""&"G01"&""&"X"&(q)&""&"Y"&(w)&""&"LF"
EndIf
X0=X1
Y0=Y1
LoopWhileeIfag2<>0Then
Picture1.Circle(0,0),(r+h),vbBlue,(pi/180*ag1),(pi/180*(ag1+ag2))
X0=(r+h)*Cos(pi/180*(ag1+ag2))
Y0=(r+h)*Sin(pi/180*(ag1+ag2))
i=i+1
q=Format(Val(X0),"0.000")
w=Format(Val(Y0),"0.000")
Ifi<9Then
Text3.SelText=vbNewLine&"N0"&(i)&""&"G03"&""&"X"&(q)&""&"Y"&(w)&""&"R"&(r+h)&""&"LF"
Else
Text3.SelText=vbNewLine&"N"&(i)&""&"G03"&""&"X"&(q)&""&"Y"&(w)&""&"R"&(r+h)&""&"LF"
EndIf
EndIf
a=0
Do
Fore=aToag3Step0.0001
X1=(r+h-h*e/ag3)*Cos(pi/180*(ag1+ag2+e))
Y1=(r+h-h*e/ag3)*Sin(pi/180*(ag1+ag2+e))
k=Abs((X1-X0)^2+(Y1-Y0)^2-L^2)
a=e
If(k<0.05)And(k>0)Then
ExitFor
EndIf
Next
Picture1.Line(X0,Y0)-(X1,Y1),vbBlue
q=Format(Val(X1-X0),"0.000")
w=Format(Val(Y1-Y0),"0.000")
i=i+1
Ifi=1Then
Text3.SelText=vbNewLine&"N0"&(i)&""&"G01"&""&"X"&(q)&""&"Y"&(w)&""&"F"&(F)&""&"S"&(S)&""&"LF"
ElseIfi>9Then
Text3.SelText=vbNewLine&"N"&(i)&""&"G01"&""&"X"&(q)&""&"Y"&(w)&""&"LF"
Else
Text3.SelText=vbNewLine&"N0"&(i)&""&"G01"&""&"X"&(q)&""&"Y"&(w)&""&"LF"
EndIf
X0=X1
Y0=Y1
LoopWhileeIfag4<>0Then
Picture1.Circle(0,0),r,vbBlue,(pi/180*(ag1+ag2+ag3)),(2*pi)
q=Format(Val(X0),"0.000")
w=Format(Val(Y0),"0.000")
i=i+1
Ifi<9Then
Text3.SelText=vbNewLine&"N0"&(i)&""&"G03"&""&"X"&(q)&""&"Y"&(w)&""&"R"&(r)&""&"LF"
Else
Text3.SelText=vbNewLine&"N"&(i)&""&"G03"&""&"X"&(q)&""&"Y"&(w)&""&"R"&(r)&""&"LF"
EndIf
EndIf
'ÔȼӼõËÙµÄNC´úÂëÉú³É
ElseIfmnudengjiajian.CheckedThen
Text3.Text=""
Text3.SelText="N00"&""&"G91"&""&"G00"&""&"X"&(q)&""&"Y"&(w)&""&"M03"&""&"LF"
Rem¼ÓËٶαƽü
Do
Fore=aToag1/2Step0.001
X1=(r+2*h*e^2/ag1^2)*Cos(pi/180*e)
Y1=(r+2*h*e^2/ag1^2)*Sin(pi/180*e)
k=Abs((X1-X0)^2+(Y1-Y0)^2-L^2)
a=e
If(k<0.05)And(k>0)Then
ExitFor
EndIf
Next
Picture1.Line(X0,Y0)-(X1,Y1),vbBlue
q=Format(Val(X1-X0),"0.000")
w=Format(Val(Y1-Y0),"0.000")
i=i+1
Ifi=1Then
Text3.SelText=vbNewLine&"N0"&(i)&""&"G01"&""&"X"&(q)&""&"Y"&(w)&""&"F"&(F)&""&"S"&(S)&""&"LF"
ElseIfi>9Then
Text3.SelText=vbNewLine&"N"&(i)&""&"G01"&""&"X"&(q)&""&"Y"&(w)&""&"LF"
Else
Text3.SelText=vbNewLine&"N0"&(i)&""&"G01"&""&"X"&(q)&""&"Y"&(w)&""&"LF"
EndIf
X0=X1
Y0=Y1
Lo