public StruCalsLib GetStruCalsLibParas() { if (_struCalsLibParas == null) { _struCalsLibParas = ProjectUtils.GetInstance().ReadStruCalsLibParas(); } return(_struCalsLibParas); }
public void TestMethod02_StruCalsLibParasSerializer() { var saveFileDialog = new Microsoft.Win32.SaveFileDialog() { Filter = "XML Files (*.xml)|*.xml", }; if (saveFileDialog.ShowDialog() != true) { return; } StruCalsLibBaseParas baseParasOverhanging = new StruCalsLibBaseParas { WindAdjustFactor = 1.2f, OtherWindAdjustFactor = 1, DynamicCoef = 1.1f, DrawingCoef = 1.2f, AnchorWindCoef = 0.8f, AnchorGravityCoef = 0.8f, AnchorAngle = 20, BaseParasGB50545 = new StruCalsLibGB50545BaseParas { RGBad = 1.2f, RGGood = 1, RQ = 1.4f, VcFNormal = 1, VcFInstall = 0.9f, VcFBroken = 0.9f, VcFUnevenIce = 0.9f, VcFCheck = 0.75f, }, BaseParasDLT5551 = new StruCalsLibDLT5551BaseParas { RGBad = 1.2f, RGGood = 1, RQ = 1.4f, RGOverturn = 0.9f, VcFNormal = 1, VcFIce = 1, VcFCold = 1, VcFBroken = 0.9f, VcFInstall = 0.9f, VcFUnevenIce = 0.9f, } }; StruCalsLibBaseParas baseParasTension = new StruCalsLibBaseParas { WindAdjustFactor = 1.2f, OtherWindAdjustFactor = 1, DynamicCoef = 1.1f, DrawingCoef = 1.2f, LiftCoefJumper = 2, TempStayWireAngle = 45, TractionAgnle = 20, BaseParasGB50545 = new StruCalsLibGB50545BaseParas { RGBad = 1.2f, RGGood = 1, RQ = 1.4f, VcFNormal = 1, VcFInstall = 0.9f, VcFBroken = 0.9f, VcFUnevenIce = 0.9f, VcFCheck = 0.75f, }, BaseParasDLT5551 = new StruCalsLibDLT5551BaseParas { RGBad = 1.2f, RGGood = 1, RQ = 1.4f, RGOverturn = 0.9f, VcFNormal = 1, VcFIce = 1, VcFCold = 1, VcFBroken = 0.9f, VcFInstall = 0.9f, VcFUnevenIce = 0.9f, } }; List <StruCalsLibWireExtraLoadParas> wireExtraLoadParas = new List <StruCalsLibWireExtraLoadParas> { new StruCalsLibWireExtraLoadParas { Index = 1, Voltage = 110, InstallImportanceCoef = 1, OtherImportanceCoef = 1, OverhangingTowerEarthWireExtraLoad = 1, OverhangingTowerWireExtraLoad = 1.5f, TensionTowerEarthWireExtraLoad = 1.5f, TensionTowerWireExtraLoad = 2, TensionTowerJumperWireExtraLoad = 1 }, new StruCalsLibWireExtraLoadParas { Index = 2, Voltage = 220, InstallImportanceCoef = 1, OtherImportanceCoef = 1, OverhangingTowerEarthWireExtraLoad = 2, OverhangingTowerWireExtraLoad = 3.5f, TensionTowerEarthWireExtraLoad = 2, TensionTowerWireExtraLoad = 4.5f, TensionTowerJumperWireExtraLoad = 2 }, new StruCalsLibWireExtraLoadParas { Index = 3, Voltage = 330, InstallImportanceCoef = 1, OtherImportanceCoef = 1, OverhangingTowerEarthWireExtraLoad = 2, OverhangingTowerWireExtraLoad = 3.5f, TensionTowerEarthWireExtraLoad = 2, TensionTowerWireExtraLoad = 4.5f, TensionTowerJumperWireExtraLoad = 2 }, new StruCalsLibWireExtraLoadParas { Index = 4, Voltage = 500, InstallImportanceCoef = 1, OtherImportanceCoef = 1, OverhangingTowerEarthWireExtraLoad = 2, OverhangingTowerWireExtraLoad = 4, TensionTowerEarthWireExtraLoad = 2, TensionTowerWireExtraLoad = 6, TensionTowerJumperWireExtraLoad = 3 }, new StruCalsLibWireExtraLoadParas { Index = 5, Voltage = 750, InstallImportanceCoef = 1, OtherImportanceCoef = 1, OverhangingTowerEarthWireExtraLoad = 2, OverhangingTowerWireExtraLoad = 4, TensionTowerEarthWireExtraLoad = 2, TensionTowerWireExtraLoad = 6, TensionTowerJumperWireExtraLoad = 3 }, new StruCalsLibWireExtraLoadParas { Index = 6, Voltage = 800, InstallImportanceCoef = 1, OtherImportanceCoef = 1.1f, OverhangingTowerEarthWireExtraLoad = 4, OverhangingTowerWireExtraLoad = 8, TensionTowerEarthWireExtraLoad = 4, TensionTowerWireExtraLoad = 12, TensionTowerJumperWireExtraLoad = 6 }, new StruCalsLibWireExtraLoadParas { Index = 7, Voltage = 1000, InstallImportanceCoef = 1, OtherImportanceCoef = 1.1f, OverhangingTowerEarthWireExtraLoad = 4, OverhangingTowerWireExtraLoad = 8, TensionTowerEarthWireExtraLoad = 4, TensionTowerWireExtraLoad = 12, TensionTowerJumperWireExtraLoad = 6 }, new StruCalsLibWireExtraLoadParas { Index = 8, Voltage = 1100, InstallImportanceCoef = 1, OtherImportanceCoef = 1.1f, OverhangingTowerEarthWireExtraLoad = 4, OverhangingTowerWireExtraLoad = 8, TensionTowerEarthWireExtraLoad = 4, TensionTowerWireExtraLoad = 12, TensionTowerJumperWireExtraLoad = 6 }, }; List <StruCalsLibIceCoverParas> iceCoverParas = new List <StruCalsLibIceCoverParas> { new StruCalsLibIceCoverParas { Index = 1, IceThickness = 5, TowerWindLoadAmplifyCoef = 1.1f, TowerGravityLoadAmplifyCoef = 1, }, new StruCalsLibIceCoverParas { Index = 2, IceThickness = 10, TowerWindLoadAmplifyCoef = 1.2f, TowerGravityLoadAmplifyCoef = 1, }, new StruCalsLibIceCoverParas { Index = 3, IceThickness = 15, TowerWindLoadAmplifyCoef = 1.6f, TowerGravityLoadAmplifyCoef = 1.2f, }, new StruCalsLibIceCoverParas { Index = 4, IceThickness = 20, TowerWindLoadAmplifyCoef = 1.8f, TowerGravityLoadAmplifyCoef = 1.5f, }, new StruCalsLibIceCoverParas { Index = 5, IceThickness = 25, TowerWindLoadAmplifyCoef = 2f, TowerGravityLoadAmplifyCoef = 1.8f, }, new StruCalsLibIceCoverParas { Index = 6, IceThickness = 30, TowerWindLoadAmplifyCoef = 2.2f, TowerGravityLoadAmplifyCoef = 2f, }, new StruCalsLibIceCoverParas { Index = 7, IceThickness = 40, TowerWindLoadAmplifyCoef = 2.3f, TowerGravityLoadAmplifyCoef = 2.2f, }, new StruCalsLibIceCoverParas { Index = 8, IceThickness = 45, TowerWindLoadAmplifyCoef = 2.3f, TowerGravityLoadAmplifyCoef = 2.2f, }, }; var paras = new StruCalsLib { OverhangingTowerBaseParas = baseParasOverhanging, TensionTowerBaseParas = baseParasTension, WireExtraLoadParas = wireExtraLoadParas, IceCoverParas = iceCoverParas, }; XmlUtils.Serializer(saveFileDialog.FileName, paras); var paras2 = XmlUtils.Deserializer <StruCalsLib>(saveFileDialog.FileName); }
public void GenerateLoadFile(string path, List <StruCalsPointLoad> pointLoads) { List <string> processString = new List <string>(); StruCalsLib libParas = GlobalInfo.GetInstance().GetStruCalsLibParas(); if (libParas == null) { return; } if (libParas.IceCoverParas == null || libParas.IceCoverParas.Count == 0) { return; } #region 保存工况 int wccNumTemp = 0; for (int i = 0; i < Template.WorkConditionCombos.Count; i++) { //gongjian 200728 没有选择的工况在load文件也不用计算 if (!Template.WorkConditionCombos[i].IsCalculate) { continue; } wccNumTemp++; WorkConditionCombo wcCombo = Template.WorkConditionCombos[i]; float wcWind = WorkConditionWind[wcCombo.WorkCode - 1]; float wdIceThickness = WorkConditionIceThickness[wcCombo.WorkCode - 1]; float windLoad = 1, gravityLoad = 1; //对于冰厚,首先寻找和工况中指定冰厚一样,没有的情况下向下取最大的值 if (libParas.IceCoverParas.Where(item => item.IceThickness == wdIceThickness).Count() > 0) { windLoad = libParas.IceCoverParas.Where(item => item.IceThickness == wdIceThickness).First().TowerWindLoadAmplifyCoef; gravityLoad = libParas.IceCoverParas.Where(item => item.IceThickness == wdIceThickness).First().TowerGravityLoadAmplifyCoef; } else { for (int j = libParas.IceCoverParas.Count - 1; j >= 0; j--) { if (wdIceThickness - libParas.IceCoverParas[j].IceThickness > 0) { windLoad = libParas.IceCoverParas[j].TowerWindLoadAmplifyCoef; gravityLoad = libParas.IceCoverParas[j].TowerGravityLoadAmplifyCoef; break; } } } float installCoef = 1, otherCoef = 1.1f; if (libParas.WireExtraLoadParas.Where(item => item.Voltage == Paras.Voltage).Count() > 0) { installCoef = libParas.WireExtraLoadParas.Where(item => item.Voltage == Paras.Voltage).First().InstallImportanceCoef; otherCoef = libParas.WireExtraLoadParas.Where(item => item.Voltage == Paras.Voltage).First().OtherImportanceCoef; } float comboCoef, importanceCoef; if (wcCombo.WorkConditionCode.StartsWith("N")) { comboCoef = Paras.VcFNormal * windLoad; importanceCoef = otherCoef; } else if (wcCombo.WorkConditionCode.StartsWith("D")) { comboCoef = Paras.VcFCold * windLoad; importanceCoef = otherCoef; } else if (wcCombo.WorkConditionCode.StartsWith("I")) { comboCoef = (Paras.SelectedStandard == "GB50545-2010" ? Paras.VcFNormal : Paras.VcFIce) * windLoad; importanceCoef = otherCoef; } else if (wcCombo.WorkConditionCode.StartsWith("L") || wcCombo.WorkConditionCode.StartsWith("G") || wcCombo.WorkConditionCode.StartsWith("M") || wcCombo.WorkConditionCode.StartsWith("C") || wcCombo.WorkConditionCode.StartsWith("J")) { comboCoef = Paras.VcFInstall * windLoad; importanceCoef = installCoef; } else if (wcCombo.WorkConditionCode.StartsWith("B")) { comboCoef = Paras.VcFBroken * windLoad; importanceCoef = otherCoef; } else if (wcCombo.WorkConditionCode.StartsWith("U")) { comboCoef = Paras.VcFUnevenIce * windLoad; importanceCoef = otherCoef; } else if (wcCombo.WorkConditionCode.StartsWith("T") || wcCombo.WorkConditionCode.StartsWith("Y")) { comboCoef = Paras.VcFCheck * windLoad; importanceCoef = installCoef; } else { //不应该走到此分支 comboCoef = 1 * windLoad; importanceCoef = 1; throw new Exception("生成Load文件出错:1;工况代号" + wcCombo.WorkConditionCode); } float windAngle = wcCombo.WindDirectionCode; //gongjian 200728 修改风向角小于0,将负号挪到组合系统 if (windAngle < 0) { windAngle = Math.Abs(windAngle); comboCoef = -1 * comboCoef; } float temperature = WorkConditionTemperate[wcCombo.WorkCode - 1]; string str = wcWind.ToString("0.000").PadLeft(8) + comboCoef.ToString("0.000").PadLeft(8) + windAngle.ToString("0.000").PadLeft(8) + importanceCoef.ToString("0.000").PadLeft(8) + gravityLoad.ToString("0.000").PadLeft(8) + temperature.ToString("0.00").PadLeft(8) + " " + wccNumTemp.ToString() + "-" + wcCombo.WorkComment; processString.Add(str); } #endregion #region 保存挂点荷载 List <int> points = pointLoads.Select(p => p.Name).Distinct().ToList(); points.Sort(); foreach (var point in points) { int wdNumTmep = 0; for (int j = 0; j < Template.WorkConditionCombos.Count; j++) { //gongjian 200728 没有选择的工况在load文件也不用计算 if (!Template.WorkConditionCombos[j].IsCalculate) { continue; } wdNumTmep++; string str = (wdNumTmep == 1) ? point.ToString().PadLeft(9) : (" ").PadLeft(9); float xLoad = pointLoads.Where(p => p.Name == point && p.WorkConditionId == j && p.Orientation == "X").Sum(p => p.Load); float yLoad = pointLoads.Where(p => p.Name == point && p.WorkConditionId == j && p.Orientation == "Y").Sum(p => p.Load); float zLoad = pointLoads.Where(p => p.Name == point && p.WorkConditionId == j && p.Orientation == "Z").Sum(p => p.Load); str += xLoad.ToString("0.00").PadLeft(14) + yLoad.ToString("0.00").PadLeft(9) + zLoad.ToString("0.00").PadLeft(9); processString.Add(str); } } #endregion FileUtils.TextSaveByLine(path, processString); }