コード例 #1
0
        /// <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();
        }
コード例 #2
0
ファイル: PylonBlock.cs プロジェクト: 15831944/KR_MN_Acad
        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);
            }
        }
コード例 #3
0
        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;
        }
コード例 #4
0
        private void defineFields()
        {
            // Хомут2
            int widthShackle2 = getSideShackle2();

            Shackle2 = defineShackleByGab(widthShackle2, widthShackle2, Height, ArmVertic.Diameter, a, PropNameShackleDiam,
                                          PropNameShacklePos2, PropNameShackleStep);
            AddElementary(Shackle2);
        }
コード例 #5
0
        /// <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);
        }
コード例 #6
0
        /// <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);
        }
コード例 #7
0
        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();
                }
            }
        }
コード例 #8
0
        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();
            }
        }