public static decimal ВычислитьРазмерПробкиПРизнош(азмерCОтклонениями размерОтверстия)
        {
            int квалитет;
            int номерИнтервала;

            ПроверитьРазмерОтверстияИНайтиКвалитетИНомерИнтервала(размерОтверстия, out квалитет, out номерИнтервала);

            decimal размерПробкиПРизнош = размерОтверстия.НаименьшийПредельныйРазмер() - Y(квалитет, номерИнтервала) + Al(квалитет, номерИнтервала);

            return(размерПробкиПРизнош);
        }
 private static void ПроверитьРазмерОтверстияИНайтиКвалитетИНомерИнтервала(азмерCОтклонениями размерОтверстия, out int квалитет, out int номерИнтервала)
 {
     ПроверитьНоминальныйРазмерОтверстия(размерОтверстия.НоминальныйРазмер);
     квалитет = ТаблицаДопусков.НайтиБлижайшийКвалитет(размерОтверстия);
     ПроверитьКвалитет(квалитет);
     if (квалитет == 17)
     {
         квалитет = 16;
     }
     номерИнтервала = НайтиНомерИнтервала(размерОтверстия.НаименьшийПредельныйРазмер());
 }
        public static азмерCОтклонениями ВычислитьРазмерСкобыНЕ(азмерCОтклонениями размерОтверстия, bool округлять = true)
        {
            int квалитет;
            int номерИнтервала;

            ПроверитьРазмерОтверстияИНайтиКвалитетИНомерИнтервала(размерОтверстия, out квалитет, out номерИнтервала);

            decimal номинальныйРазмер = (размерОтверстия.НаименьшийПредельныйРазмер() + Al1(квалитет, номерИнтервала) - H1(квалитет, номерИнтервала) / 2);
            decimal нижнееОтклонение  = H1(квалитет, номерИнтервала);
            decimal верхнееОтклонение = 0;

            if (округлять)
            {
                номинальныйРазмер = ОкруглитьРазмерДоПоловиныМикрометраВМеньшуюСторону(номинальныйРазмер);
            }

            return(new  азмерCОтклонениями(номинальныйРазмер, нижнееОтклонение, верхнееОтклонение));
        }