Public Sub StandardGearShap()
Dim inNumber As Integer 'inNumber曲线上的点数
'输人齿轮参数
Dim mNumber As Double '模数
Dim zNumber As Integer '齿数
Dim aAngle As Double '压力角
Dim ha As Double '顶高系数
Dim c As Double '顶隙系数
aAngle = aAngle * Pi / 180
bbAngle = Pi / (2 * zNumber) + Tan(aAngle) - aAngle
'过渡曲线
gamaRo = mNumber * c / (1 - Sin(aAngle))
a = ha * mumber + c * mNumber - gamaRo
b = Pi * mNumber / 4 + ha * mNumber * Tan(aAngle) + gamaRo * Cos(aAngle)
SeLg = (Pi / 2 - aAngle) / (inNumber - 1)
I = 0
For Alphal = Pi / 2 To aAngle Step -SeLg
Phi = (a / Tan(Alpha1) + b) / R
X = R * Sin(Phi) - (a / Sin(Alpha1) + gamaRo) * Cos(Alphal - Phi)
Y = R * Cos(Phi) - (a / Sin(Alpha1) + gamaRo) * Sin(Alphal - Phi)
gitpnts(I) = Xk: gitpnts(I + 1) = Yk: gitpnts(I + 2) = 0
I = I + 3
Next Alphal
'分度圆刭齿顶圆这一段齿廓的程序如下:
SeLg = (Ra - R) / (inNumber - 1)
I = 0
For Rk = R To Ra Step SeLg
Xk = Rk * Sin(bbAngle - Sqr((Rk / Rb) ^ 2 - 1) + Atn(Sqr((Rk / Rh) ^ 2 - 1)))
Yk = Rk * Cos(bbAngle - Sqr((Rk / Rb) ^ 2 - 1) + Atn(Sqr((Rk / Rb) ^ 2 - 1)))
fitpnts(I) = Xk: fitpnts(I + 1) = Yk: fitpnts(I + 2) = 0
I = I + 3
Next Rk
'由fitpnts和gitpnts等合成点列数组pnts
'切向
'画出齿廓曲线
Set spline0bj = ThisDrawing.ModelSpace.AddSpline(pnts, stan, etan)
'齿顶圆弧段
Set arcaObj = ThisDrawing.ModelSpace.AddArc(insPnt, Ra, sAng, eAng)
'(InsPnt插人点坐标;Ra圆弧半径;sAng起始角;eAng终止角)
'齿根圆弧段
Set aecf0bj = ThisDrawing.ModelSpace.AddArc(insPnt, Rf, sAng, eAng)
'(InsPnt插人点坐标;Rf圆弧半径;sims起始角;eAng终止角)
'镜像
stan(O) = 0: stan(1) = 0: stan(2) = 0
etan(0) = 0: etan(1) = 1: etan(2) = 0
Set areaObj = arcaObj.Mirror(stan, etan)
Set splineObj = splineObj.Mirror(stan, etan)
Set arcfObj = arcfObj.Mirror(stan, etan)
'阵列
AryObj = splineObj.ArrayPolar(zNumber, 2 * Pi, insPnt)
End Sub |
|