Example #1
0
        /// <summary>
        /// 将电气目录和结构目录中这个序列和每个塔的子目录建立好
        /// 将电气计算的Eexel模板和结构计算的模板复制到相应的目录下,便于后续计算
        /// </summary>
        /// <param name="seqence"></param>
        /// <param name="tower"></param>
        /// <returns></returns>
        protected void CopyTmeplateToDesDir(int index)
        {
            TowerSerial tower = TowerSerials[index];

            //建立电气计算下的目录
            string elecDirPath = ProjectUtils.GetInstance().ProjectPath + "\\" + ConstVar.ElecCalsStr + "\\" + SequenceName;

            if (!Directory.Exists(elecDirPath))
            {
                Directory.CreateDirectory(elecDirPath);
            }

            elecDirPath += "\\" + tower.TowerName;
            if (!Directory.Exists(elecDirPath))
            {
                Directory.CreateDirectory(elecDirPath);
            }

            //安装目录UserData里面复制电气模板
            string scrPath = Directory.GetCurrentDirectory() + "\\" + ConstVar.UserDataStr + "\\" + (tower.TowerType == 1 ?
                                                                                                     ConstVar.ElecLoadLineTowerTemplateFileName : ConstVar.ElecLoadCornerTowerTemplateFileName);
            string destPath = elecDirPath + "\\" + ConstVar.ElecLoadTemplateFileName;

            File.Copy(scrPath, destPath);
        }
Example #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);
        }
Example #3
0
        protected void UpdateStruCalsParas(int index)
        {
            TowerSerial tower = TowerSerials[index];

            string strucDirPath = ProjectUtils.GetInstance().ProjectPath + "\\" + ConstVar.StruCalsStr + "\\" + SequenceName;

            if (!Directory.Exists(strucDirPath))
            {
                Directory.CreateDirectory(strucDirPath);
            }

            strucDirPath += "\\" + tower.TowerName;
            if (!Directory.Exists(strucDirPath))
            {
                Directory.CreateDirectory(strucDirPath);
            }

            TowerStrData towerStr = GlobalInfo.GetInstance().GetLocalTowerStrByName(tower.TowerName);

            //复制结构计算的模板,结构计算的模板要从通用模板库里面复制
            string struTempPathSce = ProjectUtils.GetInstance().ProjectPath + "\\" + ConstVar.DataBaseStr + "\\" + ConstVar.GeneralStruTemplateStr + "\\" + TowerTypeToString(tower.TowerType) + "\\" + towerStr.TempletName.Remove(0, 6) + ".dat";
            string struTempPathDes = ProjectUtils.GetInstance().ProjectPath + "\\" + ConstVar.StruCalsStr + "\\" + SequenceName + "\\" + towerStr.Name + "\\" + ConstVar.StruCalsStr + "\\" + towerStr.TempletName.Remove(0, 6) + ".dat";

            File.Copy(struTempPathSce, struTempPathDes);

            //复制应力计算模板文件,需要从TowerUploadFile下相应的塔文件里复制,一共需要复制三个文件:模板文件、data.ini、DataCh.ini
            string stressTempDirSce = ProjectUtils.GetInstance().ProjectPath + "\\" + ConstVar.DataBaseStr + "\\" + ConstVar.TowerUploadFileStr + "\\" + towerStr.Name + "[" + tower.TowerType.ToString() + "]\\";
            string stressTempDirDes = ProjectUtils.GetInstance().ProjectPath + "\\" + ConstVar.StruCalsStr + "\\" + SequenceName + "\\" + towerStr.Name + "\\" + ConstVar.FullStressStr + "\\";

            File.Copy(stressTempDirSce + towerStr.ModelFileExtension, stressTempDirDes + towerStr.ModelName);
            File.Copy(stressTempDirSce + ConstVar.SmartTowerIntFileName, stressTempDirDes + ConstVar.SmartTowerIntFileName);
            File.Copy(stressTempDirSce + ConstVar.SmartTowerIntCHFileName, stressTempDirDes + ConstVar.SmartTowerIntCHFileName);

            List <string> stressTempPathList = new List <string> {
                towerStr.ModelName, ConstVar.SmartTowerIntFileName, ConstVar.SmartTowerIntCHFileName
            };

            //解码挂点参数
            string hpSettingPath = stressTempDirSce + towerStr.HangPointFileExtension;
            List <HangingPointSettingParas> HPSettingsParas = XmlUtils.Deserializer <List <HangingPointSettingParas> >(hpSettingPath);

            ProjectUtils.GetInstance().NewStruCalsTower(towerStr.Name, SequenceName, ExcelPath, TowerTypeToString(tower.TowerType), ParaList[index].CommParas.Volt, struTempPathDes, stressTempPathList, HPSettingsParas);
        }
Example #4
0
        public ElecCalsParas(string sequenceName, TowerSerial backTower, TowerSerial calsTower)
        {
            SequenceName = sequenceName;

            globalInst = GlobalInfo.GetInstance();

            CommParas = globalInst.GetElecCalsCommParasByName(calsTower.CommPar);

            BackSidePara = globalInst.GetElecCalsSideParasByName(calsTower.BackSidePar);
            UpdateSidePara(true, BackSidePara, out string waring1);

            FrontSidePara = globalInst.GetElecCalsSideParasByName(calsTower.FrontSidePar);
            UpdateSidePara(false, FrontSidePara, out string waring2);

            TowerParas = globalInst.GetElecCalsTowerParasByName(calsTower.TowerPar);
            UpdateTowerPara(out string warning3);

            UpdateTowerSerial(backTower, calsTower, out string waring4);
        }
Example #5
0
        //更新塔序列参数
        protected void UpdateTowerSerial(TowerSerial backTowerSerial, TowerSerial calsTowerSerial, out string waring)
        {
            TowerStrData towerStr = globalInst.GetLocalTowerStrByName(calsTowerSerial.TowerPattern);

            Appre = new ElecCalsTowerAppre()
            {
                UpSideInHei = towerStr.UpSideInHei,
                MidInHei    = towerStr.MidInHei,
                DnSideInHei = towerStr.DnSideInHei,
                GrDHei      = towerStr.GrDHei,
                UpSideJuHei = towerStr.UpSideJuHei,
                MidJuHei    = towerStr.MidJuHei,
                DnSideJuHei = towerStr.DnSideJuHei,
            };

            TowerElecCals tower = new TowerElecCals();

            tower.SetPosInf(calsTowerSerial.TowerName, calsTowerSerial.TowerPattern, calsTowerSerial.CallItHigh, calsTowerSerial.TowerFootElevation, calsTowerSerial.BaseLevelDescent, TowerParas.RepStrIndLen,
                            TowerParas.RepStrGrdLen, calsTowerSerial.TurningAngle);
            tower.SetFrontBackPosInf(calsTowerSerial.Span, calsTowerSerial.FrontPreSpan, backTowerSerial.Span, backTowerSerial.FrontPreSpan);

            waring = "";
        }
Example #6
0
        /// <summary>
        /// 读取原始TA文件
        /// </summary>
        /// <param name="sourcePath">原始文件路径</param>
        /// <returns></returns>
        public static List <TowerSerial> ReadTa(string sourcePath)
        {
            List <string>      lineList      = new List <string>();
            List <TowerSerial> towerSeriList = new List <TowerSerial>();

            string line;

            // Read the file and display it line by line.
            StreamReader file = new StreamReader(sourcePath);

            while ((line = file.ReadLine()) != null)
            {
                lineList.Add(line);
            }

            file.Close();
            string[]    itemLine;
            TowerSerial tower;

            for (int i = 1; i < lineList.Count; i++)
            {
                itemLine = lineList[i].Split(',');
                tower    = new TowerSerial();

                tower.ID                                        = i;
                tower.TowerName                                 = itemLine[0];
                tower.TowerType                                 = int.Parse(itemLine[1]);                                                                //塔类型:直线塔1转角塔2门架3
                tower.TowerTypeName                             = itemLine[1].ToString() == "1" ? "直线塔" : itemLine[1].ToString() == "2" ? "耐张塔" : "终端塔"; //塔类型:直线塔1转角塔2门架3
                tower.AccumulativeDistance                      = itemLine[2] == "" ? 0 : Convert.ToDouble(itemLine[2]);
                tower.PointAndGround_Distance                   = itemLine[3] == "" ? 0 : Convert.ToDouble(itemLine[3]);
                tower.KValueOfConductor                         = itemLine[4] == "" ? 0 : Convert.ToDouble(itemLine[4]);
                tower.DeviationDistance                         = itemLine[5] == "" ? 0 : Convert.ToDouble(itemLine[5]);
                tower.TowerFootElevation                        = itemLine[6] == "" ? 0 : Convert.ToDouble(itemLine[6]);
                tower.NameOfPositioningPile                     = itemLine[7];
                tower.TowerPattern                              = itemLine[8].Split('-')[0];
                tower.CallItHigh                                = itemLine[9] == "" ? 0 : Convert.ToDouble(itemLine[9]);
                tower.InsulationStringModel                     = itemLine[10];
                tower.InsulationStringNumber                    = 0;
                tower.InsulationStringLength                    = itemLine[11] == "" ? 0 : Convert.ToDouble(itemLine[11]);
                tower.BaseLevelDescent                          = itemLine[12] == "" ? 0 : Convert.ToDouble(itemLine[12]);
                tower.GroundWireKValue                          = itemLine[13] == "" ? 0 : Convert.ToDouble(itemLine[13]);
                tower.BackWireDistance                          = itemLine[14] == "" ? 0 : Convert.ToDouble(itemLine[14]);
                tower.FrontWireDistance                         = itemLine[15] == "" ? 0 : Convert.ToDouble(itemLine[15]);
                tower.ModelOfGroundWireFittings                 = itemLine[16];
                tower.QuantityOfGroundWireFittings              = itemLine[17] == "" ? 0 : Convert.ToDouble(itemLine[17]);
                tower.BackGroundDistance                        = itemLine[18] == "" ? 0 : Convert.ToDouble(itemLine[18]);
                tower.FrontGroundDistance                       = itemLine[19] == "" ? 0 : Convert.ToDouble(itemLine[19]);
                tower.TurningAngle                              = itemLine[21] == "" ? 0 : Convert.ToDouble(itemLine[21]);                                                                                                                       //转角(度 分)
                tower.TurningAngleStr                           = itemLine[21] == "" || double.Parse(itemLine[21].ToString()) == 0 ? "" : (Convert.ToDouble(itemLine[21]) < 0 ? "右:" : "左:") + itemLine[21].ToString().Trim(' ').TrimStart('-'); //转角(度 分)
                tower.SafetyDistanceOfCutWire                   = itemLine[22] == "" ? 0 : Convert.ToDouble(itemLine[22]);
                tower.SafetyFactorKConductor                    = itemLine[23] == "" ? 0 : Convert.ToDouble(itemLine[23]);
                tower.SafetyFactorKValueOfGroundWire            = itemLine[24] == "" ? 0 : Convert.ToDouble(itemLine[24]);
                tower.SingleORDoubleString                      = itemLine[25] == "" ? 0 : Convert.ToDouble(itemLine[25]);
                tower.TotalWeightOfHungWeightHammer             = itemLine[26] == "" ? 0 : Convert.ToDouble(itemLine[26]);
                tower.WireStressInRearSight                     = itemLine[27] == "" ? 0 : Convert.ToDouble(itemLine[27]);
                tower.tensionInsulatorStringIsHangingUpsideDown = itemLine[28] == "1" ? true : false;
                tower.PlanDrawing                               = itemLine[29];
                tower.Display                                   = itemLine[30];
                tower.NumberOfGroundWires                       = itemLine[31] == "" ? 0 : Convert.ToInt32(itemLine[31]);
                tower.ConductorModel                            = itemLine[32];
                tower.GroundWireModel                           = itemLine[33];
                tower.SteelWeight                               = itemLine[34];
                tower.GroundHorizontalDistance                  = itemLine[35] == "" ? 0 : Convert.ToDouble(itemLine[35]);
                tower.DistanceBetweenUpperAndLowerConductors    = Convert.ToDouble(itemLine[36]);
                tower.MiddleAndLowerConductorDistance           = itemLine[37] == "" ? 0 : Convert.ToDouble(itemLine[37]);
                tower.HeightOfGroundWireSupport                 = itemLine[38] == "" ? 0 : Convert.ToDouble(itemLine[38]);

                towerSeriList.Add(tower);
            }

            CalsParameters(towerSeriList);
            return(towerSeriList);
        }
Example #7
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);
        }