def test_calc_base_circle_diameter_helical_gear(self): alpha_t = Converter.grad2rad(20.28355) beta = Converter.grad2rad(10.0) z = 2 mn = 2 expected = 3.809833 actual = Flank.calc_base_circle_diameter(alpha_t, mn, beta, z) self.assertAlmostEqual(expected, actual, 5)
def test_calc_base_circle_diameter_spur_gear(self): alpha_t = Converter.grad2rad(20.0) beta = Converter.grad2rad(0.0) z = 2 mn = 2 expected = 3.75877 actual = Flank.calc_base_circle_diameter(alpha_t, mn, beta, z) self.assertAlmostEqual(expected, actual, 5)
def test_calc_pitch_diameter_spur_gear(self): mn = 2.0 z = 2 beta = Converter.grad2rad(0.0) expected = 4.0 actual = Gear.calc_pitch_diameter(mn, z, beta) self.assertAlmostEqual(expected, actual, 5)
def test_calc_pitch_diameter_negative_helical_gear(self): mn = 2.0 z = 2 beta = Converter.grad2rad(-10.0) expected = 4.061706 actual = Gear.calc_pitch_diameter(mn, z, beta) self.assertAlmostEqual(expected, actual, 5)
def test_calc_transverse_pressure_angle_spur_gear(self): beta = Converter.grad2rad(0.0) alpha_n = Converter.grad2rad(20.0) expected = Converter.grad2rad(20.0) actual = Flank.calc_transverse_pressure_angle(alpha_n, beta) self.assertAlmostEqual(expected, actual, 5)
def read_ste(filename): content = {} f = open(filename) for line in f: if line.__contains__('*1001'): content.update( {"number of teeth": int(extract_value_from_line(line))}) if line.__contains__('*1101'): content.update( {"normal module": float(extract_value_from_line(line))}) if line.__contains__('*1104'): content.update({ "helix angle": Converter.grad2rad(float(extract_value_from_line(line))) }) if content["helix angle"] < Parameter.Precision.eps_normal: content.update({ "helix angle direction": Parameter.DirectionHelixAngle.LEFT }) else: content.update({ "helic angle direction": Parameter.DirectionHelixAngle.RIGHT }) if line.__contains__('*1106'): content.update( {"gear width": float(extract_value_from_line(line))}) if line.__contains__('*1107'): content.update({ "addendum modification factor": float(extract_value_from_line(line)) }) if line.__contains__('*1109'): content.update( {"tip diameter": float(extract_value_from_line(line))}) if line.__contains__('*1110'): content.update({ "root diameter generated": float(extract_value_from_line(line)) }) if line.__contains__('*1111'): content.update({ "normal pressure angle left": Converter.grad2rad(float(extract_value_from_line(line))) }) if line.__contains__('*1112'): content.update({ "normal pressure angle right": Converter.grad2rad(float(extract_value_from_line(line))) }) if line.__contains__('*1127'): content.update({ "number of measuring teeth": int(extract_value_from_line(line)) }) if line.__contains__('*1128'): content.update( {"tooth span": float(extract_value_from_line(line))}) if line.__contains__('*1129'): content.update( {"ball diameter": float(extract_value_from_line(line))}) if line.__contains__('*1130'): content.update({ "measurement over balls": float(extract_value_from_line(line)) }) f.close() if ("normal pressure angle left" in content) and not ("normal pressure angle right" in content): content.update({ "normal pressure angle right": content["normal pressure angle left"] }) if not ("normal pressure angle left" in content) and ("normal pressure angle right" in content): content.update({ "normal pressure angle left": content["normal pressure angle right"] }) return content