Exemple #1
0
        /// <summary> 陡坡路堤 </summary>
        /// <param name="sec"> 道路中心填方高度</param>
        /// <param name="treatedSide"> 哪一侧需要进行陡坡路堤处理 </param>
        /// <param name="treatedWidth"> 陡坡路堤处理宽度 </param>
        /// <param name="stairArea"> 挖台阶的面积 </param>
        /// <param name="reinforcementSide"> 哪一侧需要设置加筋结构,比如铺设三层土工格栅</param>
        /// <returns></returns>
        private bool IsSteepSlope(SubgradeSection sec, out SectionSide treatedSide, out double treatedWidth,
                                  out double stairArea,
                                  out SectionSide reinforcementSide)
        {
            bool isSteep = false;

            treatedWidth = 0;
            stairArea    = 0;
            double sideTreatedWidth = 0;
            double sideStairArea    = 0;

            treatedSide       = SectionSide.无;
            reinforcementSide = SectionSide.无;
            bool leftSetReinforcement;
            bool rightSetReinforcement;
            var  secData = sec.XData;
            //
            SlopeLine sideSlope  = null;
            Polyline  sideGround = null;

            if (secData.LeftRetainingWallType != RetainingWallType.路肩墙)
            {
                sideSlope  = sec.GetSlopeLine(true); // 断面左侧边坡
                sideGround = secData.LeftGroundSurfaceHandle.GetDBObject <Polyline>(_docMdf.acDataBase);
                if (IsSteepFill(secData, true, sideSlope, sideGround, out sideTreatedWidth, out sideStairArea,
                                out leftSetReinforcement))
                {
                    isSteep           = true;
                    treatedSide       = treatedSide | SectionSide.左;
                    reinforcementSide = leftSetReinforcement ? reinforcementSide | SectionSide.左 : reinforcementSide;
                    treatedWidth     += sideTreatedWidth;
                    stairArea        += sideStairArea;
                }
            }
            if (secData.RightRetainingWallType != RetainingWallType.路肩墙)
            {
                sideSlope  = sec.GetSlopeLine(false); // 断面右侧边坡
                sideGround = secData.RightGroundSurfaceHandle.GetDBObject <Polyline>(_docMdf.acDataBase);
                if (IsSteepFill(secData, false, sideSlope, sideGround, out sideTreatedWidth, out sideStairArea,
                                out rightSetReinforcement))
                {
                    isSteep           = true;
                    treatedSide       = treatedSide | SectionSide.右;
                    reinforcementSide = rightSetReinforcement ? reinforcementSide | SectionSide.右 : reinforcementSide;
                    treatedWidth     += sideTreatedWidth;
                    stairArea        += sideStairArea;
                }
            }
            return(isSteep);
        }
Exemple #2
0
        /// <summary> 填方边坡类型 </summary>
        /// <param name="sec"> 道路中心填方高度</param>
        /// <param name="treatedWidth"> 陡坡路堤处理宽度 </param>
        /// <param name="treatedSide"> 要进行挖台阶处理的是断面的哪一侧 </param>
        /// <param name="stairArea">某一侧边坡所挖台阶面积</param>
        /// <returns></returns>
        private FillSlopeType GetFillSlopeType(SubgradeSection sec, out SectionSide treatedSide, out double treatedWidth, out double stairArea)
        {
            var sectionfillSlopeType = FillSlopeType.Other;

            treatedWidth = 0;
            stairArea    = 0.0;
            double sideTreatedWidth = 0;
            double sideStairArea    = 0.0;

            treatedSide = SectionSide.无;
            var secData = sec.XData;
            //
            var sideSlope     = sec.GetSlopeLine(true); // 断面左侧边坡
            var sideGround    = secData.LeftGroundSurfaceHandle.GetDBObject <Polyline>(_docMdf.acDataBase);
            var fillSlopeType = GetFillSlopeType(secData, true, sideSlope, sideGround, out sideTreatedWidth, out sideStairArea);

            if (fillSlopeType == FillSlopeType.StairExcav)
            {
                sectionfillSlopeType = FillSlopeType.StairExcav;
                treatedSide          = treatedSide | SectionSide.左;
                treatedWidth        += sideTreatedWidth;
                stairArea           += sideStairArea;
            }

            sideSlope     = sec.GetSlopeLine(false); // 断面右侧边坡
            sideGround    = secData.RightGroundSurfaceHandle.GetDBObject <Polyline>(_docMdf.acDataBase);
            fillSlopeType = GetFillSlopeType(secData, false, sideSlope, sideGround, out sideTreatedWidth, out sideStairArea);
            if (fillSlopeType == FillSlopeType.StairExcav)
            {
                sectionfillSlopeType = FillSlopeType.StairExcav;
                treatedSide          = treatedSide | SectionSide.右;
                treatedWidth        += sideTreatedWidth;
                stairArea           += sideStairArea;
            }

            return(sectionfillSlopeType);
        }