def write_dat(gear): f = open("GeneratingGrinding.dat", "w+") f.write("Gear data:\n") value = gear.internal_external.value * gear.number_of_teeth f.write(" Number of teeth...............z.......: %6.2f\n" % value) f.write(" Normal module.................mn......: %6.2f mm\n" % gear.normal_module) f.write(" Transverse module.............mt......: %6.2f mm\n" % gear.transverse_module) f.write(" Axial module..................mx......: %6.2f mm\n" % gear.axial_module) value = gear.helix_direction.value * Converter.rad2grad( gear.helix_angle) f.write(" Helix angle...................beta....: %6.2f °\n" % value) f.write(" Pitch Diameter................d.......: %6.2f mm\n" % gear.pitch_diameter) f.write(" Left Flank:\n") f.write(" Normal Pressure Angle......alpha_n.: %6.2f °\n" % Converter.rad2grad(gear.left_flank.normal_pressure_angle)) f.write(" Transverse Pressure Angle..alpha_t.: %6.2f °\n" % Converter.rad2grad(gear.left_flank.transverse_pressure_angle)) f.write(" Base Circle Diameter.......d_b.....: %6.2f mm\n" % gear.left_flank.base_circle_diameter) f.write(" Right Flank:\n") f.write(" Normal Pressure Angle......alpha_n.: %6.2f °\n" % Converter.rad2grad(gear.right_flank.normal_pressure_angle)) f.write(" Transverse Pressure Angle..alpha_t.: %6.2f °\n" % Converter.rad2grad(gear.right_flank.transverse_pressure_angle)) f.write(" Base Circle Diameter.......d_b.....: %6.2f mm\n" % gear.right_flank.base_circle_diameter) f.write("Tool data:\n") f.write("Process data:\n") f.close()
def setUp(self): self.amount = 100 self.src_currency = 'BGN' self.dest_currency = 'JPY' self.reference_date = '2020-02-26' self.converter = Converter(self.amount, self.src_currency, self.dest_currency, self.reference_date)
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)
class ConverterTest(unittest.TestCase): def setUp(self): self.amount = 100 self.src_currency = 'BGN' self.dest_currency = 'JPY' self.reference_date = '2020-02-26' self.converter = Converter(self.amount, self.src_currency, self.dest_currency, self.reference_date) def test_constructor(self): self.assertTrue( self.converter.getAmount() == self.amount and self.converter.getSrcCurrency() == self.src_currency and self.converter.getDestCurrency() == self.dest_currency and self.converter.getReferenceDate() == self.reference_date) def test_execute_success(self): result = self.converter.execute() self.assertEqual(result['amount'], 6142.24) self.assertEqual(result['currency'], 'JPY') def test_execute_failure(self): self.converter.src_currency = 'UUU' self.assertEqual( self.converter.execute(), { 'error message': 'the currencies or the data given as input are not valid' }) def test_fetchRatio(self): self.assertTrue( self.converter.fetchRatio(self.src_currency, self.reference_date) == [1.9558]) self.assertTrue( self.converter.fetchRatio(self.dest_currency, self.reference_date) == [120.13]) self.assertTrue( self.converter.fetchRatio('EUR', self.reference_date) == [1]) self.assertTrue( not self.converter.fetchRatio('UUU', self.reference_date))
def write_md(gear): f = open("GeneratingGrinding.md", "w+") f.write("# Generating Gear Grinding Summary\n") f.write("## Gear data\n") value = gear.internal_external.value * gear.number_of_teeth f.write("* Number of teeth z: %6.2f\n" % value) f.write("* Normal module m<sub>n</sub>: %6.2f mm\n" % gear.normal_module) f.write("* Transverse module m<sub>t</sub>: %6.2f mm\n" % gear.transverse_module) f.write("* Axial module m<sub>a</sub>: %6.2f mm\n" % gear.axial_module) value = gear.helix_direction.value * Converter.rad2grad( gear.helix_angle) f.write("* Helix angle β: %6.2f °\n" % value) f.write("* Pitch Diameter d: %6.2f mm\n" % gear.pitch_diameter) f.write("\n") f.write("### Left Flank:\n") f.write("* Normal Pressure Angle α<sub>n</sub>: %6.2f °\n" % Converter.rad2grad(gear.left_flank.normal_pressure_angle)) f.write("* Transverse Pressure Angle α<sub>t</sub>: %6.2f °\n" % Converter.rad2grad(gear.left_flank.transverse_pressure_angle)) f.write("* Base Circle Diameter d<sub>b</sub>: %6.2f mm\n" % gear.left_flank.base_circle_diameter) f.write("\n") f.write("### Right Flank:\n") f.write("* Normal Pressure Angle α<sub>n</sub>: %6.2f °\n" % Converter.rad2grad(gear.right_flank.normal_pressure_angle)) f.write("* Transverse Pressure Angle α<sub>t</sub>: %6.2f °\n" % Converter.rad2grad(gear.right_flank.transverse_pressure_angle)) f.write("* Base Circle Diameter d<sub>b</sub>: %6.2f mm\n" % gear.right_flank.base_circle_diameter) f.write("\n") f.write("## Tool data\n") f.write("\n") f.write("## Process data\n") f.close()
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