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):
raise TypeError(f"Expected to see type '{expected_type}', instead received '{segment.is_a()}'.")
match segment.DesignParameters.PredefinedType:
case "CONSTANTCANT":
result = _map_constant_cant(file, segment.DesignParameters, rail_head_distance)
case "LINEARTRANSITION":
result = _map_linear_transition(file, segment.DesignParameters, rail_head_distance)
case "HELMERTCURVE":
result = _map_helmert_curve(file, segment.DesignParameters, rail_head_distance)
case "BLOSSCURVE":
result = _map_bloss_curve(file, segment.DesignParameters, rail_head_distance)
case "COSINECURVE":
result = _map_cosine_curve(file, segment.DesignParameters, rail_head_distance)
case "SINECURVE":
result = _map_sine_curve(file, segment.DesignParameters, rail_head_distance)
case "VIENNESEBEND":
result = _map_viennese_bend(file, segment.DesignParameters, rail_head_distance)
case _:
raise TypeError("Unexpected predefined type")
predefined_type = segment.DesignParameters.PredefinedType
if predefined_type == "CONSTANTCANT":
result = _map_constant_cant(file, segment.DesignParameters, rail_head_distance)
elif predefined_type == "LINEARTRANSITION":
result = _map_linear_transition(file, segment.DesignParameters, rail_head_distance)
elif predefined_type == "HELMERTCURVE":
result = _map_helmert_curve(file, segment.DesignParameters, rail_head_distance)
elif predefined_type == "BLOSSCURVE":
result = _map_bloss_curve(file, segment.DesignParameters, rail_head_distance)
elif predefined_type == "COSINECURVE":
result = _map_cosine_curve(file, segment.DesignParameters, rail_head_distance)
elif predefined_type == "SINECURVE":
result = _map_sine_curve(file, segment.DesignParameters, rail_head_distance)
elif predefined_type == "VIENNESEBEND":
result = _map_viennese_bend(file, segment.DesignParameters, rail_head_distance)
else:
raise TypeError(f"Unexpected predefined type: '{predefined_type}'.")
return result
@@ -412,26 +412,26 @@ def map_alignment_horizontal_segment(file: ifcopenshell.file, segment: entity_in
if not segment.is_a(expected_type):
raise TypeError(f"Expected to see type '{expected_type}', instead received '{segment.is_a()}'.")
match segment.DesignParameters.PredefinedType:
case "LINE":
result = _map_line(file, segment.DesignParameters)
case "CIRCULARARC":
result = _map_circular_arc(file, segment.DesignParameters)
case "CLOTHOID":
result = _map_clothoid(file, segment.DesignParameters)
case "CUBIC":
result = _map_cubic(file, segment.DesignParameters)
case "HELMERTCURVE":
result = _map_helmert_curve(file, segment.DesignParameters)
case "BLOSSCURVE":
result = _map_bloss_curve(file, segment.DesignParameters)
case "COSINECURVE":
result = _map_cosine_curve(file, segment.DesignParameters)
case "SINECURVE":
result = _map_sine_curve(file, segment.DesignParameters)
case "VIENNESEBEND":
result = _map_viennese_bend(file, segment.DesignParameters)
case _:
raise TypeError("Unexpected predefined type")
predefined_type = segment.DesignParameters.PredefinedType
if predefined_type == "LINE":
result = _map_line(file, segment.DesignParameters)
elif predefined_type == "CIRCULARARC":
result = _map_circular_arc(file, segment.DesignParameters)
elif predefined_type == "CLOTHOID":
result = _map_clothoid(file, segment.DesignParameters)
elif predefined_type == "CUBIC":
result = _map_cubic(file, segment.DesignParameters)
elif predefined_type == "HELMERTCURVE":
result = _map_helmert_curve(file, segment.DesignParameters)
elif predefined_type == "BLOSSCURVE":
result = _map_bloss_curve(file, segment.DesignParameters)
elif predefined_type == "COSINECURVE":
result = _map_cosine_curve(file, segment.DesignParameters)
elif predefined_type == "SINECURVE":
result = _map_sine_curve(file, segment.DesignParameters)
elif predefined_type == "VIENNESEBEND":
result = _map_viennese_bend(file, segment.DesignParameters)
else:
raise TypeError(f"Unexpected predefined type: '{predefined_type}'.")
return result
@@ -199,20 +199,21 @@ def map_alignment_vertical_segment(file: ifcopenshell.file, segment: entity_inst
if not segment.is_a(expected_type):
raise TypeError(f"Expected to see type '{expected_type}', instead received '{segment.is_a()}'.")
match segment.DesignParameters.PredefinedType:
case "CONSTANTGRADIENT":
result = _map_constant_gradient(file, segment.DesignParameters)
predefined_type = segment.DesignParameters.PredefinedType
case "PARABOLICARC":
result = _map_parabolic_arc(file, segment.DesignParameters)
if predefined_type == "CONSTANTGRADIENT":
result = _map_constant_gradient(file, segment.DesignParameters)
case "CIRCULARARC":
result = _map_circular_arc(file, segment.DesignParameters)
elif predefined_type == "PARABOLICARC":
result = _map_parabolic_arc(file, segment.DesignParameters)
case "CLOTHOID":
result = _map_clothoid(file, segment.DesignParameters)
elif predefined_type == "CIRCULARARC":
result = _map_circular_arc(file, segment.DesignParameters)
case _:
raise TypeError(f"Unexpected predefined type - got {segment.DesignParameters.PredefinedType}")
elif predefined_type == "CLOTHOID":
result = _map_clothoid(file, segment.DesignParameters)
else:
raise TypeError(f"Unexpected predefined type - got {segment.DesignParameters.PredefinedType}")
return result