Esempio n. 1
0
 public List <TowerStrData> GetLocalTowerStrs()
 {
     if (_localTowerStrs == null || _localTowerStrs.Count == 0)
     {
         string filePath = ProjectPath + "\\BaseData\\TowerStr.xml";
         _localTowerStrs = TowerStrDataReader.ReadLoadFile(filePath);
     }
     return(_localTowerStrs);
 }
Esempio n. 2
0
        /// <summary>
        /// 验算计算 根据所选杆塔序列读取不同模式下的相关信息
        /// </summary>
        /// <param name="projectDir">路径</param>
        /// <param name="navg">杆塔序列名称</param>
        /// <param name="Type">悬垂塔  耐张塔</param>
        /// <returns></returns>
        public static List <TowerSerial> ReadXmlBySequenceNameAndTowerType(string projectDir, string sequenceName, string Type)
        {
            //判断塔型
            string basePath = projectDir + "\\" + ConstVar.DataBaseStr + "\\TowerStr.xml";
            List <TowerStrData> towerList = TowerStrDataReader.ReadLoadFile(basePath).ToList();

            string towerTypeStr = Type == "悬垂塔" ? "悬垂塔,直线塔,直线转角塔" : "耐张塔,转角塔,终端塔";

            //读取序列信息,并进行逻辑判断
            string loadPath = projectDir + "\\" + ConstVar.TowerSequenceStr + "\\" + sequenceName + "\\TowerSequenceStr.xml";

            List <TowerSerial> towerSeriList = new List <TowerSerial>();

            XmlDocument doc = new XmlDocument();

            doc.Load(loadPath);

            XmlNode rootNode  = doc.GetElementsByTagName("Root")[0];
            int     index     = 1;
            string  towerType = "";

            foreach (XmlNode xmlNode in rootNode.ChildNodes)
            {
                try
                {
                    towerType = towerList.Where(item => item.Name == xmlNode.Attributes.GetNamedItem("TowerPattern").InnerText).First().TypeName;//塔型类型
                }
                catch (Exception)
                {
                    towerType = "";
                }
                if (towerType != "" && towerTypeStr.Contains(towerType) && bool.Parse(xmlNode.Attributes.GetNamedItem("IsChecking").InnerText))//判断塔型及是否勾选验算
                {
                    TowerSerial item = new TowerSerial();
                    item.ID                     = index;                                                                          //序号
                    item.TowerName              = xmlNode.Attributes.GetNamedItem("TowerName").InnerText;                         //塔位号
                    item.NameOfPositioningPile  = xmlNode.Attributes.GetNamedItem("NameOfPositioningPile").InnerText;             //塔位点
                    item.TowerPattern           = xmlNode.Attributes.GetNamedItem("TowerPattern").InnerText;                      //塔型
                    item.WireCounterWeightNum   = int.Parse(xmlNode.Attributes.GetNamedItem("WireCounterWeightNum").InnerText);   //导线防震锤数量
                    item.GroundCounterWeightNum = int.Parse(xmlNode.Attributes.GetNamedItem("GroundCounterWeightNum").InnerText); //地线防震锤数量
                    item.WireSpacerNum          = int.Parse(xmlNode.Attributes.GetNamedItem("WireSpacerNum").InnerText);          //导线间隔棒数量
                    item.EngineerPar            = int.Parse(xmlNode.Attributes.GetNamedItem("EngineerPar").InnerText);            //工程参数
                    item.FrontSidePar           = xmlNode.Attributes.GetNamedItem("FrontSidePar").InnerText;                      //前侧参数
                    item.BackSidePar            = xmlNode.Attributes.GetNamedItem("BackPar").InnerText;                           //后侧参数
                    item.CommPar                = xmlNode.Attributes.GetNamedItem("CommPar").InnerText;                           //公共参数
                    item.TowerPar               = xmlNode.Attributes.GetNamedItem("TowerPar").InnerText;                          //后侧相参数

                    towerSeriList.Add(item);

                    index++;
                }
            }
            return(towerSeriList);
        }
Esempio n. 3
0
        /// <summary>
        /// 直接读取本地文件xml信息 同时需要判断  塔型、导线型号、导线串型、地线型号 是否满足在本项目中存在
        /// </summary>
        /// <param name="path">文件路径</param>
        /// <returns></returns>
        public static List <TowerSerial> ReadXml(string projectDir, string navg)
        {
            #region 获取本项目 塔型、导线型号、导线串型、地线型号 信息

            string filePath = "";
            string basePath = projectDir + "\\" + ConstVar.DataBaseStr + "\\";
            //判断塔型
            filePath = basePath + "TowerStr.xml";
            List <TowerStrData> towerList = TowerStrDataReader.ReadLoadFile(filePath).ToList();

            List <String> towerNameList = towerList.Select(t => t.Name).ToList();

            //导地线
            filePath = basePath + "Wire.xml";
            List <WireType> allList = WireReader.Read(filePath);
            //判断导线
            List <string> wireList = allList.Where(w => w.Type == "导线").First().Wires.Select(w => w.ModelSpecification).ToList();
            //判断地线
            List <string> groundList = allList.Where(g => g.Type == "地线").First().Wires.Select(g => g.ModelSpecification).ToList();
            //判断绝缘串
            filePath = basePath + @"\StrData.xml";
            List <string> strList = StrDataReader.Read(filePath).Where(s => s.Type == "一般子串").First().StrDatas.Select(s => s.Name).ToList();
            #endregion


            //读取序列信息,并进行逻辑判断
            string loadPath = projectDir + "\\" + ConstVar.TowerSequenceStr + "\\" + navg + "\\TowerSequenceStr.xml";

            List <TowerSerial> towerSeriList = new List <TowerSerial>();

            XmlDocument doc = new XmlDocument();
            doc.Load(loadPath);

            XmlNode rootNode = doc.GetElementsByTagName("Root")[0];

            foreach (XmlNode xmlNode in rootNode.ChildNodes)
            {
                TowerSerial item = new TowerSerial();
                item.ID                               = int.Parse(xmlNode.Attributes.GetNamedItem("ID").InnerText);                        //序号
                item.IsChecking                       = bool.Parse(xmlNode.Attributes.GetNamedItem("IsChecking").InnerText);               //气象条件
                item.WeatherCondition                 = xmlNode.Attributes.GetNamedItem("WeatherCondition").InnerText;                     //气象条件
                item.TowerName                        = xmlNode.Attributes.GetNamedItem("TowerName").InnerText;                            //塔位号
                item.TowerType                        = int.Parse(xmlNode.Attributes.GetNamedItem("TowerType").InnerText);                 //塔型
                item.NameOfPositioningPile            = xmlNode.Attributes.GetNamedItem("NameOfPositioningPile").InnerText;                //塔位点
                item.TowerPattern                     = xmlNode.Attributes.GetNamedItem("TowerPattern").InnerText;                         //塔型
                item.CallItHigh                       = double.Parse(xmlNode.Attributes.GetNamedItem("CallItHigh").InnerText);             //呼高
                item.TowerFootElevation               = double.Parse(xmlNode.Attributes.GetNamedItem("TowerFootElevation").InnerText);     //塔位桩高程
                item.BaseLevelDescent                 = double.Parse(xmlNode.Attributes.GetNamedItem("BaseLevelDescent").InnerText);       //定位高差
                item.Span                             = double.Parse(xmlNode.Attributes.GetNamedItem("Span").InnerText);                   //档距
                item.HorizontalSpan                   = double.Parse(xmlNode.Attributes.GetNamedItem("HorizontalSpan").InnerText);         //水平档距
                item.VerticalSpan                     = double.Parse(xmlNode.Attributes.GetNamedItem("VerticalSpan").InnerText);           //垂直档距
                item.FrontVerticalSpan                = double.Parse(xmlNode.Attributes.GetNamedItem("FrontVerticalSpan").InnerText);      //前侧垂直档距
                item.BackVerticalSpan                 = double.Parse(xmlNode.Attributes.GetNamedItem("BackVerticalSpan").InnerText);       //后侧垂直档距
                item.FrontPreSpan                     = double.Parse(xmlNode.Attributes.GetNamedItem("FrontPreSpan").InnerText);           //前侧代表档距
                item.FrontAccPreSpan                  = double.Parse(xmlNode.Attributes.GetNamedItem("FrontAccPreSpan").InnerText);        //前侧耐张段长度
                item.BackPreSpan                      = double.Parse(xmlNode.Attributes.GetNamedItem("BackPreSpan").InnerText);            //后侧代表档距
                item.BackAccPreSpan                   = double.Parse(xmlNode.Attributes.GetNamedItem("BackAccPreSpan").InnerText);         //后侧耐张段长度
                item.TurningAngle                     = double.Parse(xmlNode.Attributes.GetNamedItem("TurningAngle").InnerText);           //转角中心桩位移(m)
                item.TurningAngleStr                  = xmlNode.Attributes.GetNamedItem("TurningAngleStr").InnerText;                      //转角中心桩位移(m)
                item.ConductorModel                   = xmlNode.Attributes.GetNamedItem("ConductorModel").InnerText;                       //导线型号
                item.InsulationStringModel            = xmlNode.Attributes.GetNamedItem("InsulationStringModel").InnerText;                //导线串型号
                item.InsulationStringSlices           = xmlNode.Attributes.GetNamedItem("InsulationStringSlices").InnerText;               //导线串片数
                item.InsulationStringNumber           = double.Parse(xmlNode.Attributes.GetNamedItem("InsulationStringNumber").InnerText); //导线串数量
                item.InsulationStringLength           = double.Parse(xmlNode.Attributes.GetNamedItem("InsulationStringLength").InnerText); //导线串长度
                item.GroundWireModel                  = xmlNode.Attributes.GetNamedItem("GroundWireModel").InnerText;                      //地线型号
                item.GroundWireInsulationStringModel  = xmlNode.Attributes.GetNamedItem("GroundWireInsulationStringModel").InnerText;      //地线串型号
                item.GroundWireInsulationStringNumber = xmlNode.Attributes.GetNamedItem("GroundWireInsulationStringNumber").InnerText;     //地线串数量

                if (towerNameList.Contains(item.TowerPattern))                                                                             //塔型判断
                {
                    item.ExistsTowerPattern = true;
                }
                if (wireList.Contains(item.ConductorModel))//导线型号判断
                {
                    item.ExistsConductorModel = true;
                }
                if (groundList.Contains(item.GroundWireModel))//地线型号判断
                {
                    item.ExistsGroundWireModel = true;
                }
                if (strList.Contains(item.InsulationStringModel))//导线串型号判断
                {
                    item.ExistsWireInsulationString = true;
                }

                item.CommPar      = xmlNode.Attributes.GetNamedItem("CommPar").InnerText;
                item.FrontSidePar = xmlNode.Attributes.GetNamedItem("FrontSidePar").InnerText;
                item.BackSidePar  = xmlNode.Attributes.GetNamedItem("BackSidePar").InnerText;
                item.TowerPar     = xmlNode.Attributes.GetNamedItem("TowerPar").InnerText;

                towerSeriList.Add(item);
            }
            return(towerSeriList);
        }
Esempio n. 4
0
        /// <summary>
        /// 保存xml文件信息
        /// </summary>
        public void SaveXml()
        {
            var editData = SelectedItems.ToList();

            if (TowerStrDataReader.SaveLocalFile(filePath, editData, out string warning))
            {
                MessageBox.Show("保存信息成功");
            }
            else
            {
                MessageBox.Show("保存信息失败,请确认后重试!错误信息为:" + warning);
            }

            //try
            //{


            //    XmlDocument doc = new XmlDocument();
            //    doc.Load(filePath);

            //    XmlNode rootNode = doc.GetElementsByTagName("Root")[0];
            //    rootNode.RemoveAll();//移除所有节点,全部新增

            //    foreach (TowerStrData item in editData)
            //    {
            //        XmlElement row = doc.CreateElement("Tower");
            //        row.SetAttribute("ID", item.ID.ToString());
            //        row.SetAttribute("Name", item.Name == null ? "" : item.Name);
            //        row.SetAttribute("Type", item.Type.ToString());
            //        row.SetAttribute("TypeName", item.TypeName.ToString());
            //        row.SetAttribute("VoltageLevel", item.VoltageLevel.ToString());
            //        row.SetAttribute("CirNum", item.CirNum.ToString());
            //        row.SetAttribute("CurType", item.CurType.ToString());
            //        row.SetAttribute("MinAngel", item.MinAngel.ToString());
            //        row.SetAttribute("MaxAngel", item.MaxAngel.ToString());
            //        row.SetAttribute("CalHeight", item.CalHeight.ToString());
            //        row.SetAttribute("MinHeight", item.MinHeight.ToString());
            //        row.SetAttribute("MaxHeight", item.MaxHeight.ToString());
            //        row.SetAttribute("AllowedHorSpan", item.AllowedHorSpan.ToString());
            //        row.SetAttribute("OneSideMinHorSpan", item.OneSideMinHorSpan.ToString());
            //        row.SetAttribute("OneSideMaxHorSpan", item.OneSideMaxHorSpan.ToString());
            //        row.SetAttribute("AllowedVerSpan", item.AllowedVerSpan.ToString());
            //        row.SetAttribute("OneSideMinVerSpan", item.OneSideMinVerSpan.ToString());
            //        row.SetAttribute("OneSideMaxVerSpan", item.OneSideMaxVerSpan.ToString());
            //        row.SetAttribute("OneSideUpVerSpanMin", item.OneSideUpVerSpanMin.ToString());
            //        row.SetAttribute("OneSideUpVerSpanMax", item.OneSideUpVerSpanMax.ToString());
            //        row.SetAttribute("DRepresentSpanMin", item.DRepresentSpanMin.ToString());
            //        row.SetAttribute("DRepresentSpanMax", item.DRepresentSpanMax.ToString());
            //        row.SetAttribute("StrHeightSer", item.StrHeightSer == null ? "" : item.StrHeightSer.ToString());
            //        row.SetAttribute("StrAllowHorSpan", item.StrAllowHorSpan == null ? "" : item.StrAllowHorSpan.ToString());
            //        row.SetAttribute("AngelToHorSpan", item.AngelToHorSpan.ToString());
            //        row.SetAttribute("MaxAngHorSpan", item.MaxAngHorSpan.ToString());

            //        row.SetAttribute("UpSideInHei", item.UpSideInHei.ToString());
            //        row.SetAttribute("MidInHei", item.MidInHei.ToString());
            //        row.SetAttribute("DnSideInHei", item.DnSideInHei.ToString());
            //        row.SetAttribute("GrDHei", item.GrDHei.ToString());
            //        row.SetAttribute("UpSideJuHei", item.UpSideJuHei.ToString());
            //        row.SetAttribute("MidJuHei", item.MidJuHei.ToString());
            //        row.SetAttribute("DnSideJuHei", item.DnSideJuHei.ToString());

            //        rootNode.AppendChild(row);

            //    }
            //    doc.Save(filePath);
            //    MessageBox.Show("保存信息成功");
            //}
            //catch (Exception ex)
            //{
            //    MessageBox.Show("保存信息失败,请确认后重试!错误信息为:" + ex.Message);
            //}
        }