diff --git a/freecad/gears/features.py b/freecad/gears/features.py index 11f5bab..f3ef16c 100644 --- a/freecad/gears/features.py +++ b/freecad/gears/features.py @@ -490,9 +490,9 @@ class CycloidGear(BaseGear): obj.addProperty( "App::PropertyLength", "module", "gear_parameter", "module") obj.addProperty( - "App::PropertyLength", "inner_diameter", "cycloid_parameter", "inner_diameter (hypocycloid)") + "App::PropertyFloat", "inner_diameter", "cycloid_parameter", "inner_diameter divided by module (hypocycloid)") obj.addProperty( - "App::PropertyLength", "outer_diameter", "cycloid_parameter", "outer_diameter (epicycloid)") + "App::PropertyFloat", "outer_diameter", "cycloid_parameter", "outer_diameter divided by module (epicycloid)") obj.addProperty( "App::PropertyLength", "height", "gear_parameter", "height") obj.addProperty( @@ -504,28 +504,32 @@ class CycloidGear(BaseGear): obj.addProperty("App::PropertyAngle", "beta", "gear_parameter", "beta") obj.addProperty( "App::PropertyLength", "backlash", "gear_parameter", "backlash in mm") + obj.addProperty( + "App::PropertyFloat", "head", "gear_parameter", "head_value * modul_value = additional length of head") obj.addProperty("App::PropertyPythonObject", "gear", "gear_parameter", "the python object") obj.gear = self.cycloid_tooth obj.teeth = 15 obj.module = '1. mm' - obj.inner_diameter = '5 mm' - obj.outer_diameter = '5 mm' + obj.inner_diameter = 7.5 + obj.outer_diameter = 7.5 obj.beta = '0. deg' obj.height = '5. mm' obj.clearance = 0.25 obj.numpoints = 15 obj.backlash = '0.00 mm' obj.double_helix = False + obj.head = 0 obj.Proxy = self def execute(self, fp): super(CycloidGear, self).execute(fp) fp.gear.m = fp.module.Value fp.gear.z = fp.teeth - fp.gear.z1 = fp.inner_diameter.Value - fp.gear.z2 = fp.outer_diameter.Value + fp.gear.z1 = fp.inner_diameter + fp.gear.z2 = fp.outer_diameter fp.gear.clearance = fp.clearance + fp.gear.head = fp.head fp.gear.backlash = fp.backlash.Value fp.gear._update() pts = fp.gear.points(num=fp.numpoints) diff --git a/pygears/cycloid_tooth.py b/pygears/cycloid_tooth.py index 91d24dc..5234e9c 100644 --- a/pygears/cycloid_tooth.py +++ b/pygears/cycloid_tooth.py @@ -25,13 +25,14 @@ from ._functions import rotation, reflection class CycloidTooth(): - def __init__(self, z1=5, z2=5, z=14, m=5, clearance=0.12, backlash=0.00): + def __init__(self, z1=5, z2=5, z=14, m=5, clearance=0.12, backlash=0.00, head=0.0): self.m = m self.z = z self.clearance = clearance self.backlash = backlash self.z1 = z1 self.z2 = z2 + self.head = head self._calc_gear_factors() def _calc_gear_factors(self): @@ -39,7 +40,7 @@ class CycloidTooth(): self.d2 = self.z2 * self.m self.phi = self.m * pi self.d = self.z * self.m - self.da = self.d + 2*self.m + self.da = self.d + 2*self.m + self.head * self.m self.di = self.d - 2*self.m - self.clearance * self.m self.phipart = 2 * pi / self.z @@ -103,5 +104,5 @@ class CycloidTooth(): def _update(self): self.__init__(m=self.m, z=self.z, z1=self.z1, z2=self.z2, - clearance=self.clearance, backlash=self.backlash) + clearance=self.clearance, backlash=self.backlash, head=self.head)