diff --git a/freecad/gears/cycloidgear.py b/freecad/gears/cycloidgear.py index fa6e859..d35dc85 100644 --- a/freecad/gears/cycloidgear.py +++ b/freecad/gears/cycloidgear.py @@ -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 diff --git a/freecad/gears/involutegear.py b/freecad/gears/involutegear.py index 9948163..8cf5520 100644 --- a/freecad/gears/involutegear.py +++ b/freecad/gears/involutegear.py @@ -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) diff --git a/pygears/cycloid_tooth.py b/pygears/cycloid_tooth.py index 14e2d97..3089ef1 100644 --- a/pygears/cycloid_tooth.py +++ b/pygears/cycloid_tooth.py @@ -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, diff --git a/pygears/involute_tooth.py b/pygears/involute_tooth.py index bde0123..4b4a23b 100644 --- a/pygears/involute_tooth.py +++ b/pygears/involute_tooth.py @@ -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