using Kompas6Constants3D;

namespace Kompas.Mcp.Core.Modeling;

/// <summary>Базовая координатная ось (для направления массива / оси вращения).</summary>
public enum CoordinateAxis
{
    X,
    Y,
    Z,
}

public static class CoordinateAxes
{
    public static Obj3dType ToObj3dType(CoordinateAxis axis) => axis switch
    {
        CoordinateAxis.X => Obj3dType.o3d_axisOX,
        CoordinateAxis.Y => Obj3dType.o3d_axisOY,
        CoordinateAxis.Z => Obj3dType.o3d_axisOZ,
        _ => throw new ArgumentOutOfRangeException(nameof(axis), axis, "Неизвестная ось."),
    };

    public static CoordinateAxis Parse(string value) => value?.Trim().ToUpperInvariant() switch
    {
        "X" => CoordinateAxis.X,
        "Y" => CoordinateAxis.Y,
        "Z" => CoordinateAxis.Z,
        _ => throw new ArgumentException($"Неизвестная ось '{value}'. Допустимо: X, Y, Z.", nameof(value)),
    };
}
