Beispiel #1
0
 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()
Beispiel #2
0
 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)
Beispiel #3
0
 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)
Beispiel #4
0
 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)
Beispiel #5
0
 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)
Beispiel #6
0
 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)
Beispiel #7
0
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))
Beispiel #8
0
 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 &beta;: %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 &alpha;<sub>n</sub>: %6.2f °\n" %
             Converter.rad2grad(gear.left_flank.normal_pressure_angle))
     f.write("* Transverse Pressure Angle &alpha;<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 &alpha;<sub>n</sub>: %6.2f °\n" %
             Converter.rad2grad(gear.right_flank.normal_pressure_angle))
     f.write("* Transverse Pressure Angle &alpha;<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()
Beispiel #9
0
 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)
Beispiel #10
0
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