PD: Fix the internal InvoluteGear's root/tip arc directions

The arcs on the tip (around the addendum) and the root (between the
fillets) used to have their bulge in the wrong direction for the internal
gear profile: their center points has been on the outside.
Since this error existed since the very first introcution of the internal
gear I assume this was done by accident: Instead of only the fillets, all
arcs have been inverted when the external profile was copied.
This commit now inverts the tip and root arcs again, to be concentric
with the pitch circle -- same as for the external profile.
This commit is contained in:
Jonas Bähr
2023-02-13 20:16:04 +01:00
committed by Uwe
parent f4cdb62464
commit ecd660ed7e
2 changed files with 3 additions and 7 deletions

View File

@@ -125,7 +125,7 @@ class TestInvoluteGear(unittest.TestCase):
root_diameter = pitch_diameter + 2 * ded_coef * m
# the test purpose here is just to ensure the gear's parameters are used,
# not super precise profile verification. Thus a lax delta is just file here.
delta = 0.1 # FIXME it seems that the top land arc is in the wrong direction, thus a larger tolerance.
delta = 0.01
self.assertIntersection(hub.Shape, makeCircle(pitch_diameter/2), "Expecting intersection at pitch circle")
self.assertNoIntersection(hub.Shape, makeCircle(tip_diameter/2 - delta), "Teeth extent below tip circle")
self.assertNoIntersection(hub.Shape, makeCircle(root_diameter/2 + delta), "Teeth extend beyond root circle")

View File

@@ -312,11 +312,7 @@ def CreateInternalGear(w, m, Z, phi,
if (not tipWithinInvolute):
w.line(tip) # line from tip down to base circle
if split:
w.arc(tipR, Ra, 0) # arc across addendum circle
else:
#w.arc(tipR[-1], Ra, 0) # arc across addendum circle
w.arc(tipR, Ra, 0)
w.arc(tipR, Ra, 1) # arc across addendum circle
if (not tipWithinInvolute):
w.line(invR[0]) # line up to the base circle
@@ -329,7 +325,7 @@ def CreateInternalGear(w, m, Z, phi,
if (rootNext[1] > rootR[1]): # is there a section of root circle between fillets?
w.arc(rootR, fRad, 1) # back fillet
w.arc(rootNext, Rroot, 0) # root circle arc
w.arc(rootNext, Rroot, 1) # root circle arc
w.arc(filletNext, fRad, 1)