Exemple #1
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)
Exemple #2
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)
Exemple #3
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)
Exemple #4
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)
Exemple #5
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)
Exemple #6
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