public List <TowerStrData> GetLocalTowerStrs() { if (_localTowerStrs == null || _localTowerStrs.Count == 0) { string filePath = ProjectPath + "\\BaseData\\TowerStr.xml"; _localTowerStrs = TowerStrDataReader.ReadLoadFile(filePath); } return(_localTowerStrs); }
/// <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); }
/// <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); }
/// <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); //} }