ifcopenshell-python - fix 3.9 support (replace match statements)

This commit is contained in:
Andrej730
2025-06-18 13:51:45 +05:00
parent 44e5f89119
commit 08a8afba5b
3 changed files with 50 additions and 49 deletions
@@ -393,22 +393,22 @@ def map_alignment_cant_segment(
if not segment.is_a(expected_type): if not segment.is_a(expected_type):
raise TypeError(f"Expected to see type '{expected_type}', instead received '{segment.is_a()}'.") raise TypeError(f"Expected to see type '{expected_type}', instead received '{segment.is_a()}'.")
match segment.DesignParameters.PredefinedType: predefined_type = segment.DesignParameters.PredefinedType
case "CONSTANTCANT": if predefined_type == "CONSTANTCANT":
result = _map_constant_cant(file, segment.DesignParameters, rail_head_distance) result = _map_constant_cant(file, segment.DesignParameters, rail_head_distance)
case "LINEARTRANSITION": elif predefined_type == "LINEARTRANSITION":
result = _map_linear_transition(file, segment.DesignParameters, rail_head_distance) result = _map_linear_transition(file, segment.DesignParameters, rail_head_distance)
case "HELMERTCURVE": elif predefined_type == "HELMERTCURVE":
result = _map_helmert_curve(file, segment.DesignParameters, rail_head_distance) result = _map_helmert_curve(file, segment.DesignParameters, rail_head_distance)
case "BLOSSCURVE": elif predefined_type == "BLOSSCURVE":
result = _map_bloss_curve(file, segment.DesignParameters, rail_head_distance) result = _map_bloss_curve(file, segment.DesignParameters, rail_head_distance)
case "COSINECURVE": elif predefined_type == "COSINECURVE":
result = _map_cosine_curve(file, segment.DesignParameters, rail_head_distance) result = _map_cosine_curve(file, segment.DesignParameters, rail_head_distance)
case "SINECURVE": elif predefined_type == "SINECURVE":
result = _map_sine_curve(file, segment.DesignParameters, rail_head_distance) result = _map_sine_curve(file, segment.DesignParameters, rail_head_distance)
case "VIENNESEBEND": elif predefined_type == "VIENNESEBEND":
result = _map_viennese_bend(file, segment.DesignParameters, rail_head_distance) result = _map_viennese_bend(file, segment.DesignParameters, rail_head_distance)
case _: else:
raise TypeError("Unexpected predefined type") raise TypeError(f"Unexpected predefined type: '{predefined_type}'.")
return result return result
@@ -412,26 +412,26 @@ def map_alignment_horizontal_segment(file: ifcopenshell.file, segment: entity_in
if not segment.is_a(expected_type): if not segment.is_a(expected_type):
raise TypeError(f"Expected to see type '{expected_type}', instead received '{segment.is_a()}'.") raise TypeError(f"Expected to see type '{expected_type}', instead received '{segment.is_a()}'.")
match segment.DesignParameters.PredefinedType: predefined_type = segment.DesignParameters.PredefinedType
case "LINE": if predefined_type == "LINE":
result = _map_line(file, segment.DesignParameters) result = _map_line(file, segment.DesignParameters)
case "CIRCULARARC": elif predefined_type == "CIRCULARARC":
result = _map_circular_arc(file, segment.DesignParameters) result = _map_circular_arc(file, segment.DesignParameters)
case "CLOTHOID": elif predefined_type == "CLOTHOID":
result = _map_clothoid(file, segment.DesignParameters) result = _map_clothoid(file, segment.DesignParameters)
case "CUBIC": elif predefined_type == "CUBIC":
result = _map_cubic(file, segment.DesignParameters) result = _map_cubic(file, segment.DesignParameters)
case "HELMERTCURVE": elif predefined_type == "HELMERTCURVE":
result = _map_helmert_curve(file, segment.DesignParameters) result = _map_helmert_curve(file, segment.DesignParameters)
case "BLOSSCURVE": elif predefined_type == "BLOSSCURVE":
result = _map_bloss_curve(file, segment.DesignParameters) result = _map_bloss_curve(file, segment.DesignParameters)
case "COSINECURVE": elif predefined_type == "COSINECURVE":
result = _map_cosine_curve(file, segment.DesignParameters) result = _map_cosine_curve(file, segment.DesignParameters)
case "SINECURVE": elif predefined_type == "SINECURVE":
result = _map_sine_curve(file, segment.DesignParameters) result = _map_sine_curve(file, segment.DesignParameters)
case "VIENNESEBEND": elif predefined_type == "VIENNESEBEND":
result = _map_viennese_bend(file, segment.DesignParameters) result = _map_viennese_bend(file, segment.DesignParameters)
case _: else:
raise TypeError("Unexpected predefined type") raise TypeError(f"Unexpected predefined type: '{predefined_type}'.")
return result return result
@@ -199,20 +199,21 @@ def map_alignment_vertical_segment(file: ifcopenshell.file, segment: entity_inst
if not segment.is_a(expected_type): if not segment.is_a(expected_type):
raise TypeError(f"Expected to see type '{expected_type}', instead received '{segment.is_a()}'.") raise TypeError(f"Expected to see type '{expected_type}', instead received '{segment.is_a()}'.")
match segment.DesignParameters.PredefinedType: predefined_type = segment.DesignParameters.PredefinedType
case "CONSTANTGRADIENT":
result = _map_constant_gradient(file, segment.DesignParameters)
case "PARABOLICARC": if predefined_type == "CONSTANTGRADIENT":
result = _map_parabolic_arc(file, segment.DesignParameters) result = _map_constant_gradient(file, segment.DesignParameters)
case "CIRCULARARC": elif predefined_type == "PARABOLICARC":
result = _map_circular_arc(file, segment.DesignParameters) result = _map_parabolic_arc(file, segment.DesignParameters)
case "CLOTHOID": elif predefined_type == "CIRCULARARC":
result = _map_clothoid(file, segment.DesignParameters) result = _map_circular_arc(file, segment.DesignParameters)
case _: elif predefined_type == "CLOTHOID":
raise TypeError(f"Unexpected predefined type - got {segment.DesignParameters.PredefinedType}") result = _map_clothoid(file, segment.DesignParameters)
else:
raise TypeError(f"Unexpected predefined type - got {segment.DesignParameters.PredefinedType}")
return result return result