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Отклонениями(номинальныйРазмер, нижнееОтклонение, верхнееОтклонение)); }