/// <summary> /// Определение погонной арм с шириной и шагом распределения /// </summary> /// <param name="length"></param> /// <param name="widthRun"></param> /// <param name="propDiam"></param> /// <param name="propPos"></param> /// <param name="propStep"></param> /// <param name="concrete"></param> /// <param name="friendlyName"></param> /// <returns></returns> protected BarRunning defineBarRunStep(int length, int widthRun, int rows, string propDiam, string propPos, string propStep, Concrete concrete, string friendlyName) { int diam = Block.GetPropValue <int>(propDiam); if (diam == 0) { return(null); } string pos = Block.GetPropValue <string>(propPos); int step = Block.GetPropValue <int>(propStep); double len = getLengthRunArm(length, diam, concrete); var arm = new BarRunning(diam, len, widthRun, step, rows, pos, this, friendlyName); arm.Calc(); return(arm); }
private void defineUnder() { // Определение арматуры снизу проема if (ApertureHeightUnder < 200) { return; } hasBottomArm = true; int diamVerticArm = Block.GetPropValue <int>(PropNameArmVerticDiam); int stepVerticArm = Block.GetPropValue <int>(PropNameArmVerticStep); // Длина нахлести вертик арм (для скобы) int lapLengthVerticArm = Armature.GetLapLength(diamVerticArm, Concrete); int widthRun = ApertureWidth - 100; if (widthRun <= 0) { return; } int lengthVerticArm = ApertureHeightUnder - 20; int bracketLen = lapLengthVerticArm; // Если высота подоконника больше двух длин нахлеста, то добавляется вертикальная погонная арматура if (ApertureHeightUnder > lapLengthVerticArm * 2) { // Добавление вертик погонной арм - без коэф нахлести погонной арм!!! string posArmVertic = Block.GetPropValue <string>(PropNameArmVerticPos); var barRunArmVerticTemp = new BarRunning(diamVerticArm, lengthVerticArm, widthRun, stepVerticArm, 2, posArmVertic, this, "Вертикальная погонная арматура"); barRunArmVerticTemp.Calc(); if (ArmVertic == null) { ArmVertic = barRunArmVerticTemp; } else { // Добавить метры к существующей верхней вертик погонной арм var barRunArmVertic = (BarRunning)ArmVertic; barRunArmVertic.Meters += barRunArmVerticTemp.Meters; barRunArmVertic.Calc(); } } else { // Скоба на всю высоту выпуска вертик стержней (без погонной арматуры) bracketLen = lengthVerticArm; } // Скоба нижняя int tBracket = Thickness - 2 * a - diamVerticArm; string posBracket = Block.GetPropValue <string>(PropNameBracketBottomPos); BracketBottom = new Bracket(diamVerticArm, bracketLen, tBracket, stepVerticArm, widthRun, 1, posBracket, this, "Скоба нижняя"); BracketBottom.Calc(); // Хомут int stepShackle = Block.GetPropValue <int>(PropNameShackleStep); int diamShackle = Block.GetPropValue <int>(PropNameShackleDiam); int wShackle = Thickness - 2 * a + diamVerticArm + AddArmHor.Diameter * 2; int hShackle = (addArmHorBottomCount == 4 ? 100 : 200) + AddArmHor.Diameter; string posShackle = Block.GetPropValue <string>(PropNameShackleBottomPos); ShackleBottom = new Shackle(diamShackle, wShackle, hShackle, stepShackle, widthRun, 1, posShackle, this); ShackleBottom.Calc(); // Горизонтальная погонная арм - Фоновая int stepHorArm = Block.GetPropValue <int>(PropNameArmHorStep); int widthHorArm = ApertureHeightUnder - a - (addArmHorBottomCount == 4 ? 100 : 200) - stepHorArm - 50; if (widthHorArm > 0) { var armHorTemp = defineBarRunStep(ApertureWidth, widthHorArm, 2, PropNameArmHorDiam, PropNameArmHorPos, PropNameArmHorStep, Concrete, "Горизонтальная фоновая арматура"); armHorTemp.Calc(); if (ArmHor == null) { ArmHor = armHorTemp; } else { ArmHor.Meters += armHorTemp.Meters; ArmHor.Count += armHorTemp.Count; ArmHor.Width += armHorTemp.Width; ArmHor.Calc(); } } }
private void defineAbove() { // Определение арматуры надпроемной части // Наличие вертик погонной арм - на выпуск int diamVerticArm = Block.GetPropValue <int>(PropNameArmVerticDiam); int stepVerticArm = Block.GetPropValue <int>(PropNameArmVerticStep); // Длина нахлести вертик арм (для скобы) int lapLengthVerticArm = Armature.GetLapLength(diamVerticArm, Concrete); int widthRun = ApertureWidth - 100; if (widthRun <= 0) { return; } int lengthVerticArm = Height - ApertureHeight + Outline - 20; int bracketLen = lapLengthVerticArm; // Если высота стены над проемом больше двух длин нахлеста, то добавляется вертикальная погонная арматура if (Height - ApertureHeight > lapLengthVerticArm * 2) { // Добавление вертик погонной арм - без коэф нахлести погонной арм!!! string posArmVertic = Block.GetPropValue <string>(PropNameArmVerticPos); ArmVertic = new BarRunning(diamVerticArm, lengthVerticArm, widthRun, stepVerticArm, 2, posArmVertic, this, "Вертикальная погонная арматура"); ArmVertic.Calc(); } else { // Скоба на всю высоту выпуска вертик стержней (без погонной арматуры) bracketLen = lengthVerticArm; } // Скоба верхняя int tBracket = Thickness - 2 * a - diamVerticArm; string posBracket = Block.GetPropValue <string>(PropNameBracketTopPos); BracketTop = new Bracket(diamVerticArm, bracketLen, tBracket, stepVerticArm, widthRun, 1, posBracket, this, "Скоба верхняя"); BracketTop.Calc(); // Хомут int stepShackle = Block.GetPropValue <int>(PropNameShackleStep); int diamShackle = Block.GetPropValue <int>(PropNameShackleDiam); int wShackle = Thickness - 2 * a + diamVerticArm + AddArmHor.Diameter * 2; int hShackle = (addArmHorTopCount == 4 ? 100: 200) + AddArmHor.Diameter; string posShackle = Block.GetPropValue <string>(PropNameShackleTopPos); ShackleTop = new Shackle(diamShackle, wShackle, hShackle, stepShackle, widthRun, 1, posShackle, this); ShackleTop.Calc(); // Горизонтальная погонная арм - Фоновая int stepHorArm = Block.GetPropValue <int>(PropNameArmHorStep); int widthHorArm = Height - ApertureHeight - a - (addArmHorTopCount == 4 ? 100: 200) - stepHorArm - 50; if (widthHorArm > 0) { ArmHor = defineBarRunStep(ApertureWidth, widthHorArm, 2, PropNameArmHorDiam, PropNameArmHorPos, PropNameArmHorStep, Concrete, "Горизонтальная фоновая арматура"); ArmHor.Calc(); } }