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);
        }
Beispiel #3
0
        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);
        }