/// <summary> /// Возвращает формат листа чертежа согласно ГОСТ 2.301. /// </summary> /// <param name="height">Высота листа в миллиметрах.</param> /// <param name="width">Ширина листа в миллиметрах.</param> /// <returns></returns> public static SheetSizeEnum GetSheetSize(int height, int width) { // Возвращает результат проверки соответствия размера формата листа требованиям ГОСТ 2.301. bool CheckSize(int checkValue, int standardValue) { bool result; if ((checkValue <= 150) & (System.Math.Abs(standardValue - checkValue) <= 1.5)) { result = true; } else if ((checkValue > 150) & (checkValue <= 600) & (System.Math.Abs(standardValue - checkValue) <= 2.0)) { result = true; } else if ((checkValue > 600) & (System.Math.Abs(standardValue - checkValue) <= 3.0)) { result = true; } else { result = false; } return(result); } SheetSizeEnum resultValue = SheetSizeEnum.NonStandard; foreach (SheetSizeEnum size in _heightList.Keys) { int standardHeight = _heightList[size]; int standardWidth = _widthList[size]; // Проверяются альбомные и портретные ориентации листа. if ((CheckSize(height, standardHeight) & CheckSize(width, standardWidth)) || (CheckSize(height, standardWidth) & CheckSize(width, standardHeight))) { resultValue = size; break; } } return(resultValue); }
/// <summary> /// Возвращает площадь указанного формата в квадратных миллиметрах. /// </summary> /// <param name="sheetSize">Формат листа чертежа согласно ГОСТ 2.301.</param> /// <returns></returns> public static int GetArea(this SheetSizeEnum sheetSize) => sheetSize.Height() * sheetSize.Width();
/// <summary> /// Возвращает ширину указанного формата в миллиметрах (для альбомной ориентации). /// </summary> /// <param name="sheetSize">Формат листа чертежа согласно ГОСТ 2.301.</param> /// <returns></returns> public static int Width(this SheetSizeEnum sheetSize) => _widthList[sheetSize];
/// <summary> /// Возвращает высоту указанного формата в миллиметрах (для альбомной ориентации). /// </summary> /// <param name="sheetSize">Формат листа чертежа согласно ГОСТ 2.301.</param> /// <returns></returns> public static int Height(this SheetSizeEnum sheetSize) => _heightList[sheetSize];
/// <summary> /// Возвращает имя указанного формата. /// </summary> /// <param name="sheetSize">Формат листа чертежа согласно ГОСТ 2.301.</param> /// <returns></returns> public static string Name(this SheetSizeEnum sheetSize) => System.Enum.GetName(typeof(SheetSizeEnum), sheetSize);