using Kompas6Constants3D;

namespace Kompas.Mcp.Core.Modeling;

/// <summary>Базовая координатная плоскость для эскиза.</summary>
public enum BasePlane
{
    XOY,
    XOZ,
    YOZ,
}

public static class BasePlanes
{
    public static Obj3dType ToObj3dType(BasePlane plane) => plane switch
    {
        BasePlane.XOY => Obj3dType.o3d_planeXOY,
        BasePlane.XOZ => Obj3dType.o3d_planeXOZ,
        BasePlane.YOZ => Obj3dType.o3d_planeYOZ,
        _ => throw new ArgumentOutOfRangeException(nameof(plane), plane, "Неизвестная плоскость."),
    };

    public static BasePlane Parse(string value) => value.Trim().ToUpperInvariant() switch
    {
        "XOY" or "XY" => BasePlane.XOY,
        "XOZ" or "XZ" => BasePlane.XOZ,
        "YOZ" or "YZ" => BasePlane.YOZ,
        _ => throw new ArgumentException($"Неизвестная плоскость '{value}'. Допустимо: XOY, XOZ, YOZ.", nameof(value)),
    };
}
