/// <summary> /// V串挂点的分配 /// </summary> protected void GeneratePointsLoadVString(int index, string orientation, bool isLeft, VStringCompose vString, out string loadStr, out StruCalsPointLoad pointLoad) { GetPointProportion(dicComposeInfo[index], out float proportion); float load; if (orientation == "X") { load = (isLeft ? vString.VCX1: vString.VCX2) * proportion; } else if (orientation == "Y") { load = (isLeft ? vString.VCY1 : vString.VCY2) * proportion; } else { load = (isLeft ? vString.VCZ1 : vString.VCZ2) * proportion; } loadStr = pointParas.Points[index].PadLeft(10) + proportion.ToString("0.00").PadLeft(10) + load.ToString("0.00").PadLeft(10); pointLoad = new StruCalsPointLoad() { Name = Convert.ToInt32(pointParas.Points[index]), Wire = wireType, WorkConditionId = jIndex, Orientation = orientation, Proportion = proportion, Load = load, HPSettingName = hpPointsParas.HangingPointSettingName, }; }
public void ComposeHangingPointsLoad(out string resStr, out List <StruCalsPointLoad> resList, bool isTurningPoint = false) { resList = new List <StruCalsPointLoad>(); string preStr = " " + wireType; if (isTurningPoint) { preStr += "转向荷载"; } preStr += ("工况" + (jIndex + 1).ToString()).PadLeft(8); resStr = preStr + orientation.PadLeft(6) + lineLoad[jIndex, iIndex].ToString("0.00").PadLeft(10); //导线V串 if (pointParas.StringType != null && pointParas.StringType.Contains("V")) { //跳跃脱冰工况 if (wd.WorkConditionCode == "T" && wd.WireIndexCodes[iIndex] > 10) { if (!wireType.Contains("右")) { //左边和中间的导线,获取左侧挂点 for (int kl = 0; kl < option.LeftPoints.Count(); kl++) { int pointIndex = Convert.ToInt32(option.LeftPoints[kl].Substring(1)) - 1; GetPointProportionAndLoad(dicComposeInfo[pointIndex], lineLoad[jIndex, iIndex], out float proportion, out float laod); resStr += pointParas.Points[pointIndex].PadLeft(10) + proportion.ToString("0.00").PadLeft(10) + laod.ToString("0.00").PadLeft(10); resList.Add(new StruCalsPointLoad() { Name = Convert.ToInt32(pointParas.Points[pointIndex]), Wire = wireType, WorkConditionId = jIndex, Orientation = orientation, Proportion = proportion, Load = laod, HPSettingName = ratioParas.HangingPointSettingName, }); } } else { for (int kr = 0; kr < option.RightPoints.Count(); kr++) { int pointIndex = Convert.ToInt32(option.RightPoints[kr].Substring(1)) - 1; GetPointProportionAndLoad(dicComposeInfo[pointIndex], lineLoad[jIndex, iIndex], out float proportion, out float laod); resStr += pointParas.Points[pointIndex].PadLeft(10) + proportion.ToString("0.00").PadLeft(10) + laod.ToString("0.00").PadLeft(10); resList.Add(new StruCalsPointLoad() { Name = Convert.ToInt32(pointParas.Points[pointIndex]), Wire = wireType, WorkConditionId = jIndex, Orientation = orientation, Proportion = proportion, Load = laod, HPSettingName = ratioParas.HangingPointSettingName, }); } } } else { VStringParas vParas = ratioParas.VStrings.Where(item => item.Index == pointParas.StringType).First(); VStringCompose vStringCompose = new VStringCompose(vParas.L1, vParas.L2, vParas.H1, vParas.H2, vParas.StressLimit, xLineLoad[jIndex, iIndex], yLineLoad[jIndex, iIndex], zLineLoad[jIndex, iIndex]); for (int kl = 0; kl < option.LeftPoints.Count(); kl++) { int pointIndex = Convert.ToInt32(option.LeftPoints[kl].Substring(1)) - 1; GetPointProportionAndLoad(dicComposeInfo[pointIndex], lineLoad[jIndex, iIndex], out float proportion, out float laod); if (orientation == "X") { laod = vStringCompose.VCX1 * proportion; } else if (orientation == "Y") { laod = vStringCompose.VCY1 * proportion; } else { laod = vStringCompose.VCZ1 * proportion; } resStr += pointParas.Points[pointIndex].PadLeft(10) + proportion.ToString("0.00").PadLeft(10) + laod.ToString("0.00").PadLeft(10); resList.Add(new StruCalsPointLoad() { Name = Convert.ToInt32(pointParas.Points[pointIndex]), Wire = wireType, WorkConditionId = jIndex, Orientation = orientation, Proportion = proportion, Load = laod, HPSettingName = ratioParas.HangingPointSettingName, }); } for (int kr = 0; kr < option.RightPoints.Count(); kr++) { int pointIndex = Convert.ToInt32(option.RightPoints[kr].Substring(1)) - 1; GetPointProportionAndLoad(dicComposeInfo[pointIndex], lineLoad[jIndex, iIndex], out float proportion, out float laod); if (orientation == "X") { laod = vStringCompose.VCX2 * proportion; } else if (orientation == "Y") { laod = vStringCompose.VCY2 * proportion; } else { laod = vStringCompose.VCZ2 * proportion; } resStr += pointParas.Points[pointIndex].PadLeft(10) + proportion.ToString("0.00").PadLeft(10) + laod.ToString("0.00").PadLeft(10); resList.Add(new StruCalsPointLoad() { Name = Convert.ToInt32(pointParas.Points[pointIndex]), Wire = wireType, WorkConditionId = jIndex, Orientation = orientation, Proportion = proportion, Load = laod, HPSettingName = ratioParas.HangingPointSettingName, }); } resStr = resStr + " V串 左侧" + vStringCompose.VCX1.ToString("0.00").PadLeft(10) + vStringCompose.VCY1.ToString("0.00").PadLeft(10) + vStringCompose.VCZ1.ToString("0.00").PadLeft(10); resStr = resStr + " 右侧" + vStringCompose.VCX2.ToString("0.00").PadLeft(10) + vStringCompose.VCY2.ToString("0.00").PadLeft(10) + vStringCompose.VCZ2.ToString("0.00").PadLeft(10); } } else // 针对地线(常规、悬臂); 导线-I串: 吊装 { for (int k = 0; k < pointParas.PointNum; k++) { GetPointProportionAndLoad(dicComposeInfo[k], lineLoad[jIndex, iIndex], out float proportion, out float laod); resStr += pointParas.Points[k].PadLeft(10) + proportion.ToString("0.00").PadLeft(10) + laod.ToString("0.00").PadLeft(10); resList.Add(new StruCalsPointLoad() { Name = Convert.ToInt32(pointParas.Points[k]), Wire = wireType, WorkConditionId = jIndex, Orientation = orientation, Proportion = proportion, Load = laod, HPSettingName = ratioParas.HangingPointSettingName, }); } } }
public void ComposeHangingPointsLoad(float load, string orientation, out string resStr, out List <StruCalsPointLoad> resList, bool isTurningPoint = false) { resList = new List <StruCalsPointLoad>(); resStr = " " + wireType; if (orientation == "X" || orientation == "Y") { if (xyLink.Contains("跳线")) { resStr += "跳线"; } } else { if (zLink.Contains("跳线")) { resStr += "跳线"; } } if (position != null) { resStr += position; } if (isTurningPoint) { resStr += "转向荷载"; } resStr += ("工况" + (jIndex + 1).ToString()).PadLeft(8); resStr = resStr + orientation.PadLeft(6) + load.ToString("0.00").PadLeft(10); //导线V串 if (pointParas.StringType != null && pointParas.StringType.Contains("V")) { //V串的跳跃冰工况,并且工况代号大于10000),不按照常规的V串规则分配荷载; //分配的规则是: //左边和中间的导线,荷载按照I串规则全部分配在V串左侧挂点; //右边的导线,荷载按照I串规则全部分配在V串右侧挂点; if (wd.WorkConditionCode == "T" && wd.WireIndexCodes[iIndex] > 1000) { //悬垂塔根据导线的方向遍历这个线左边或者右边的所有点 if (!isTensionTower) { //左边和中间的导线,获取左侧挂点 if (!wireType.Contains("右")) { for (int kl = 0; kl < option.LeftPoints.Count(); kl++) { int pointIndex = Convert.ToInt32(option.LeftPoints[kl].Substring(1)) - 1; GeneratePointsLoadNormal(pointIndex, load, orientation, out string loadStr, out StruCalsPointLoad pLoad); resStr += loadStr; resList.Add(pLoad); } } //右边的导线,获取右侧挂点; else { for (int kr = 0; kr < option.RightPoints.Count(); kr++) { int pointIndex = Convert.ToInt32(option.RightPoints[kr].Substring(1)) - 1; GeneratePointsLoadNormal(pointIndex, load, orientation, out string loadStr, out StruCalsPointLoad pLoad); resStr += loadStr; resList.Add(pLoad); } } } //悬垂塔根据导线的方向遍历指定位置上左边或者右边的所有点 else { string[] points = GetPositionPointsInTensionTower(); //左边和中间的导线,获取左侧挂点 if (!wireType.Contains("右")) { for (int kl = 0; kl < points.Count(); kl++) { //不在指定位置上的点不用分配荷载 if (option.LeftPoints.Where(p => p == points[kl]).Count() == 0) { continue; } int pointIndex = Convert.ToInt32(option.LeftPoints[kl].Substring(1)) - 1; GeneratePointsLoadNormal(pointIndex, load, orientation, out string loadStr, out StruCalsPointLoad pLoad); resStr += loadStr; resList.Add(pLoad); } } else { for (int kr = 0; kr < points.Count(); kr++) { //不在指定位置上的点不用分配荷载 if (option.RightPoints.Where(p => p == points[kr]).Count() == 0) { continue; } int pointIndex = Convert.ToInt32(option.RightPoints[kr].Substring(1)) - 1; GeneratePointsLoadNormal(pointIndex, load, orientation, out string loadStr, out StruCalsPointLoad pLoad); resStr += loadStr; resList.Add(pLoad); } } } } else { VStringParas vParas = hpPointsParas.VStrings.Where(item => item.Index == pointParas.StringType).First(); VStringCompose vStringCompose = new VStringCompose(vParas.L1, vParas.L2, vParas.H1, vParas.H2, vParas.StressLimit, xLineLoad[jIndex, iIndex], yLineLoad[jIndex, iIndex], zLineLoad[jIndex, iIndex]); //悬垂塔先后遍历这个线左边和右边的所有点 if (!isTensionTower) { //左侧挂点 for (int kl = 0; kl < option.LeftPoints.Count(); kl++) { int pointIndex = Convert.ToInt32(option.LeftPoints[kl].Substring(1)) - 1; //非跳跃冰工况的V串需要按照V串的的规则计算比例 GeneratePointsLoadVString(pointIndex, orientation, true, vStringCompose, out string loadStr, out StruCalsPointLoad pLoad); resStr += loadStr; resList.Add(pLoad); } //右侧挂点 for (int kr = 0; kr < option.RightPoints.Count(); kr++) { int pointIndex = Convert.ToInt32(option.RightPoints[kr].Substring(1)) - 1; //非跳跃冰工况的V串需要按照V串的的规则计算比例 GeneratePointsLoadVString(pointIndex, orientation, false, vStringCompose, out string loadStr, out StruCalsPointLoad pLoad); resStr += loadStr; resList.Add(pLoad); } } //耐张塔先后遍历这个线左边和右边的指定方向上的点 else { string[] points = GetPositionPointsInTensionTower(); //左侧挂点 for (int kl = 0; kl < points.Count(); kl++) { //不在指定位置上的点不用分配荷载 if (option.LeftPoints.Where(p => p == points[kl]).Count() == 0) { continue; } int pointIndex = Convert.ToInt32(points[kl].Substring(1)) - 1; //非跳跃冰工况的V串需要按照V串的的规则计算比例 GeneratePointsLoadVString(pointIndex, orientation, false, vStringCompose, out string loadStr, out StruCalsPointLoad pLoad); resStr += loadStr; resList.Add(pLoad); } //右侧挂点 for (int kr = 0; kr < points.Count(); kr++) { //不在指定位置上的点不用分配荷载 if (option.RightPoints.Where(p => p == points[kr]).Count() == 0) { continue; } int pointIndex = Convert.ToInt32(points[kr].Substring(1)) - 1; //非跳跃冰工况的V串需要按照V串的的规则计算比例 GeneratePointsLoadVString(pointIndex, orientation, false, vStringCompose, out string loadStr, out StruCalsPointLoad pLoad); resStr += loadStr; resList.Add(pLoad); } } resStr = resStr + " V串 左侧" + vStringCompose.VCX1.ToString("0.00").PadLeft(10) + vStringCompose.VCY1.ToString("0.00").PadLeft(10) + vStringCompose.VCZ1.ToString("0.00").PadLeft(10); resStr = resStr + " 右侧" + vStringCompose.VCX2.ToString("0.00").PadLeft(10) + vStringCompose.VCY2.ToString("0.00").PadLeft(10) + vStringCompose.VCZ2.ToString("0.00").PadLeft(10); } } else // 针对地线(常规、悬臂); 导线-I串: 吊装 { //悬垂塔遍历这个线条上面的所有点 if (!isTensionTower) { for (int k = 0; k < pointParas.PointNum; k++) { GeneratePointsLoadNormal(k, load, orientation, out string loadStr, out StruCalsPointLoad pLoad); resStr += loadStr; resList.Add(pLoad); } } //耐张塔遍历指定位置上的所有点 else { string[] points = GetPositionPointsInTensionTower(); for (int k = 0; k < points.Count(); k++) { int pointIndex = Convert.ToInt32(points[k].Substring(1)) - 1; GeneratePointsLoadNormal(pointIndex, load, orientation, out string loadStr, out StruCalsPointLoad pLoad); resStr += loadStr; resList.Add(pLoad); } } } }