public StruCalsLibBaseDataViewModel() { var libParas = GlobalInfo.GetInstance().GetStruCalsLibParas(); if (libParas == null) { return; } OverhangingTowerParas = libParas.OverhangingTowerBaseParas; TensionTowerParas = libParas.TensionTowerBaseParas; }
/// <summary> /// 从配置文件中获取默认参数 /// </summary> protected void SetDefaultValue(TowerTypeEnum towerType) { var libParas = GlobalInfo.GetInstance().GetStruCalsLibParas(); //有配置文件就从配置文件中读出 if (libParas != null) { var config = new MapperConfiguration(x => x.CreateMap <StruCalsLibBaseParas, StruCalseBaseParas>().ForMember(des => des.Type, item => item.Ignore())); IMapper mapper = new Mapper(config); StruCalsLibBaseParas libBaseParas = (towerType == TowerTypeEnum.LineTower || towerType == TowerTypeEnum.LineCornerTower) ? libParas.OverhangingTowerBaseParas : libParas.TensionTowerBaseParas; BaseParas = mapper.Map <StruCalseBaseParas>(libBaseParas); //这种初始化有点问题,当两种标准的共同参数的值取不一样时会有错误 //正确的做法是应该是在加入库时,就选择标准。 //但这种做法两种标准切换时,两种标准共同参数取值不一样时,仍然无法切换到正确的值, //故维持现在的做法。 BaseParas.RGBad = libBaseParas.BaseParasGB50545.RGBad; BaseParas.RGGood = libBaseParas.BaseParasGB50545.RGGood; BaseParas.RQ = libBaseParas.BaseParasGB50545.RQ; BaseParas.VcFInstall = libBaseParas.BaseParasGB50545.VcFInstall; BaseParas.VcFBroken = libBaseParas.BaseParasGB50545.VcFBroken; BaseParas.VcFUnevenIce = libBaseParas.BaseParasGB50545.VcFUnevenIce; BaseParas.VcFNormal = libBaseParas.BaseParasGB50545.VcFNormal; BaseParas.VcFCheck = libBaseParas.BaseParasGB50545.VcFCheck; BaseParas.RGOverturn = libBaseParas.BaseParasDLT5551.RGOverturn; BaseParas.VcFIce = libBaseParas.BaseParasDLT5551.VcFIce; BaseParas.VcFCold = libBaseParas.BaseParasDLT5551.VcFCold; BaseParas.LoadRatio = 1; BaseParas.R1Install = 1; BaseParas.R0Normal = 1; List <StruLineParas> lineParas = new List <StruLineParas>(); for (int i = 0; i < Template.Wires.Count; i++) { lineParas.Add(new StruLineParas() { Index = i + 1, WireType = Template.Wires[i], DrawingCoef = ((towerType == TowerTypeEnum.LineTower || towerType == TowerTypeEnum.LineCornerTower) ? libParas.OverhangingTowerBaseParas.DrawingCoef : libParas.TensionTowerBaseParas.DrawingCoef) }); } LineParas = lineParas; } //没有默认文件就默认为0 else { List <StruLineParas> lineParas = new List <StruLineParas>(); for (int i = 0; i < Template.Wires.Count; i++) { lineParas.Add(new StruLineParas() { Index = i + 1, WireType = Template.Wires[i], }); } LineParas = lineParas; } //BaseParas下列参数中在映射后赋值的原因在于: //如果先复制,在前面的映射过程中,会导致某些值会改变 BaseParas.SelectedStandard = "GB50545-2010"; BaseParas.Type = towerType; BaseParas.IsMethod1Selected = true; }
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); }