fix num_teeth issue

This commit is contained in:
Lorenz Lechner
2024-10-09 19:26:51 +02:00
parent 84237f0e3d
commit 13b2a9c4a5
4 changed files with 26 additions and 24 deletions

View File

@@ -201,10 +201,11 @@ class CycloidGear(BaseGear):
) # set read-only after setting the expression, else it won't be visible. bug?
def generate_gear_shape(self, fp):
fp.gear.num_teeth = fp.num_teeth
fp.gear.m = fp.module.Value
fp.dw = fp.module * fp.num_teeth
fp.gear.z1 = fp.inner_diameter
fp.gear.z2 = fp.outer_diameter
fp.gear.num_teeth_1 = fp.inner_diameter
fp.gear.num_teeth_2 = fp.outer_diameter
fp.gear.clearance = fp.clearance
fp.gear.head = fp.head
fp.gear.backlash = fp.backlash.Value

View File

@@ -287,6 +287,7 @@ class InvoluteGear(BaseGear):
obj.gear.backlash = obj.backlash.Value * (-obj.reversed_backlash + 0.5) * 2.0
obj.gear.head = obj.head
obj.gear.properties_from_tool = obj.properties_from_tool
obj.gear.num_teeth = obj.num_teeth
obj.gear._update()
self.compute_traverse_properties(obj)

View File

@@ -21,24 +21,24 @@ from ._functions import rotation, reflection
class CycloidTooth:
def __init__(self, z1=5, z2=5, z=14, m=5, clearance=0.25, backlash=0.00, head=0.0):
def __init__(self, num_teeth_1=5, num_teeth_2=5, num_teeth=14, m=5, clearance=0.25, backlash=0.00, head=0.0):
self.m = m
self.z = z
self.num_teeth = num_teeth
self.clearance = clearance
self.backlash = backlash
self.z1 = z1
self.z2 = z2
self.num_teeth_1 = num_teeth_1
self.num_teeth_2 = num_teeth_2
self.head = head
self._calc_gear_factors()
def _calc_gear_factors(self):
self.d1 = self.z1 * self.m
self.d2 = self.z2 * self.m
self.d1 = self.num_teeth_1 * self.m
self.d2 = self.num_teeth_2 * self.m
self.phi = self.m * pi
self.d = self.z * self.m
self.d = self.num_teeth * self.m
self.da = self.d + 2 * (1 + self.head) * self.m
self.di = self.d - 2 * (1 + self.clearance) * self.m
self.phipart = 2 * pi / self.z
self.phipart = 2 * pi / self.num_teeth
self.angular_backlash = self.backlash / (self.d / 2)
def epicycloid_x(self):
@@ -120,9 +120,9 @@ class CycloidTooth:
def _update(self):
self.__init__(
m=self.m,
z=self.z,
z1=self.z1,
z2=self.z2,
num_teeth=self.num_teeth,
num_teeth_1=self.num_teeth_1,
num_teeth_2=self.num_teeth_2,
clearance=self.clearance,
backlash=self.backlash,
head=self.head,

View File

@@ -43,7 +43,7 @@ class InvoluteTooth:
def __init__(
self,
m=5,
z=15,
num_teeth=15,
pressure_angle=20 * pi / 180.0,
clearance=0.12,
shift=0.5,
@@ -56,7 +56,7 @@ class InvoluteTooth:
self.pressure_angle = pressure_angle
self.beta = beta
self.m_n = m
self.z = z
self.num_teeth = num_teeth
self.undercut = undercut
self.shift = shift
self.clearance = clearance
@@ -76,12 +76,12 @@ class InvoluteTooth:
self.pitch = self.m * pi
self.c = self.clearance * self.m_n
self.midpoint = [0.0, 0.0]
self.d = self.z * self.m
self.dw = self.m * self.z
self.d = self.num_teeth * self.m
self.dw = self.m * self.num_teeth
self.da = self.dw + 2.0 * self.m_n + 2.0 * (self.shift + self.head) * self.m_n
self.df = self.dw - 2.0 * self.m_n - 2 * self.c + 2.0 * self.shift * self.m_n
self.dg = self.d * cos(self.pressure_angle_t)
self.phipart = 2 * pi / self.z
self.phipart = 2 * pi / self.num_teeth
self.undercut_end = sqrt(-(self.df**2) + self.da**2) / self.da
self.undercut_rot = (
@@ -109,7 +109,7 @@ class InvoluteTooth:
self.m / (self.d) * (pi / 2 + 2 * self.shift * tan(self.pressure_angle_t))
)
self.involute_rot2 = (
1 / self.z * (pi / 2 + 2 * self.shift * tan(self.pressure_angle_t))
1 / self.num_teeth * (pi / 2 + 2 * self.shift * tan(self.pressure_angle_t))
)
self.involute_rot = self.involute_rot1 + self.involute_rot2
self.angular_backlash = self.backlash / (self.d / 2)
@@ -206,7 +206,7 @@ class InvoluteRack(object):
def __init__(
self,
m=5,
z=15,
num_teeth=15,
pressure_angle=20 * pi / 180.0,
thickness=5,
beta=0,
@@ -219,7 +219,7 @@ class InvoluteRack(object):
self.pressure_angle = pressure_angle
self.thickness = thickness
self.m = m
self.z = z
self.num_teeth = num_teeth
self.beta = beta
self.head = head
self.clearance = clearance
@@ -247,8 +247,8 @@ class InvoluteRack(object):
]
teeth = [tooth]
trans = translation([0.0, pitch, 0.0])
for i in range(self.z - 1):
if self.simplified and i > 3 and i < (self.z - 6):
for i in range(self.num_teeth - 1):
if self.simplified and i > 3 and i < (self.num_teeth - 6):
tooth = trans(tooth).tolist()
else:
tooth = trans(tooth).tolist()
@@ -258,7 +258,7 @@ class InvoluteRack(object):
teeth[-1].pop()
teeth[-1][-1][0] = 0
teeth[-1][-1][1] -= a / 2
if self.simplified and (i == self.z - 6):
if self.simplified and (i == self.num_teeth - 6):
teeth[-1].pop(0)
teeth[-1].pop(0)
teeth[-1][0][0] = 0