?? 公用模塊.bas
字號:
Attribute VB_Name = "公用模塊"
Option Explicit
Public Const PI = 3.1416
Public r0 As Single '基圓半徑
Public x0 As Single, y0 As Single '圓心位置
Public h As Integer '升程
Public δ0 As Integer
Public δ1 As Integer
Public δ2 As Integer
Public δ3 As Integer
Public e As Single '偏心距
Public r1 As Single '滾子半徑
Public L As Integer '從動件長度
Public DeltaSita As Single '角度遞增值
Public δθ As Single '角度遞增值
Public Cosδθ As Single
Public sinδθ As Single
Public CurrentXY(1 To 2) As Single '當前點的坐標
Public PointXY(360, 2) As Single '凸輪理論輪廓上點的坐標
Public FactPXY(360, 2) As Single '凸輪實際輪廓上點的坐標
Public XY(360, 2) As Single '位移線圖上點的坐標
Public 基圓XY(360, 2) As Single '基圓上點的坐標
Public 偏距圓XY(360, 2) As Single '基圓上點的坐標
Public O(1 To 2) As Integer '坐標軸原點
Public i等分DT0 As Integer
Public i等分DT2 As Integer
Public Sub 計算凸輪輪廓上點()
Dim Sita As Double
Dim s As Single '位移
'Dim r As Single '凸輪曲率半徑
Dim i As Integer
Dim s0 As Single
Dim δ As Single
Dim dx_DT As Single 'dx/dδ
Dim dy_DT As Single 'dy/dδ
Dim sinθ As Single
Dim cosθ As Single
s0 = Sqr(r0 ^ 2 - e ^ 2)
'偏距圓上點
For i = 0 To 360
δ = i * PI / 180
偏距圓XY(i, 1) = x0 + e * Cos(-δ)
偏距圓XY(i, 2) = y0 + e * Sin(-δ)
Next
'基圓上點
For i = 0 To 360
δ = i * PI / 180
基圓XY(i, 1) = 偏距圓XY(i, 1) + s0 * Sin(δ)
基圓XY(i, 2) = 偏距圓XY(i, 2) + s0 * Cos(δ)
Next
'凸輪上點
For i = 0 To 360
δ = i * PI / 180
'推程等加速等減速;回程簡諧運動
Select Case i
Case 0 To δ0
s = h * i / δ0
dx_DT = Sin(δ) * (h / δ0 - e) + (s0 + s) * Cos(δ)
dy_DT = Cos(δ) * (h / δ0 - e) - (s0 + s) * Sin(δ)
Case (δ0) To (δ0 + δ1)
s = h
dx_DT = Sin(δ) * (-e) + (s0 + s) * Cos(δ)
dy_DT = Cos(δ) * (-e) - (s0 + s) * Sin(δ)
Case (δ0 + δ1) To (δ0 + δ1 + δ2 / 2)
s = h - 2 * h * (i - δ0 - δ1) ^ 2 / δ2 ^ 2
dx_DT = Sin(δ) * (-4 * h * (i - δ0 - δ1) / δ2 ^ 2 - e) + (s0 + s) * Cos(δ)
dy_DT = Cos(δ) * (-4 * h * (i - δ0 - δ1) / δ2 ^ 2 - e) - (s0 + s) * Sin(δ)
Case (δ0 + δ1 + δ2 / 2) To (δ0 + δ1 + δ2)
s = 2 * h - 4 * h * (CSng(i) - δ0 - δ1) / δ2 + 2 * h * ((CSng(i) - δ0 - δ1) / δ2) ^ 2
dx_DT = Sin(δ) * (4 * h * (CSng(i) - δ0 - δ1 - δ2) / δ2 ^ 2 - e) + (s0 + s) * Cos(δ)
dy_DT = Cos(δ) * (4 * h * (CSng(i) - δ0 - δ1 - δ2) / δ2 ^ 2 - e) - (s0 + s) * Sin(δ)
Case (δ0 + δ1 + δ2) To 360
s = 0
dx_DT = Sin(δ) * (-e) + (s0 + s) * Cos(δ)
dy_DT = Cos(δ) * (-e) - (s0 + s) * Sin(δ)
End Select
'理論輪廓上點
PointXY(i, 1) = x0 + (s0 + s) * Sin(δ) + e * Cos(δ)
PointXY(i, 2) = y0 + (s0 + s) * Cos(δ) - e * Sin(δ)
'實際輪廓上點
sinθ = dx_DT / Sqr(dx_DT ^ 2 + dy_DT ^ 2)
cosθ = -dy_DT / Sqr(dx_DT ^ 2 + dy_DT ^ 2)
FactPXY(i, 1) = PointXY(i, 1) - r1 * cosθ
FactPXY(i, 2) = PointXY(i, 2) - r1 * sinθ
'計算線圖上點坐標
O(1) = mainfrm.linX.X1: O(2) = PointXY(0, 2)
XY(i, 1) = O(1) + i: XY(i, 2) = O(2) + s
Next
End Sub
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -