/// <summary> /// Определение базовых параметров колонны - выпуск, высота, бетон и т.д. /// </summary> /// <param name="width">Ширина колонны</param> /// <param name="thickness">Толщина колонны</param> protected void DefineBaseFields(int width, int thickness, bool defaultShackle) { Width = width; Thickness = thickness; Height = Block.GetPropValue <int>(PropNameHeight); Outline = Block.GetPropValue <int>(PropNameOutline); var classB = Block.GetPropValue <string>(PropNameConcrete); Concrete = new ConcreteH(classB, Width, Thickness, Height, this); Concrete.Calc(); // Определние вертикальной арматуры ArmVertic = defineVerticArm(); // Если диам вертик арм >= 20, то 4 стержня гнутся. checkBentBarDirect(ArmVertic, 4); // Хомут if (defaultShackle) { Shackle = defineShackleByGab(width, thickness, Height, ArmVertic.Diameter, a, PropNameShackleDiam, PropNameShacklePos, PropNameShackleStep); int countShackle = GetCountShackle(Shackle.Rows); if (countShackle - Shackle.Count > 0) { Shackle.AddCount(countShackle - Shackle.Count); } } AddElementarys(); }
private void defineFields() { // Хомут Shackle = defineShackleByLen(PropNameShackleLength, Thickness, a, Height, ArmVertic.Diameter, PropNameShackleDiam, PropNameShacklePos, PropNameShackleStep); // Добавление кол хомутов в усиленной части int countShackle = GetCountShackle(Shackle.Rows); if (countShackle - Shackle.Count > 0) { Shackle.AddCount(countShackle - Shackle.Count); } // Если есть второй хомут. var shacklePs = Block.GetPropValue <int>(PropNameShackleCount); if (shacklePs > 1) { Shackle.AddCount(Shackle.Count * (shacklePs - 1)); } AddElementary(Shackle); // Шпилька var springCount = Block.GetPropValue <int>(PropNameSpringCount, false); if (springCount != 0) { Spring = defineSpring(PropNameShackleDiam, PropNameSpringPos, PropNameShackleStep, Thickness, a, Height, PropNameSpringCount); if (Shackle.Count - Spring.Count > 0) { Spring.AddCount(Shackle.Count - Spring.Count); } AddElementary(Spring); } }
public void addShackle(int id, int fpID, int spID, bool playerMade) { Shackle temp = new Shackle(id, fpID, spID, playerMade); shacklePlatforms.Add(id, temp); entities[id].isShackle = true; }
private void defineFields() { // Хомут2 int widthShackle2 = getSideShackle2(); Shackle2 = defineShackleByGab(widthShackle2, widthShackle2, Height, ArmVertic.Diameter, a, PropNameShackleDiam, PropNameShacklePos2, PropNameShackleStep); AddElementary(Shackle2); }
/// <summary> /// Хомут по длине хомута /// </summary> /// <param name="propShLen">Параметр Длины хомута по внутр граням стержней</param> /// <param name="thickness">Толщина бетона</param> /// <param name="a">Защ слой до центра раб арм</param> /// <param name="range">Ширина распределения хомутов (по бетону, отступ 100 отнимается тут)</param> /// <param name="diamWorkArm">Диам раб арм</param> /// <param name="propDiam">Парам диаметра</param> /// <param name="propPos">Значение атр позиции</param> /// <param name="propStep">Параметр шага</param> protected Shackle defineShackleByLen(string propShLen, int thickness, int a, int range, int diamWorkArm, string propDiam, string propPos, string propStep, int rows = 1) { int diam = Block.GetPropValue <int>(propDiam); if (diam == 0) { return(null); } var shackleLen = Block.GetPropValue <int>(propShLen); if (shackleLen == 0) { return(null); } string pos = Block.GetPropValue <string>(propPos); int step = Block.GetPropValue <int>(propStep); int shackleH = thickness - (2 * a) + diamWorkArm; var s = new Shackle(diam, shackleLen, shackleH, step, range - 100, rows, pos, this); s.Calc(); return(s); }
/// <summary> /// Определение хомута - по габаритам бетона /// </summary> /// <param name="width">Ширина бетона</param> /// <param name="thickness">Толщина бетона</param> /// <param name="range">Ширина распределения хомутов (по бетону, отступ 100 отнимается тут)</param> /// <param name="diamWorkArm">Раб диам</param> /// <param name="a">Защ слой до центра раб арм</param> /// <param name="propDiam">Парам диам</param> /// <param name="propPos">Парам позиции</param> /// <param name="propStep">Парам шага</param> protected Shackle defineShackleByGab(int width, int thickness, int range, int diamWorkArm, int a, string propDiam, string propPos, string propStep, int rows = 1) { if (width == 0 || thickness == 0) { return(null); } int diam = Block.GetPropValue <int>(propDiam, false); if (diam == 0) { return(null); } string pos = Block.GetPropValue <string>(propPos); int step = Block.GetPropValue <int>(propStep); // длина хомута int lShackle = width - (2 * a) + diamWorkArm; int hShackle = thickness - (2 * a) + diamWorkArm; Shackle s = new Shackle(diam, lShackle, hShackle, step, range - 100, rows, pos, this); s.Calc(); return(s); }
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(); } }