foot -> root, bevelgear add warning for max height

This commit is contained in:
looooo
2021-06-24 09:27:39 +02:00
parent 1f70e28ac1
commit 175b746a7a

View File

@@ -131,7 +131,7 @@ class InvoluteGear(BaseGear):
"App::PropertyBool", "properties_from_tool", "gear_parameter", "if beta is given and properties_from_tool is enabled, \
gear parameters are internally recomputed for the rotated gear")
obj.addProperty("App::PropertyFloat", "head_fillet", "gear_parameter", "a fillet for the tooth-head, radius = head_fillet x module")
obj.addProperty("App::PropertyFloat", "root_fillet", "gear_parameter", "a fillet for the tooth-foot, radius = foot_fillet x module")
obj.addProperty("App::PropertyFloat", "root_fillet", "gear_parameter", "a fillet for the tooth-root, radius = root_fillet x module")
obj.addProperty("App::PropertyPythonObject",
"gear", "gear_parameter", "test")
obj.addProperty("App::PropertyLength", "dw",
@@ -156,7 +156,7 @@ class InvoluteGear(BaseGear):
obj.reversed_backlash = False
obj.properties_from_tool = False
obj.head_fillet = 0
obj.foot_fillet = 0
obj.root_fillet = 0
self.obj = obj
obj.Proxy = self
@@ -195,32 +195,32 @@ class InvoluteGear(BaseGear):
# head-fillet:
r_head = float(fp.head_fillet * fp.module)
r_foot = float(fp.foot_fillet * fp.module)
if fp.undercut and r_foot != 0.:
r_foot = 0.
App.Console.PrintWarning("foot fillet is not allowed if undercut is computed")
r_root = float(fp.root_fillet * fp.module)
if fp.undercut and r_root != 0.:
r_root = 0.
App.Console.PrintWarning("root fillet is not allowed if undercut is computed")
if len(tooth.Edges) == 11:
pos_head = [1, 3, 9]
pos_foot = [6, 8]
pos_root = [6, 8]
edge_range = [2, 12]
else:
pos_head = [0, 2, 6]
pos_foot = [4, 6]
pos_root = [4, 6]
edge_range = [1, 9]
for pos in pos_head:
edges = insert_fillet(edges, pos, r_head)
for pos in pos_foot:
for pos in pos_root:
try:
edges = insert_fillet(edges, pos, r_foot)
edges = insert_fillet(edges, pos, r_root)
except RuntimeError:
edges.pop(8)
edges.pop(6)
edge_range = [2, 10]
pos_foot = [5, 7]
for pos in pos_foot:
edges = insert_fillet(edges, pos, r_foot)
pos_root = [5, 7]
for pos in pos_root:
edges = insert_fillet(edges, pos, r_root)
break
edges = edges[edge_range[0]:edge_range[1]]
edges = [e for e in edges if e is not None]
@@ -280,7 +280,7 @@ class InvoluteGearRack(BaseGear):
obj.addProperty(
"App::PropertyFloat", "head", "gear_parameter", "head * module = additional length of head")
obj.addProperty(
"App::PropertyFloat", "clearance", "gear_parameter", "clearance * module = additional length of foot")
"App::PropertyFloat", "clearance", "gear_parameter", "clearance * module = additional length of root")
obj.addProperty(
"App::PropertyBool", "properties_from_tool", "gear_parameter", "if beta is given and properties_from_tool is enabled, \
gear parameters are internally recomputed for the rotated gear")
@@ -327,6 +327,7 @@ class InvoluteGearRack(BaseGear):
fp.rack._update()
pts = fp.rack.points()
pol = Wire(makePolygon(list(map(fcvec, pts))))
if fp.height.Value == 0:
fp.Shape = pol
elif fp.beta.Value == 0:
@@ -502,7 +503,7 @@ class CycloidGear(BaseGear):
obj.addProperty(
"App::PropertyLength", "backlash", "gear_parameter", "backlash in mm")
obj.addProperty("App::PropertyFloat", "head_fillet", "gear_parameter", "a fillet for the tooth-head, radius = head_fillet x module")
obj.addProperty("App::PropertyFloat", "root_fillet", "gear_parameter", "a fillet for the tooth-foot, radius = foot_fillet x module")
obj.addProperty("App::PropertyFloat", "root_fillet", "gear_parameter", "a fillet for the tooth-root, radius = root_fillet x module")
obj.addProperty(
"App::PropertyFloat", "head", "gear_parameter", "head_value * modul_value = additional length of head")
obj.addProperty("App::PropertyPythonObject", "gear",
@@ -520,7 +521,7 @@ class CycloidGear(BaseGear):
obj.double_helix = False
obj.head = 0
obj.head_fillet = 0
obj.foot_fillet = 0
obj.root_fillet = 0
obj.Proxy = self
def execute(self, fp):
@@ -542,17 +543,17 @@ class CycloidGear(BaseGear):
edges = tooth.Edges
r_head = float(fp.head_fillet * fp.module)
r_foot = float(fp.foot_fillet * fp.module)
r_root = float(fp.root_fillet * fp.module)
pos_head = [0, 2, 6]
pos_foot = [4, 6]
pos_root = [4, 6]
edge_range = [1, 9]
for pos in pos_head:
edges = insert_fillet(edges, pos, r_head)
for pos in pos_foot:
edges = insert_fillet(edges, pos, r_foot)
for pos in pos_root:
edges = insert_fillet(edges, pos, r_root)
edges = edges[edge_range[0]:edge_range[1]]
edges = [e for e in edges if e is not None]
@@ -627,6 +628,9 @@ class BevelGear(BaseGear):
fp.gear.module = fp.module.Value
fp.gear.pressure_angle = (90 - fp.pressure_angle.Value) * np.pi / 180.
fp.gear.pitch_angle = fp.pitch_angle.Value * np.pi / 180
max_height = fp.gear.module * fp.teeth / 2 / np.tan(fp.gear.pitch_angle)
if fp.height >= max_height:
App.Console.PrintWarning("height must be smaller than {}".format(max_height))
fp.gear.backlash = fp.backlash.Value
scale = fp.module.Value * fp.gear.z / 2 / \
np.tan(fp.pitch_angle.Value * np.pi / 180)
@@ -729,7 +733,7 @@ class WormGear(BaseGear):
obj.addProperty(
"App::PropertyFloat", "head", "gear_parameter", "head * module = additional length of head")
obj.addProperty(
"App::PropertyFloat", "clearance", "gear_parameter", "clearance * module = additional length of foot")
"App::PropertyFloat", "clearance", "gear_parameter", "clearance * module = additional length of root")
obj.addProperty(
"App::PropertyBool", "reverse_pitch", "gear_parameter", "reverse rotation of helix")
obj.teeth = 3