involute-rack: add head parameter

This commit is contained in:
looooo
2017-06-29 10:22:19 +02:00
committed by lorenz
parent e419f55709
commit 962c0e4ffe
2 changed files with 15 additions and 10 deletions

View File

@@ -188,6 +188,8 @@ class involute_gear_rack():
"App::PropertyAngle", "pressure_angle", "involute_parameter", "pressure angle")
obj.addProperty(
"App::PropertyBool", "double_helix", "gear_parameter", "double helix")
obj.addProperty(
"App::PropertyFloat", "head", "gear_parameter", "head_value * modul_value = additional length of head")
obj.addProperty("App::PropertyPythonObject", "rack", "test", "test")
obj.rack = self.involute_rack
obj.teeth = 15
@@ -205,6 +207,7 @@ class involute_gear_rack():
fp.rack.pressure_angle = fp.pressure_angle.Value * pi / 180.
fp.rack.thickness = fp.thickness.Value
fp.rack.beta = fp.beta.Value * pi / 180.
fp.rack.head = fp.head
fp.rack._update()
pts = fp.rack.points()
pol = Wire(makePolygon(list(map(fcvec, pts))))

View File

@@ -152,27 +152,29 @@ class involute_tooth():
class involute_rack(object):
def __init__(self, m=5, z=15, pressure_angle=20 * pi / 180., thickness=5, beta=0):
def __init__(self, m=5, z=15, pressure_angle=20 * pi / 180., thickness=5, beta=0, head=0):
self.pressure_angle = pressure_angle
self.thickness = thickness
self.m = m
self.z = z
self.beta = beta
self.head = head
def _update(self):
self.__init__(m = self.m, z = self.z, pressure_angle = self.pressure_angle, thickness = self.thickness, beta=self.beta)
self.__init__(m = self.m, z = self.z, pressure_angle = self.pressure_angle,
thickness=self.thickness, beta=self.beta, head=self.head)
def points(self, num=10):
pressure_angle_t = arctan(tan(self.pressure_angle) / cos(self.beta))
m = self.m / cos(self.beta)
a = 2 * self.m * tan(pressure_angle_t)
b = ((m * pi) / 2 - a) / 2
a = (2 + self.head) * m * tan(pressure_angle_t)
b = (m * pi) / 4 - (1 + self.head) * m * tan(pressure_angle_t)
tooth= [
[self.m, -a - b],
[-self.m, -b],
[-self.m, b],
[self.m, a + b]
[-self.m, -a - b],
[self.m * (1 + self.head), -b],
[self.m * (1 + self.head), b],
[-self.m, a + b]
]
teeth = [tooth]
trans = translation([0., m * pi, 0.])
@@ -180,9 +182,9 @@ class involute_rack(object):
teeth.append(trans(teeth[-1]))
teeth = list(np.vstack(teeth))
teeth.append(list(teeth[-1]))
teeth[-1][0] += self.thickness
teeth[-1][0] -= self.thickness
teeth.append(list(teeth[0]))
teeth[-1][0] += self.thickness
teeth[-1][0] -= self.thickness
teeth.append(teeth[0])
return(teeth)