/// <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); }
/// <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); }