namespace Kompas.Mcp.Core.Conversion;
/// Вариант стандарта STEP для экспорта.
public enum StepFormat
{
/// Формат по умолчанию (ksConverterToSTEP).
Auto,
Ap203,
Ap214,
Ap242,
}
///
/// Маппинг формата STEP в целочисленные коды конвертера КОМПАС (ksKOMPASConverterEnum).
/// Эти коды передаются в IApplication.get_Converter и IAdditionConvertParameters.Format.
///
public static class StepFormats
{
/// Код импорта STEP — ksConverterFromSTEP.
public const int ImportConverterCode = -3;
/// Код экспорта STEP для выбранного стандарта (ksConverterToSTEP[_APxxx]).
public static int ExportConverterCode(StepFormat format) => format switch
{
StepFormat.Auto => 3,
StepFormat.Ap203 => 203,
StepFormat.Ap214 => 214,
StepFormat.Ap242 => 242,
_ => throw new ArgumentOutOfRangeException(nameof(format), format, "Неизвестный формат STEP."),
};
/// Разобрать строку формата ("auto"/"step", "ap203", "ap214", "ap242").
public static StepFormat Parse(string? value) => value?.Trim().ToLowerInvariant() switch
{
null or "" or "auto" or "step" => StepFormat.Auto,
"ap203" or "203" => StepFormat.Ap203,
"ap214" or "214" => StepFormat.Ap214,
"ap242" or "242" => StepFormat.Ap242,
_ => throw new ArgumentException(
$"Неизвестный формат STEP '{value}'. Допустимо: auto, ap203, ap214, ap242.", nameof(value)),
};
}