📄 prgcontrolfrm.frm
字号:
'
' dxDistance = 2 * dR + dX0 + dX1
' dyDistance = 2 * dR - dY0 - dY1
'
' lTime = CLng(LenOfArc / F)
' lInterval = 1000 * lTime / (Abs(dxDistance / Ax) + Abs(dyDistance / Ay))
' calcuInterval = lInterval
' Else
' If (dX0 >= 0 And dY0 < 0) And (dX1 >= 0 And dY1 >= 0) And (iDirect = 1) Then
' LenOfArc = 2 * Pi * dR - Atn(pDistance / vDistance) * 2 * dR
'
' dxDistance = 3 * dR - dX0 + dX1
' dyDistance = 3 * dR + dY0 - dY1
'
' lTime = CLng(LenOfArc / F)
' lInterval = 1000 * lTime / (Abs(dxDistance / Ax) + Abs(dyDistance / Ay))
' calcuInterval = lInterval
' Else
' If (dX0 >= 0 And dY0 < 0) And (dX1 >= 0 And dY1 >= 0) And (iDirect = 2) Then
' LenOfArc = Atn(pDistance / vDistance) * 2 * dR
'
' dxDistance = Abs(dX0 - dX1)
' dyDistance = Abs(dY1 - dY0)
'
' lTime = CLng(LenOfArc / F)
' lInterval = 1000 * lTime / (Abs(dxDistance / Ax) + Abs(dyDistance / Ay))
' calcuInterval = lInterval
' Else
' If (dX0 >= 0 And dY0 < 0) And (dX1 >= 0 And dY1 < 0) And (iDirect = 1) Then
' LenOfArc = Atn(pDistance / vDistance) * 2 * dR
'
' dxDistance = Abs(dX0 - dX1)
' dyDistance = Abs(dY1 - dY0)
'
' lTime = CLng(LenOfArc / F)
' lInterval = 1000 * lTime / (Abs(dxDistance / Ax) + Abs(dyDistance / Ay))
' calcuInterval = lInterval
' Else
' If (dX0 >= 0 And dY0 < 0) And (dX1 >= 0 And dY1 < 0) And (iDirect = 2) Then
' LenOfArc = 2 * Pi * dR - Atn(pDistance / vDistance) * 2 * dR
'
' dxDistance = 4 * dR - dX0 + dX1
' dyDistance = 4 * dR - dY0 + dY1
'
' lTime = CLng(LenOfArc / F)
' lInterval = 1000 * lTime / (Abs(dxDistance / Ax) + Abs(dyDistance / Ay))
' calcuInterval = lInterval
' Else
' If (dX0 >= 0 And dY0 < 0) And (dX1 < 0 And dY1 >= 0) And (iDirect = 1) Then
' If (dX0 + dY0 < 0) And (dX1 + dY1 > 0) Then
' LenOfArc = 2 * Pi * dR - Atn(pDistance / vDistance) * 2 * dR
' Else
' LenOfArc = Atn(pDistance / vDistance) * 2 * dR
' End If
' dxDistance = 2 * dR + dX0 + dX1
' dyDistance = 2 * dR + dY0 + dY1
'
' lTime = CLng(LenOfArc / F)
' lInterval = 1000 * lTime / (Abs(dxDistance / Ax) + Abs(dyDistance / Ay))
' calcuInterval = lInterval
' Else
' If (dX0 >= 0 And dY0 < 0) And (dX1 < 0 And dY1 >= 0) And (iDirect = 2) Then
' If (dX0 + dY0 < 0) And (dX1 + dY1 > 0) Then
' LenOfArc = Atn(pDistance / vDistance) * 2 * dR
' Else
' LenOfArc = 2 * Pi * dR - Atn(pDistance / vDistance) * 2 * dR
' End If
' dxDistance = 2 * dR - dX0 - dX1
' dyDistance = 2 * dR - dY0 - dY1
'
' lTime = CLng(LenOfArc / F)
' lInterval = 1000 * lTime / (Abs(dxDistance / Ax) + Abs(dyDistance / Ay))
' calcuInterval = lInterval
' Else
' If (dX0 >= 0 And dY0 < 0) And (dX1 < 0 And dY1 < 0) And (iDirect = 1) Then
' LenOfArc = Atn(pDistance / vDistance) * 2 * dR
' dxDistance = Abs(dX0 - dX1)
' dyDistance = Abs(dY0 - dY1)
'
' lTime = CLng(LenOfArc / F)
' lInterval = 1000 * lTime / (Abs(dxDistance / Ax) + Abs(dyDistance / Ay))
' calcuInterval = lInterval
' Else
' If (dX0 >= 0 And dY0 < 0) And (dX1 < 0 And dY1 < 0) And (iDirect = 2) Then
' LenOfArc = 2 * Pi * dR - Atn(pDistance / vDistance) * 2 * dR
' dxDistance = 3 * dR - dY0 + dY1
' dyDistance = 4 * dR - dX0 + dX1
'
' lTime = CLng(LenOfArc / F)
' lInterval = 1000 * lTime / (Abs(dxDistance / Ax) + Abs(dyDistance / Ay))
' calcuInterval = lInterval
' Else
' If (dX0 < 0 And dY0 >= 0) And (dX1 >= 0 And dY1 >= 0) And (iDirect = 1) Then
' LenOfArc = Atn(pDistance / vDistance) * 2 * dR
' dxDistance = Abs(dX1 - dX0)
' dyDistance = Abs(dY1 - dY0)
'
' lTime = CLng(LenOfArc / F)
' lInterval = 1000 * lTime / (Abs(dxDistance / Ax) + Abs(dyDistance / Ay))
' calcuInterval = lInterval
' Else
' If (dX0 < 0 And dY0 >= 0) And (dX1 >= 0 And dY1 >= 0) And (iDirect = 2) Then
' LenOfArc = 2 * Pi * dR - Atn(pDistance / vDistance) * 2 * dR
' dxDistance = 4 * dR + dX0 - dX1
' dyDistance = 2 * dR + dY0 + dY1
'
' lTime = CLng(LenOfArc / F)
' lInterval = 1000 * lTime / (Abs(dxDistance / Ax) + Abs(dyDistance / Ay))
' calcuInterval = lInterval
' Else
' If (dX0 < 0 And dY0 >= 0) And (dX1 >= 0 And dY1 < 0) And (iDirect = 1) Then
' If (dX0 + dY0 < 0) And (dX1 + dY1 < 0) Then
' LenOfArc = 2 * Pi * dR - Atn(pDistance / vDistance) * 2 * dR
' Else
' LenOfArc = Atn(pDistance / vDistance) * 2 * dR
' End If
' dxDistance = 3 * dR + dX0 - dX1
' dyDistance = 2 * dR - dY0 - dY1
'
' lTime = CLng(LenOfArc / F)
' lInterval = 1000 * lTime / (Abs(dxDistance / Ax) + Abs(dyDistance / Ay))
' calcuInterval = lInterval
' Else
' If (dX0 < 0 And dY0 >= 0) And (dX1 >= 0 And dY1 < 0) And (iDirect = 2) Then
' If (dX0 + dY0 < 0) And (dX1 + dY1 < 0) Then
' LenOfArc = Atn(pDistance / vDistance) * 2 * dR
' Else
' LenOfArc = 2 * Pi * dR - Atn(pDistance / vDistance) * 2 * dR
' End If
' dxDistance = 2 * dR + dX0 + dX1
' dyDistance = 2 * dR + dY0 + dY1
'
' lTime = CLng(LenOfArc / F)
' lInterval = 1000 * lTime / (Abs(dxDistance / Ax) + Abs(dyDistance / Ay))
' calcuInterval = lInterval
' Else
' If (dX0 < 0 And dY0 >= 0) And (dX1 < 0 And dY1 >= 0) And (iDirect = 1) Then
' If (dX0 + dY0 < 0) And (dX1 + dY1 < 0) Then
' LenOfArc = Atn(pDistance / vDistance) * 2 * dR
' Else
' LenOfArc = 2 * Pi * dR - Atn(pDistance / vDistance) * 2 * dR
' End If
' dxDistance = 2 * dR + dX0 + dX1
' dyDistance = 2 * dR + dY0 + dY1
'
' lTime = CLng(LenOfArc / F)
' lInterval = 1000 * lTime / (Abs(dxDistance / Ax) + Abs(dyDistance / Ay))
' calcuInterval = lInterval
' Else
' If (dX0 < 0 And dY0 >= 0) And (dX1 < 0 And dY1 >= 0) And (iDirect = 2) Then
'
' Else
' If (dX0 < 0 And dY0 >= 0) And (dX1 < 0 And dY1 < 0) And (iDirect = 1) Then
'
' Else
' If (dX0 < 0 And dY0 >= 0) And (dX1 < 0 And dY1 < 0) And (iDirect = 2) Then
'
' Else
' If (dX0 < 0 And dY0 < 0) And (dX1 >= 0 And dY1 >= 0) And (iDirect = 1) Then
'
' Else
' If (dX0 < 0 And dY0 < 0) And (dX1 >= 0 And dY1 >= 0) And (iDirect = 2) Then
'
' Else
' If (dX0 < 0 And dY0 < 0) And (dX1 >= 0 And dY1 < 0) And (iDirect = 1) Then
'
' Else
' If (dX0 < 0 And dY0 < 0) And (dX1 >= 0 And dY1 < 0) And (iDirect = 2) Then
'
' Else
' If (dX0 < 0 And dY0 < 0) And (dX1 < 0 And dY1 >= 0) And (iDirect = 1) Then
'
' Else
' If (dX0 < 0 And dY0 < 0) And (dX1 < 0 And dY1 >= 0) And (iDirect = 2) Then
'
' Else
' If (dX0 < 0 And dY0 < 0) And (dX1 < 0 And dY1 < 0) And (iDirect = 1) Then
'
' Else
' If (dX0 < 0 And dY0 < 0) And (dX1 < 0 And dY1 < 0) And (iDirect = 2) Then
'
' Else
' If (dX0 < 0 And dY0 < 0) And (dX1 < 0 And dY1 < 0) And (iDirect = 2) Then
'
' End If
' End If
' End If
' End If
' End If
' End If
' End If
' End If
' End If
' End If
' End If
' End If
' End If
' End If
' End If
' End If
' End If
' End If
' End If
' End If
' End If
' End If
' End If
' End If
' End If
' End If
' End If
' End If
' End If
' End If
' End If
' End If
' End If
'End Function
Public Function calcuInterval(dX0 As Double, dY0 As Double, dX1 As Double, dY1 As Double, dR As Double, iDirect As Integer) As Long
Dim LenOfArc As Double
Dim dxDistance As Double
Dim dyDistance As Double
Dim lInterval As Long
Dim lTime As Long
Dim pDistance As Double
Dim vDistance As Double
Dim A, B As Long
Dim Angle0 As Double
Dim Angle1 As Double
LenOfArc = 0
dxDistance = 0
dyDistance = 0
pDistance = Sqr((dX1 - dX0) * (dX1 - dX0) + (dY1 - dY0) * (dY1 - dY0)) / 2
vDistance = Sqr(dR * dR - pDistance * pDistance)
A = X0 * X1
B = Y0 * Y1
If (A > 0 And B > 0) Or (A < 0 And B < 0) Then
dxDistance = Abs(X1 - X0)
dyDistance = Abs(Y1 - Y0)
End If
If (A > 0 And B < 0) Then
dxDistance = 2 * dR - Abs(X1) - Abs(X0)
dyDistance = Abs(Y1 - Y0)
End If
If (A < 0 And B > 0) Then
dxDistance = Abs(X1 - X0)
dyDistance = 2 * dR - Abs(Y1) - Abs(Y0)
End If
Angle0 = GetAngle(dX0, dY0)
Angle1 = GetAngle(dX1, dY1)
If (BigAngle(Angle0, Angle1, iDirect)) Then
LenOfArc = (2 * Pi - Abs(Angle1 - Angle0)) * dR
dxDistance = 4 * dR - dxDistance
dyDistance = 4 * dR - dyDistance
Else
LenOfArc = Abs((Angle1 - Angle0) * dR)
End If
lTime = CLng(LenOfArc / F)
lInterval = 1000 * lTime / (Abs(dxDistance / Ax) + Abs(dyDistance / Ay))
calcuInterval = lInterval
End Function
Public Function GetAngle(ByVal A0 As Long, ByVal B0 As Long) As Double
If (A0 < 0) Then
GetAngle = Pi + Atn(B0 / A0)
Exit Function
End If
If (A0 = 0) And (B0 > 0) Then
GetAngle = Pi / 2
End If
If (A0 = 0) And (B0 < 0) Then
GetAngle = Pi * 3 / 2
End If
If (A0 > 0 And B0 > 0) Then
GetAngle = Atn(B0 / A0)
Exit Function
End If
If (A0 > 0 And B0 < 0) Then
GetAngle = 2 * Pi + Atn(B0 / A0)
End If
If (A0 = 0) And (B0 = 0) Then
GetAngle = 0
End If
End Function
Public Function BigAngle(A0 As Double, A1 As Double, iDirect As Integer) As Boolean
'iDirect (1 -- 顺时针,2 -- 逆时针)
Dim AngleDiff As Double
BigAngle = False
AngleDiff = A1 - A0
If (((AngleDiff > Pi) And (AngleDiff <= 2 * Pi)) Or ((AngleDiff > -1 * Pi) And (AngleDiff < 0))) And (iDirect = 1) Then
BigAngle = True
End If
End Function
Private Sub BeginCut()
Dim Mystr As String
Dim bAccess_File As Boolean
iDirection = 0
DirectX = False
DirectY = False
xPos = 0
yPos = 0
xStartCount = 0
yStartCount = 0
CircleGoOn = False
bDrawCircle = False
' StopNow = False
' M = 1
Close #1
Open ProgramFileName For Input As #1
Do While Not EOF(1)
Input #1, Mystr
If (M = 0) Then
PrgFileLineNumber = PrgFileLineNumber + 1
End If
PrgFileLineNumber = PrgFileLineNumber + 1
bAccess_File = DivideLine(Mystr)
If Not bAccess_File Then
Close #1
PrgFileLineNumber = 0
MsgBox "代码文件有错1", vbInformation, "提示"
Unload Me
MainFrm.Show vbModal
End If
If (G0 = 1) Then '直线
dX01 = X1
dY01 = Y1
bAccess_File = SendLineSignal(X0, Y0, X1, Y1)
Else
bAccess_File = SendCircleSignal
I = 0
J = 0
r = 0
End If
If Not bAccess_File Then
Close #1
PrgFileLineNumber = 0
MsgBox "代码文件有错2", vbInformation, "提示"
Unload Me
MainFrm.Show vbModal
' Else
' X0 = X1
' Y0 = Y1
End If
If (M = 0) Then
pGoOnCmd.Enabled = True
Close #1
Exit Sub
End If
If (M = 2) Then
pGoOnCmd.Enabled = False
Exit Do
End If
Loop
Close #1
End Sub
Private Sub Judge()
If (Result = 2) Then
Timer.Enabled = False
XTimer.Enabled = False
MsgBox "X轴到头!返回", vbInformation, "提示"
Unload Me
MainFrm.Show vbModal
Exit Sub
End If
If (Result = 3) Then
YTimer.Enabled = False
Timer.Enabled = False
MsgBox "Y轴到头!返回", vbInformation, "提示"
Unload Me
MainFrm.Show vbModal
Exit Sub
End If
If (Result = 1) Then
XTimer.Enabled = False
YTimer.Enabled = False
Timer.Enabled = False
Timer_Beep.Enabled = True
MsgBox "出现故障", vbInformation, "提示"
Timer_Beep.Enabled = False
Unload Me
MainFrm.Show vbModal
Exit Sub
End If
End Sub
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -