Пример #1
0
        private void contextMenuStrip1_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
        {
            frnReport wFrom = new frnReport();
            if (e.ClickedItem.Text == "属性")
            {
                elementProperty();
            }
            tlVectorControl1.Operation = ToolOperation.Select;
            if (e.ClickedItem.Text == "短路计算")
            {

                wFrom.Owner = this;
                wFrom.Show();
                wFrom.Text = this.Text + "短路计算";
                wFrom.ShowText += "正在收集信息\t" + System.DateTime.Now.ToString();
                if (!addcheck(wFrom))
                {

                    return;
                }
                string duanluname = null;        //记录短路点的名字 如果是发生在支路上短路点的名字为线路连接的第一个母线名
                int tuxing = 0;
                int baobiao = 0;
                PSPDEV pspDuanlu = new PSPDEV();
                XmlElement element = tlVectorControl1.SVGDocument.CurrentElement;
                pspDuanlu.SUID = element.GetAttribute("Deviceid");
                pspDuanlu = (PSPDEV)Services.BaseService.GetObject("SelectPSPDEVByKey", pspDuanlu);
                if (pspDuanlu == null)
                    return;
                if (pspDuanlu.Type != "05" && pspDuanlu.Type != "01")
                    return;
                frmDuanlu dudu = new frmDuanlu(pspDuanlu);
                dudu.projectsuid = tlVectorControl1.SVGDocument.SvgdataUid;
                ElectricShorti lec = new ElectricShorti();
                int n11 = 0, n2 = 0, n3 = 0;
                double n4 = 0;

                if (dudu.ShowDialog() == DialogResult.OK)
                {
                    //int bigsmall=Convert.ToInt32(dudu.DuanluBigsmall);
                    try
                    {
                        if (!lec.CheckDL(tlVectorControl1.SVGDocument.SvgdataUid, this.ProjectUID, 100))
                            return;
                        string nodeType;
                        if (dudu.DuanluBaobiao == "是")
                            baobiao = 1;
                        if (dudu.DuanluTuxing == "图形输出节点电压")
                            tuxing = 1;
                        if (dudu.DuanluTuxing == "图形输出短路电流")
                            tuxing = 2;
                        //Duanlu.Name = dudu.DuanluPoint;
                        //Duanlu = (PSPDEV)Services.BaseService.GetObject("SelectPSPDEVByName", Duanlu);
                        n4 = (double)Convert.ToInt32(dudu.hscool) / 100;
                        nodeType = pspDuanlu.Type;
                        if (pspDuanlu.Type == "01")
                        {
                            n11 = 0;
                            n2 = pspDuanlu.Number;
                            switch (dudu.DuanluType)
                            {
                                case "单相接地":
                                    n3 = 1;
                                    break;

                                case "两相接地":
                                    n3 = 3;
                                    break;
                                case "两相故障":
                                    n3 = 2;
                                    break;
                                case "三相故障":
                                    n3 = 0;
                                    break;
                                default:
                                    n3 = 1;
                                    break;
                            }

                            string con = " ,PSP_ELCDEVICE WHERE PSPDEV.SUID = PSP_ELCDEVICE.DeviceSUID AND PSP_ELCDEVICE.ProjectSUID = '" + tlVectorControl1.SVGDocument.SvgdataUid+ "'AND PSPDEV.type='05'AND PSPDEV.KSwitchStatus = '0'order by PSPDEV.number";
                            PSPDEV psp = new PSPDEV();
                            IList list2 = Services.BaseService.GetList("SelectPSPDEVByCondition", con); ;
                            string dlr = null;
                            bool flag = false;             //记录读的是一般线路还是两绕组变压器上的母线还是三绕组上面的

                            string projectid = this.ProjectUID;
                            for (int i = 0; i < list2.Count; i++)
                            {
                                psp = list2[i] as PSPDEV;
                                con = " WHERE Name='" + psp.ISwitch + "' AND ProjectID = '" + projectid + "'" + "AND Type='07'";
                                IList listiswitch = Services.BaseService.GetList("SelectPSPDEVByCondition", con);
                                con = " WHERE Name='" + psp.JSwitch + "' AND ProjectID = '" + projectid + "'" + "AND Type='07'";
                                IList listjswitch = Services.BaseService.GetList("SelectPSPDEVByCondition", con);
                                PSPDEV pspiswitch = (PSPDEV)listiswitch[0];
                                PSPDEV pspjswitch = (PSPDEV)listjswitch[0];

                                if (pspDuanlu.Number == psp.FirstNode && pspiswitch.KSwitchStatus == "0" && pspjswitch.KSwitchStatus == "0")
                                {

                                    flag = true;
                                    dlr = "0" + " " + psp.FirstNode + " " + psp.LastNode + " " + psp.Number + " " + "0 " + " " + n3.ToString();

                                }
                                if (pspDuanlu.Number == psp.LastNode && pspiswitch.KSwitchStatus == "0" && pspjswitch.KSwitchStatus == "0")
                                {
                                    flag = true;
                                    dlr = "0" + " " + psp.FirstNode + " " + psp.LastNode + " " + psp.Number + " " + "1 " + " " + n3.ToString();
                                }
                                if (File.Exists(System.Windows.Forms.Application.StartupPath + "\\fault.txt"))
                                {
                                    File.Delete(System.Windows.Forms.Application.StartupPath + "\\fault.txt");
                                }
                                if (flag)
                                {

                                    break;                 //跳出本循环 进行母线的另外一个母线短路

                                }
                                if (!flag)
                                    continue;
                                //写入错误中

                            }
                            if (!flag)
                            {
                                  con = " ,PSP_ELCDEVICE WHERE PSPDEV.SUID = PSP_ELCDEVICE.DeviceSUID AND PSP_ELCDEVICE.ProjectSUID = '" + tlVectorControl1.SVGDocument.SvgdataUid + "'AND PSPDEV.type='02'AND PSPDEV.KSwitchStatus = '0' order by PSPDEV.number";
                                IList list3 = Services.BaseService.GetList("SelectPSPDEVByCondition", con);
                                for (int i = 0; i < list3.Count; i++)
                                {
                                    dlr = null;
                                    psp = list3[i] as PSPDEV;
                                    PSPDEV devFirst = new PSPDEV();

                                    con = " WHERE Name='" + psp.IName + "' AND ProjectID = '" + projectid + "'" + "AND Type='01'";
                                    devFirst = (PSPDEV)Services.BaseService.GetObject("SelectPSPDEVByCondition", con);
                                    PSPDEV devLast = new PSPDEV();

                                    con = " WHERE Name='" + psp.JName + "' AND ProjectID = '" + projectid + "'" + "AND Type='01'";
                                    devLast = (PSPDEV)Services.BaseService.GetObject("SelectPSPDEVByCondition", con);
                                    con = " WHERE Name='" + psp.ISwitch + "' AND ProjectID = '" + projectid + "'" + "AND Type='07'";
                                    IList listiswitch = Services.BaseService.GetList("SelectPSPDEVByCondition", con);
                                    con = " WHERE Name='" + psp.JSwitch + "' AND ProjectID = '" + projectid + "'" + "AND Type='07'";
                                    IList listjswitch = Services.BaseService.GetList("SelectPSPDEVByCondition", con);
                                    PSPDEV pspiswitch = (PSPDEV)listiswitch[0];
                                    PSPDEV pspjswitch = (PSPDEV)listjswitch[0];
                                    if (pspDuanlu.Number == devFirst.Number && pspiswitch.KSwitchStatus == "0" && pspjswitch.KSwitchStatus == "0")
                                    {

                                        flag = true;
                                        dlr = "0" + " " + devFirst.Number + " " + devLast.Number + " " + psp.Number + " " + "0" + " " + n3.ToString();

                                    }
                                    if (pspDuanlu.Number == devLast.Number && pspiswitch.KSwitchStatus == "0" && pspjswitch.KSwitchStatus == "0")
                                    {
                                        flag = true;
                                        dlr = "0" + " " + devFirst.Number + " " + devLast.Number + " " + psp.Number + " " + "1" + " " + n3.ToString();
                                    }
                                    if (flag)
                                    {
                                        break;                 //跳出本循环 进行母线的另外一个母线短路

                                    }
                                    if (!flag)
                                        continue;
                                    //写入错误中

                                }
                            }
                            if (!flag)
                            {
                                con = " ,PSP_ELCDEVICE WHERE PSPDEV.SUID = PSP_ELCDEVICE.DeviceSUID AND PSP_ELCDEVICE.ProjectSUID = '" + tlVectorControl1.SVGDocument.SvgdataUid + "'AND PSPDEV.type='03'AND PSPDEV.KSwitchStatus = '0' order by PSPDEV.number";
                                IList list4 = Services.BaseService.GetList("SelectPSPDEVByCondition", con);
                                for (int i = 0; i < list4.Count; i++)
                                {
                                    dlr = null;
                                    psp = list4[i] as PSPDEV;
                                    PSPDEV devINode = new PSPDEV();

                                    con = " WHERE Name='" + psp.IName + "' AND ProjectID = '" + projectid + "'" + "AND Type='01'";
                                    devINode = (PSPDEV)Services.BaseService.GetObject("SelectPSPDEVByCondition", con);
                                    PSPDEV devJNode = new PSPDEV();

                                    con = " WHERE Name='" + psp.JName + "' AND ProjectID = '" + projectid + "'" + "AND Type='01'";
                                    devJNode = (PSPDEV)Services.BaseService.GetObject("SelectPSPDEVByCondition", con);
                                    PSPDEV devKNode = new PSPDEV();

                                    con = " WHERE Name='" + psp.KName + "' AND ProjectID = '" + projectid + "'" + "AND Type='01'";
                                    devKNode = (PSPDEV)Services.BaseService.GetObject("SelectPSPDEVByCondition", con);

                                    con = " WHERE Name='" + psp.ISwitch + "' AND ProjectID = '" + projectid + "'" + "AND Type='07'";
                                    IList listiswitch = Services.BaseService.GetList("SelectPSPDEVByCondition", con);
                                    con = " WHERE Name='" + psp.JSwitch + "' AND ProjectID = '" + projectid + "'" + "AND Type='07'";
                                    IList listjswitch = Services.BaseService.GetList("SelectPSPDEVByCondition", con);
                                    con = " WHERE Name='" + psp.HuganLine1 + "' AND ProjectID = '" + projectid + "'" + "AND Type='07'";
                                    IList listkswitch = Services.BaseService.GetList("SelectPSPDEVByCondition", con);
                                    PSPDEV pspiswitch = (PSPDEV)listiswitch[0];
                                    PSPDEV pspjswitch = (PSPDEV)listjswitch[0];
                                    PSPDEV pspkswitch = (PSPDEV)listkswitch[0];
                                    if (pspDuanlu.Number == devINode.Number && pspiswitch.KSwitchStatus == "0" && pspjswitch.KSwitchStatus == "0" && pspkswitch.KSwitchStatus == "0")
                                    {

                                        flag = true;
                                        dlr = "0" + " " + devINode.Number + " " + devJNode.Number + " " + psp.Number + " " + "0" + " " + n3.ToString();

                                    }
                                    if (pspDuanlu.Number == devJNode.Number && pspiswitch.KSwitchStatus == "0" && pspjswitch.KSwitchStatus == "0" && pspkswitch.KSwitchStatus == "0")
                                    {
                                        flag = true;
                                        dlr = "0" + " " + devINode.Number + " " + devJNode.Number + " " + psp.Number + " " + "1" + " " + n3.ToString();
                                    }
                                    if (pspDuanlu.Number == devKNode.Number && pspiswitch.KSwitchStatus == "0" && pspjswitch.KSwitchStatus == "0" && pspkswitch.KSwitchStatus == "0")
                                    {
                                        flag = true;
                                        dlr = "0" + " " + devINode.Number + " " + devKNode.Number + " " + psp.Number + " " + "1" + " " + n3.ToString();
                                    }

                                    if (flag)
                                    {
                                        break;                 //跳出本循环 进行母线的另外一个母线短路

                                    }
                                    if (!flag)
                                        continue;
                                    //写入错误中

                                }
                            }
                            if (File.Exists(System.Windows.Forms.Application.StartupPath + "\\fault.txt"))
                            {
                                File.Delete(System.Windows.Forms.Application.StartupPath + "\\fault.txt");
                            }

                            FileStream VK = new FileStream((System.Windows.Forms.Application.StartupPath + "\\fault.txt"), FileMode.OpenOrCreate);
                            StreamWriter str11 = new StreamWriter(VK);
                            str11.Write(dlr);
                            str11.Close();
                            n4 = 0;

                        }
                        else if (pspDuanlu.Type == "05")
                        {
                            //n11 = pspDuanlu.FirstNode;
                            //n2 = pspDuanlu.LastNode;
                            n11 = pspDuanlu.Number;
                            n2 = n11;
                            switch (dudu.DuanluType)
                            {
                                case "单相接地":
                                    n3 = 1;
                                    break;

                                case "两相接地":
                                    n3 = 3;
                                    break;
                                case "两相故障":
                                    n3 = 2;
                                    break;
                                case "三相故障":
                                    n3 = 0;
                                    break;
                                default:
                                    n3 = 0;
                                    break;
                            }
                            string dlr = null;
                            if (n4 < 1 && n4 > 0)
                            {
                                duanluname = pspDuanlu.Name;
                            }
                            dlr = "0" + " " + pspDuanlu.FirstNode + " " + pspDuanlu.LastNode + " " + pspDuanlu.Number + " " + n4 + " " + n3.ToString();

                            if (File.Exists(System.Windows.Forms.Application.StartupPath + "\\fault.txt"))
                            {
                                File.Delete(System.Windows.Forms.Application.StartupPath + "\\fault.txt");
                            }

                            FileStream VK = new FileStream((System.Windows.Forms.Application.StartupPath + "\\fault.txt"), FileMode.OpenOrCreate);
                            StreamWriter str11 = new StreamWriter(VK);
                            str11.Write(dlr);
                            str11.Close();
                        }
                        else
                        {
                            return;
                        }
                        XmlNodeList list = tlVectorControl1.SVGDocument.SelectNodes("svg/*[@flag='" + "1" + "']");
                        foreach (XmlNode node in list)
                        {
                            SvgElement elementde = node as SvgElement;
                            tlVectorControl1.SVGDocument.CurrentElement = elementde;
                            tlVectorControl1.Delete();
                        }
                        wFrom.ShowText += "\r\n进行短路计算!" + System.DateTime.Now.ToString();
                        shortcir shortCutCal = new shortcir();
                        shortCutCal.Show_shortcir(0,0);
                        //bool matrixflag=true;                //用来判断是否导纳矩阵的逆矩阵是否存在逆矩阵

                        string matrixstr = null;
                        if (File.Exists(System.Windows.Forms.Application.StartupPath + "\\Zmatrixcheck.txt"))
                        {
                            matrixstr = "正序导纳矩阵";
                            // matrixflag = false;
                        }
                        if (matrixstr != null)
                        {
                            matrixstr += ",";
                        }
                        if (File.Exists(System.Windows.Forms.Application.StartupPath + "\\Fmatrixcheck.txt"))
                        {
                            // matrixflag = false;
                            matrixstr += "负序导纳矩阵";
                        }
                        if (matrixstr != null)
                        {
                            matrixstr += ",";
                        }
                        if (File.Exists(System.Windows.Forms.Application.StartupPath + "\\Lmatrixcheck.txt"))
                        {
                            //matrixflag = false;
                            matrixstr += "零序导纳矩阵";
                        }
                        if (matrixstr != null)
                        {
                            wFrom.ShowText += "\r\n" + matrixstr + "不存在逆矩阵,请调整参数后再进行计算!" + System.DateTime.Now.ToString();
                            //MessageBox.Show(matrixstr + "不存在逆矩阵,请调整参数后再进行计算!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                            return;
                        }
                        string duanResult = null;
                        duanResult += "短路电流简表" + "\r\n" + "\r\n";
                        if (File.Exists(System.Windows.Forms.Application.StartupPath + "\\ShortcuitI.txt"))
                        {
                        }
                        else
                        {
                            return;
                        }
                         wFrom.ShowText += "\r\n结果显示!" + System.DateTime.Now.ToString();
                        FileStream shorcuit = new FileStream(System.Windows.Forms.Application.StartupPath + "\\ShortcuitI.txt", FileMode.Open);
                        StreamReader readLineGU = new StreamReader(shorcuit, System.Text.Encoding.Default);
                        string strLineGU;
                        string[] arrayGU;
                        char[] charSplitGU = new char[] { ' ' };
                        strLineGU = readLineGU.ReadLine();
                         int j = 0;
                        while (strLineGU != null)
                        {
                            arrayGU = strLineGU.Split(charSplitGU);
                            int i = 0;
                            string[] dev = new string[9];
                            dev.Initialize();
                            foreach (string str in arrayGU)
                            {
                                if (str != "")
                                {
                                    dev[i++] = str;
                                }
                            }
                            if (tuxing == 2 && j != 0)
                            {
                                PSPDEV CR = new PSPDEV();

                                if (dev[1] != "du")
                                {
                                   string con = " ,PSP_ELCDEVICE WHERE PSPDEV.SUID = PSP_ELCDEVICE.DeviceSUID AND PSP_ELCDEVICE.ProjectSUID = '" + tlVectorControl1.SVGDocument.SvgdataUid + "'AND PSPDEV.Name='" + dev[1] + "'";
                                    CR = (PSPDEV)Services.BaseService.GetObject("SelectPSPDEVByCondition", con);
                                }
                                else
                                {
                                    string con = " ,PSP_ELCDEVICE WHERE PSPDEV.SUID = PSP_ELCDEVICE.DeviceSUID AND PSP_ELCDEVICE.ProjectSUID = '" + tlVectorControl1.SVGDocument.SvgdataUid + "'AND PSPDEV.Name='" + duanluname + "'AND PSPDEV.Type='05'";
                                    CR = (PSPDEV)Services.BaseService.GetObject("SelectPSPDEVByCondition", con);
                                }

                                if (CR != null)
                                {
                                    if (CR.Type != "05")
                                    {
                                        XmlElement elementdl = tlVectorControl1.SVGDocument.SelectSingleNode("svg/*[@Deviceid='" + CR.SUID + "']") as XmlElement;

                                        if (elementdl != null)
                                        {
                                            RectangleF bound = ((IGraph)elementdl).GetBounds();
                                            XmlElement n1 = tlVectorControl1.SVGDocument.CreateElement("text") as Text;
                                            n1.SetAttribute("x", Convert.ToString(bound.X));
                                            n1.SetAttribute("y", Convert.ToString(bound.Y - 20));
                                            n1.InnerText = (Convert.ToDouble(dev[3]) * 100 / (Math.Sqrt(3) * CR.ReferenceVolt)).ToString("N4");
                                            n1.SetAttribute("layer", SvgDocument.currentLayer);
                                            n1.SetAttribute("flag", "1");
                                            n1.SetAttribute("stroke", "#FF0000");
                                            tlVectorControl1.SVGDocument.RootElement.AppendChild(n1);
                                            tlVectorControl1.Operation = ToolOperation.Select;
                                            tlVectorControl1.Refresh();
                                        }
                                    }
                                    else
                                    {
                                        XmlElement elementdl = tlVectorControl1.SVGDocument.SelectSingleNode("svg/*[@Deviceid='" + CR.SUID + "']") as XmlElement;

                                        if (elementdl != null)
                                        {
                                            PointF[] t = ((Polyline)elementdl).Points;

                                            PointF[] t2 = ((Polyline)elementdl).FirstTwoPoint;
                                            t = t2;
                                            PointF midt = new PointF((float)((t2[0].X + t2[1].X) / 2), (float)((t2[0].Y + t2[1].Y) / 2));
                                            float angel = 0f;
                                            angel = (float)(180 * Math.Atan2((t2[1].Y - t2[0].Y), (t2[1].X - t2[0].X)) / Math.PI);

                                            string l3 = Convert.ToString(midt.X);
                                            string l4 = Convert.ToString(midt.Y);

                                            string tran = ((Polyline)elementdl).Transform.ToString();

                                            PointF center = new PointF((float)(t[0].X + (t[1].X - t[0].X) / 2), (float)(t[0].Y + (t[1].Y - t[0].Y) / 2));
                                            XmlElement n1 = tlVectorControl1.SVGDocument.CreateElement("text") as Text;
                                            XmlElement n2dl = tlVectorControl1.SVGDocument.CreateElement("polyline") as Polyline;
                                            PointF pStart = new PointF(center.X + (float)(15 * Math.Sin((angel) * Math.PI / 180)), center.Y - (float)(15 * Math.Cos((angel) * Math.PI / 180)));
                                            PSPDEV psp = new PSPDEV();
                                            psp.FirstNode = CR.FirstNode;
                                            psp.LastNode = CR.LastNode;
                                            string con = " ,PSP_ELCDEVICE WHERE PSPDEV.SUID = PSP_ELCDEVICE.DeviceSUID AND PSP_ELCDEVICE.ProjectSUID = '" + tlVectorControl1.SVGDocument.SvgdataUid + "'AND PSPDEV.FirstNode='" + CR.FirstNode + "'AND PSPDEV.LastNode='"+CR.LastNode+"'";
                                            IList listParallel = Services.BaseService.GetList("SelectPSPDEVByCondition", con);

                                            PSPDEV tempss = new PSPDEV();

                                            foreach (PSPDEV devP in listParallel)
                                            {
                                                if ((angel > 10 && angel < 90) || (angel < 0 && Math.Abs(angel) < 90) || (angel > 180 && angel < 350))
                                                {
                                                    if (((devP.X1) > (CR.X1)))
                                                    {
                                                        pStart = new PointF(center.X - (float)(23 * Math.Sin((angel) * Math.PI / 180)), center.Y + (float)(23 * Math.Cos((angel) * Math.PI / 180)));

                                                    }
                                                }
                                                else if ((angel >= 0 && angel <= 10) || (angel >= 350 && angel <= 360) || (angel < 0 && Math.Abs(angel) <= 90))
                                                {
                                                    if (((devP.Y1) > (CR.Y1)))
                                                    {
                                                        pStart = new PointF(center.X - (float)(23 * Math.Sin((angel) * Math.PI / 180)), center.Y + (float)(23 * Math.Cos((angel) * Math.PI / 180)));

                                                    }
                                                }
                                                else if ((angel < 0 && Math.Abs(angel) > 90) || (angel >= 90 && angel <= 180))
                                                {
                                                    if (((devP.Y1) > (CR.Y1)))
                                                    {
                                                        pStart = new PointF(center.X - (float)(7 * Math.Sin((angel) * Math.PI / 180)), center.Y + (float)(7 * Math.Cos((angel) * Math.PI / 180)));

                                                    }
                                                }
                                            }

                                            PointF newp1 = new PointF(t[0].X + (t[1].X - t[0].X) / 2 - (float)(15 * Math.Sin(angel)), t[0].Y + (t[1].Y - t[0].Y) / 2 - (float)(15 * Math.Cos(angel)));

                                            n1.SetAttribute("x", Convert.ToString(pStart.X));
                                            n1.SetAttribute("y", Convert.ToString(pStart.Y));

                                            //if (Convert.ToDouble(dev[4]) >= 0)
                                            //{
                                            n1.InnerText = (Math.Abs(Convert.ToDouble(dev[3]) * 100 / (Math.Sqrt(3) * CR.ReferenceVolt))).ToString("N4");
                                            //}
                                            //else
                                            //{
                                            //    n1.InnerText = (Math.Abs(Convert.ToDouble(dev[3]))).ToString("N4");
                                            //}
                                            n1.SetAttribute("layer", SvgDocument.currentLayer);
                                            n1.SetAttribute("flag", "1");

                                            //if (Convert.ToDouble(dev[5]) == 1)
                                            //    n1.SetAttribute("stroke", "#FF0000");

                                            PointF p1 = new PointF(midt.X - (float)(10 * Math.Cos((angel + 25) * Math.PI / 180)), midt.Y - (float)(10 * Math.Sin((angel + 25) * Math.PI / 180)));
                                            PointF p2 = new PointF(midt.X - (float)(10 * Math.Cos((angel + 335) * Math.PI / 180)), midt.Y - (float)(10 * Math.Sin((angel + 335) * Math.PI / 180)));

                                            if (Convert.ToDouble(dev[3]) < 0)
                                            {
                                                p1 = new PointF(midt.X - (float)(10 * Math.Cos((angel + 155) * Math.PI / 180)), midt.Y - (float)(10 * Math.Sin((angel + 155) * Math.PI / 180)));
                                                p2 = new PointF(midt.X - (float)(10 * Math.Cos((angel + 205) * Math.PI / 180)), midt.Y - (float)(10 * Math.Sin((angel + 205) * Math.PI / 180)));
                                            }

                                            string l1 = Convert.ToString(p1.X);
                                            string l2 = Convert.ToString(p1.Y);
                                            string l5 = Convert.ToString(p2.X);
                                            string l6 = Convert.ToString(p2.Y);

                                            tlVectorControl1.SVGDocument.RootElement.AppendChild(n1);
                                            tlVectorControl1.Operation = ToolOperation.Select;

                                            tlVectorControl1.SVGDocument.CurrentElement = n1 as SvgElement;

                                            RectangleF ttt = ((Polyline)elementdl).GetBounds();

                                            tlVectorControl1.RotateSelection(angel, pStart);
                                            if (Math.Abs(angel) > 90)
                                                tlVectorControl1.RotateSelection(180, pStart);
                                            PointF newp = new PointF(center.X + 10, center.Y + 10);

                                            tlVectorControl1.Refresh();

                                        }
                                    }
                                }
                                if (CR.NodeType == "05")
                                {
                                    PSPDEV fl = new PSPDEV();
                                    string con = " ,PSP_ELCDEVICE WHERE PSPDEV.SUID = PSP_ELCDEVICE.DeviceSUID AND PSP_ELCDEVICE.ProjectSUID = '" + tlVectorControl1.SVGDocument.SvgdataUid + "'AND PSPDEV.Number='" + CR.FirstNode +"'";
                                    fl = (PSPDEV)Services.BaseService.GetObject("SelectPSPDEVByCondition", con);
                                    duanResult += dev[0] + "," + dev[1] + "," + Convert.ToDouble(dev[3]) * 100 / (Math.Sqrt(3) * fl.ReferenceVolt) + "\r\n";
                                }
                                else
                                {
                                    duanResult += dev[0] + "," + dev[1] + "," + Convert.ToDouble(dev[3]) * 100 / (Math.Sqrt(3) * CR.ReferenceVolt) + "\r\n";
                                }

                            }
                            else if (tuxing==1&&j!=0)
                            {
                                PSPDEV CR = new PSPDEV();

                                if (dev[1] != "du")
                                {
                                    string con = " ,PSP_ELCDEVICE WHERE PSPDEV.SUID = PSP_ELCDEVICE.DeviceSUID AND PSP_ELCDEVICE.ProjectSUID = '" + tlVectorControl1.SVGDocument.SvgdataUid + "'AND PSPDEV.Name='" + dev[1] + "'";
                                    CR = (PSPDEV)Services.BaseService.GetObject("SelectPSPDEVByCondition", con);
                                }
                                else
                                {
                                    string con = " ,PSP_ELCDEVICE WHERE PSPDEV.SUID = PSP_ELCDEVICE.DeviceSUID AND PSP_ELCDEVICE.ProjectSUID = '" + tlVectorControl1.SVGDocument.SvgdataUid + "'AND PSPDEV.Name='" + duanluname + "'AND PSPDEV.Type='05'";
                                    CR = (PSPDEV)Services.BaseService.GetObject("SelectPSPDEVByCondition", con);
                                }

                                if (CR.NodeType == "05")
                                {
                                    PSPDEV fl = new PSPDEV();
                                    string con = " ,PSP_ELCDEVICE WHERE PSPDEV.SUID = PSP_ELCDEVICE.DeviceSUID AND PSP_ELCDEVICE.ProjectSUID = '" + tlVectorControl1.SVGDocument.SvgdataUid + "'AND PSPDEV.Number='" + CR.FirstNode + "'";
                                    fl = (PSPDEV)Services.BaseService.GetObject("SelectPSPDEVByCondition", con);
                                    duanResult += dev[0] + "," + dev[1] + "," + Convert.ToDouble(dev[3]) * 100 / (Math.Sqrt(3) * fl.ReferenceVolt) + "\r\n";
                                }
                                else
                                {
                                    duanResult += dev[0] + "," + dev[1] + "," + Convert.ToDouble(dev[3]) * 100 / (Math.Sqrt(3) * CR.ReferenceVolt) + "\r\n";
                                }
                            }
                            else if (j==0)
                            {
                                duanResult += dev[0] + "," + dev[1] + "," + dev[3]+ "\r\n";
                            }
                            strLineGU = readLineGU.ReadLine();
                            j++;
                        }
                        readLineGU.Close();
                        string dianYaResult = null;
                        dianYaResult += "母线电压结果" + "\r\n" + "\r\n";
                        if (File.Exists(System.Windows.Forms.Application.StartupPath + "\\Sxdianya.txt"))
                        {
                        }
                        else
                        {
                            return;
                        }
                        FileStream dianYa = new FileStream(System.Windows.Forms.Application.StartupPath + "\\Sxdianya.txt", FileMode.Open);
                        StreamReader readLineDY = new StreamReader(dianYa, System.Text.Encoding.Default);
                        string strLineDY;
                        string[] arrayDY;
                        char[] charSplitDY = new char[] { ' ' };
                        strLineDY = readLineDY.ReadLine();
                        j = 0;
                        while (strLineDY != null)
                        {
                            arrayDY = strLineDY.Split(charSplitDY);
                            int i = 0;
                            string[] dev = new string[14];
                            dev.Initialize();
                            foreach (string str in arrayDY)
                            {
                                if (str != "")
                                {
                                    dev[i++] = str;
                                }
                            }
                            if (j == 0)
                            {
                                dianYaResult += dev[0] + "," + dev[1] + "," + dev[2] + "," + dev[3] + "," + dev[4] + "," + dev[5] + "," + dev[6] + "," + dev[7] + "," + dev[8] + "," +
             dev[9] + "," + dev[10] + "," + dev[11] + "," + dev[12] + "," + dev[13] + "\r\n";
                            }
                            else
                            {
                                bool flag = true;     //判断此母线是短路点母线还是一般的母线
                                PSPDEV CR = new PSPDEV();

                                if (dev[1] != "du")
                                {
                                    string con = " ,PSP_ELCDEVICE WHERE PSPDEV.SUID = PSP_ELCDEVICE.DeviceSUID AND PSP_ELCDEVICE.ProjectSUID = '" + tlVectorControl1.SVGDocument.SvgdataUid + "'AND PSPDEV.Name='" + dev[1] + "'";
                                    CR = (PSPDEV)Services.BaseService.GetObject("SelectPSPDEVByCondition", con); ;
                                }
                                else
                                {
                                    flag = false;
                                    string con = " ,PSP_ELCDEVICE WHERE PSPDEV.SUID = PSP_ELCDEVICE.DeviceSUID AND PSP_ELCDEVICE.ProjectSUID = '" + tlVectorControl1.SVGDocument.SvgdataUid + "'AND PSPDEV.Name='" + duanluname + "'AND PSPDEV.Type='05'";
                                    CR = (PSPDEV)Services.BaseService.GetObject("SelectPSPDEVByCondition", con);
                                }

                                //CR = (PSPDEV)Services.BaseService.GetObject("SelectPSPDEVByNameANDSVG", CR);
                                if (tuxing == 1)
                                {
                                    XmlElement elementdl = tlVectorControl1.SVGDocument.SelectSingleNode("svg/*[@Deviceid='" + CR.SUID + "']") as XmlElement;

                                    if (elementdl != null)
                                    {
                                        RectangleF bound = ((IGraph)elementdl).GetBounds();
                                        XmlElement n1 = tlVectorControl1.SVGDocument.CreateElement("text") as Text;
                                        XmlElement n22 = tlVectorControl1.SVGDocument.CreateElement("text") as Text;
                                        XmlElement n33 = tlVectorControl1.SVGDocument.CreateElement("text") as Text;
                                        n1.SetAttribute("x", Convert.ToString(bound.X));
                                        n1.SetAttribute("y", Convert.ToString(bound.Y - 60));
                                        n1.InnerText = "A相:" + (Convert.ToDouble(dev[2]) * CR.ReferenceVolt).ToString("N4") + "kV/" + (Convert.ToDouble(dev[3])).ToString("N4") + "°";
                                        n1.SetAttribute("layer", SvgDocument.currentLayer);
                                        n1.SetAttribute("flag", "1");
                                        tlVectorControl1.SVGDocument.RootElement.AppendChild(n1);
                                        tlVectorControl1.Operation = ToolOperation.Select;
                                        tlVectorControl1.Refresh();
                                        n22.SetAttribute("x", Convert.ToString(bound.X));
                                        n22.SetAttribute("y", Convert.ToString(bound.Y - 40));
                                        n22.InnerText = "B相:" + (Convert.ToDouble(dev[4]) * CR.ReferenceVolt).ToString("N4") + "kV/" + (Convert.ToDouble(dev[5])).ToString("N4") + "°";
                                        n22.SetAttribute("layer", SvgDocument.currentLayer);
                                        n22.SetAttribute("flag", "1");
                                        tlVectorControl1.SVGDocument.RootElement.AppendChild(n22);
                                        tlVectorControl1.Operation = ToolOperation.Select;
                                        tlVectorControl1.Refresh();
                                        n33.SetAttribute("x", Convert.ToString(bound.X));
                                        n33.SetAttribute("y", Convert.ToString(bound.Y - 20));
                                        n33.InnerText = "C相:" + (Convert.ToDouble(dev[6]) * CR.ReferenceVolt).ToString("N4") + "kV/" + (Convert.ToDouble(dev[7])).ToString("N4") + "°";
                                        n33.SetAttribute("layer", SvgDocument.currentLayer);
                                        n33.SetAttribute("flag", "1");
                                        tlVectorControl1.SVGDocument.RootElement.AppendChild(n33);
                                        tlVectorControl1.Operation = ToolOperation.Select;
                                        tlVectorControl1.Refresh();
                                    }
                                }
                                if (flag)
                                    dianYaResult += dev[0] + "," + dev[1] + "," + Convert.ToDouble(dev[2]) * CR.ReferenceVolt + "," + dev[3] + "," + Convert.ToDouble(dev[4]) * CR.ReferenceVolt + "," + dev[5] + "," + Convert.ToDouble(dev[6]) * CR.ReferenceVolt + "," + dev[7] + "," + Convert.ToDouble(dev[8]) * CR.ReferenceVolt + "," +
                                        dev[9] + "," + Convert.ToDouble(dev[10]) * CR.ReferenceVolt + "," + dev[11] + "," + Convert.ToDouble(dev[12]) * CR.ReferenceVolt + "," + dev[13] + "\r\n";
                                else
                                    dianYaResult += dev[0] + "," + duanluname + "上短路点" + "," + Convert.ToDouble(dev[2]) * CR.ReferenceVolt + "," + dev[3] + "," + Convert.ToDouble(dev[4]) * CR.ReferenceVolt + "," + dev[5] + "," + Convert.ToDouble(dev[6]) * CR.ReferenceVolt + "," + dev[7] + "," + Convert.ToDouble(dev[8]) * CR.ReferenceVolt + "," +
                                       dev[9] + "," + Convert.ToDouble(dev[10]) * CR.ReferenceVolt + "," + dev[11] + Convert.ToDouble(dev[12]) * CR.ReferenceVolt + "," + dev[13] + "\r\n";

                            }
                            strLineDY = readLineDY.ReadLine();
                            j++;
                        }
                        readLineDY.Close();
                        string dianLiuResult = null;
                        dianLiuResult += "支路电流结果" + "\r\n" + "\r\n";
                        if (File.Exists(System.Windows.Forms.Application.StartupPath + "\\Sxdianliu.txt"))
                        {
                        }
                        else
                        {
                            return;
                        }
                        FileStream dianLiu = new FileStream(System.Windows.Forms.Application.StartupPath + "\\Sxdianliu.txt", FileMode.Open);
                        StreamReader readLineDL = new StreamReader(dianLiu, System.Text.Encoding.Default);
                        string strLineDL;
                        string[] arrayDL;
                        char[] charSplitDL = new char[] { ' ' };
                        strLineDL = readLineDL.ReadLine();
                        j = 0;
                        while (strLineDL != null)
                        {
                            arrayDL = strLineDL.Split(charSplitDL);
                            int i = 0;
                            string[] dev = new string[15];
                            dev.Initialize();
                            foreach (string str in arrayDL)
                            {
                                if (str != "")
                                {
                                    dev[i++] = str;
                                }
                            }
                            if (j == 0)
                            {
                                dianLiuResult += dev[0] + "," + dev[1] + "," + dev[2] + "," + dev[3] + "," + dev[4] + "," + dev[5] + "," + dev[6] + "," + dev[7] + "," + dev[8] + "," +
                                             dev[9] + "," + dev[10] + "," + dev[11] + "," + dev[12] + "," + dev[13] + "," + dev[14] + "\r\n";
                            }
                            else
                            {
                                //PSPDEV CR = new PSPDEV();
                                //CR.SvgUID = tlVectorControl1.SVGDocument.SvgdataUid;
                                //CR.Number = Convert.ToInt32(dev[2]);
                                //CR.Type = "Polyline";
                                //CR = (PSPDEV)Services.BaseService.GetObject("SelectPSPDEVByNumberAndSvgUIDAndType", CR);

                                //因为在线路电流输出时既有一般线路的电流、两绕组和三绕组线路的电流还有接地电容器和电抗器的电流,因此只将电流输出就行了

                                PSPDEV CR = new PSPDEV();
                               // CR.SvgUID = tlVectorControl1.SVGDocument.SvgdataUid;

                                if (dev[0] != "du")
                                {
                                    CR.Name = dev[0];
                                }
                                else
                                    CR.Name = dev[1];
                                string con = " ,PSP_ELCDEVICE WHERE PSPDEV.SUID = PSP_ELCDEVICE.DeviceSUID AND PSP_ELCDEVICE.ProjectSUID = '" + tlVectorControl1.SVGDocument.SvgdataUid + "'AND PSPDEV.Name='" + CR.Name + "'AND PSPDEV.Type='01'";
                                CR = (PSPDEV)Services.BaseService.GetObject("SelectPSPDEVByCondition", con);
                                if (tuxing == 1)
                                {
                                    //    XmlElement elementdl = tlVectorControl1.SVGDocument.SelectSingleNode("svg/*[@id='" + CR.EleID + "']") as XmlElement;

                                    //    if (elementdl != null)
                                    //    {
                                    //        PointF[] t = ((Polyline)elementdl).Points;

                                    //        PointF[] t2 = ((Polyline)elementdl).FirstTwoPoint;
                                    //        t = t2;
                                    //        PointF midt = new PointF((float)((t2[0].X + t2[1].X) / 2), (float)((t2[0].Y + t2[1].Y) / 2));
                                    //        float angel = 0f;
                                    //        angel = (float)(180 * Math.Atan2((t2[1].Y - t2[0].Y), (t2[1].X - t2[0].X)) / Math.PI);

                                    //        string l3 = Convert.ToString(midt.X);
                                    //        string l4 = Convert.ToString(midt.Y);

                                    //        string tran = ((Polyline)elementdl).Transform.ToString();

                                    //        PointF center = new PointF((float)(t[0].X + (t[1].X - t[0].X) / 2), (float)(t[0].Y + (t[1].Y - t[0].Y) / 2));
                                    //        XmlElement n1 = tlVectorControl1.SVGDocument.CreateElement("text") as Text;
                                    //        XmlElement n2dl = tlVectorControl1.SVGDocument.CreateElement("polyline") as Polyline;
                                    //        PointF pStart = new PointF(center.X + (float)(15 * Math.Sin((angel) * Math.PI / 180)), center.Y - (float)(15 * Math.Cos((angel) * Math.PI / 180)));
                                    //        PSPDEV psp = new PSPDEV();
                                    //        psp.FirstNode = CR.FirstNode;
                                    //        psp.LastNode = CR.LastNode;
                                    //        psp.SvgUID = CR.SvgUID;
                                    //        PSPDEV tempss = new PSPDEV();
                                    //        IList listParallel = Services.BaseService.GetList("SelectPSPDEVBySvgUIDandFirstOrLastNode", psp);
                                    //        foreach (PSPDEV devP in listParallel)
                                    //        {
                                    //            if ((angel > 10 && angel < 90) || (angel < 0 && Math.Abs(angel) < 90) || (angel > 180 && angel < 350))
                                    //            {
                                    //                if (((devP.X1) > (CR.X1)))
                                    //                {
                                    //                    pStart = new PointF(center.X - (float)(23 * Math.Sin((angel) * Math.PI / 180)), center.Y + (float)(23 * Math.Cos((angel) * Math.PI / 180)));

                                    //                }
                                    //            }
                                    //            else if ((angel >= 0 && angel <= 10) || (angel >= 350 && angel <= 360) || (angel < 0 && Math.Abs(angel) <= 90))
                                    //            {
                                    //                if (((devP.Y1) > (CR.Y1)))
                                    //                {
                                    //                    pStart = new PointF(center.X - (float)(23 * Math.Sin((angel) * Math.PI / 180)), center.Y + (float)(23 * Math.Cos((angel) * Math.PI / 180)));

                                    //                }
                                    //            }
                                    //            else if ((angel < 0 && Math.Abs(angel) > 90) || (angel >= 90 && angel <= 180))
                                    //            {
                                    //                if (((devP.Y1) > (CR.Y1)))
                                    //                {
                                    //                    pStart = new PointF(center.X - (float)(7 * Math.Sin((angel) * Math.PI / 180)), center.Y + (float)(7 * Math.Cos((angel) * Math.PI / 180)));

                                    //                }
                                    //            }
                                    //        }

                                    //        PointF newp1 = new PointF(t[0].X + (t[1].X - t[0].X) / 2 - (float)(15 * Math.Sin(angel)), t[0].Y + (t[1].Y - t[0].Y) / 2 - (float)(15 * Math.Cos(angel)));

                                    //        n1.SetAttribute("x", Convert.ToString(pStart.X));
                                    //        n1.SetAttribute("y", Convert.ToString(pStart.Y));

                                    //        //if (Convert.ToDouble(dev[4]) >= 0)
                                    //        //{
                                    //        n1.InnerText = (Math.Abs(Convert.ToDouble(dev[3]) * 100 / (Math.Sqrt(3) * CR.ReferenceVolt))).ToString("N4");
                                    //        //}
                                    //        //else
                                    //        //{
                                    //        //    n1.InnerText = (Math.Abs(Convert.ToDouble(dev[3]))).ToString("N4");
                                    //        //}
                                    //        n1.SetAttribute("layer", SvgDocument.currentLayer);
                                    //        n1.SetAttribute("flag", "1");

                                    //        //if (Convert.ToDouble(dev[3]) == 1)
                                    //        //    n1.SetAttribute("stroke", "#FF0000");

                                    //        PointF p1 = new PointF(midt.X - (float)(10 * Math.Cos((angel + 25) * Math.PI / 180)), midt.Y - (float)(10 * Math.Sin((angel + 25) * Math.PI / 180)));
                                    //        PointF p2 = new PointF(midt.X - (float)(10 * Math.Cos((angel + 335) * Math.PI / 180)), midt.Y - (float)(10 * Math.Sin((angel + 335) * Math.PI / 180)));

                                    //        if (Convert.ToDouble(dev[3]) < 0)
                                    //        {
                                    //            p1 = new PointF(midt.X - (float)(10 * Math.Cos((angel + 155) * Math.PI / 180)), midt.Y - (float)(10 * Math.Sin((angel + 155) * Math.PI / 180)));
                                    //            p2 = new PointF(midt.X - (float)(10 * Math.Cos((angel + 205) * Math.PI / 180)), midt.Y - (float)(10 * Math.Sin((angel + 205) * Math.PI / 180)));
                                    //        }

                                    //        string l1 = Convert.ToString(p1.X);
                                    //        string l2 = Convert.ToString(p1.Y);
                                    //        string l5 = Convert.ToString(p2.X);
                                    //        string l6 = Convert.ToString(p2.Y);

                                    //        tlVectorControl1.SVGDocument.RootElement.AppendChild(n1);
                                    //        tlVectorControl1.Operation = ToolOperation.Select;

                                    //        tlVectorControl1.SVGDocument.CurrentElement = n1 as SvgElement;

                                    //        RectangleF ttt = ((Polyline)elementdl).GetBounds();

                                    //        tlVectorControl1.RotateSelection(angel, pStart);
                                    //        if (Math.Abs(angel) > 90)
                                    //            tlVectorControl1.RotateSelection(180, pStart);
                                    //        PointF newp = new PointF(center.X + 10, center.Y + 10);

                                    //        tlVectorControl1.Refresh();

                                }
                                dianLiuResult += dev[0] + "," + dev[1] + "," + dev[2] + "," + Convert.ToDouble(dev[3]) * 100 / (Math.Sqrt(3) * CR.ReferenceVolt) + "," + dev[4] + "," + Convert.ToDouble(dev[5]) * 100 / (Math.Sqrt(3) * CR.ReferenceVolt) + "," + dev[6] + "," + Convert.ToDouble(dev[7]) * 100 / (Math.Sqrt(3) * CR.ReferenceVolt) + "," + dev[8] + "," +
                                  Convert.ToDouble(dev[9]) * 100 / (Math.Sqrt(3) * CR.ReferenceVolt) + "," + dev[10] + "," + Convert.ToDouble(dev[11]) * 100 / (Math.Sqrt(3) * CR.ReferenceVolt) + "," + dev[12] + "," + Convert.ToDouble(dev[13]) * 100 / (Math.Sqrt(3) * CR.ReferenceVolt) + "," + dev[14] + "\r\n";

                                //if (CR.NodeType == "Polyline")
                                //{
                                //    PSPDEV fl = new PSPDEV();
                                //    fl.SvgUID = tlVectorControl1.SVGDocument.SvgdataUid;
                                //    fl.Number = CR.FirstNode;
                                //    fl.Type = nodeType;
                                //    fl = (PSPDEV)Services.BaseService.GetObject("SelectPSPDEVByNumberAndSvgUIDAndType", CR);
                                //    dianLiuResult += dev[0] + "," + dev[1] + "," + dev[2] + "," + Convert.ToDouble(dev[3]) * 100 / (Math.Sqrt(3) * fl.ReferenceVolt) + "," + dev[4] + "," + Convert.ToDouble(dev[5]) * 100 / (Math.Sqrt(3) * fl.ReferenceVolt) + "," + dev[6] + "," + Convert.ToDouble(dev[7]) * 100 / (Math.Sqrt(3) * fl.ReferenceVolt) + "," + dev[8] + "," +
                                //    Convert.ToDouble(dev[9]) * 100 / (Math.Sqrt(3) * fl.ReferenceVolt) + "," + dev[10] + "," + Convert.ToDouble(dev[11]) * 100 / (Math.Sqrt(3) * fl.ReferenceVolt) + dev[12] + "," + Convert.ToDouble(dev[13]) * 100 / (Math.Sqrt(3) * fl.ReferenceVolt) + "," + dev[14] + "\r\n";
                                //}
                                //else
                                //{
                                //    dianLiuResult += dev[0] + "," + dev[1] + "," + dev[2] + "," + Convert.ToDouble(dev[3]) * 100 / (Math.Sqrt(3) * CR.ReferenceVolt) + "," + dev[4] + "," + Convert.ToDouble(dev[5]) * 100 / (Math.Sqrt(3) * CR.ReferenceVolt) + "," + dev[6] + "," + Convert.ToDouble(dev[7]) * 100 / (Math.Sqrt(3) * CR.ReferenceVolt) + "," + dev[8] + "," +
                                //    Convert.ToDouble(dev[9]) * 100 / (Math.Sqrt(3) * CR.ReferenceVolt) + "," + dev[10] + "," + Convert.ToDouble(dev[11]) * 100 / (Math.Sqrt(3) * CR.ReferenceVolt) + dev[12] + "," + Convert.ToDouble(dev[13]) * 100 / (Math.Sqrt(3) * CR.ReferenceVolt) + "," + dev[14] + "\r\n";
                                //}

                            }

                            strLineDL = readLineDL.ReadLine();
                            j++;
                        }
                        readLineDL.Close();
                        if (baobiao == 1)
                        {
                             wFrom.ShowText += "\r\n形成报表!" + System.DateTime.Now.ToString();
                            if (File.Exists(System.Windows.Forms.Application.StartupPath + "\\result.csv"))
                            {
                                File.Delete(System.Windows.Forms.Application.StartupPath + "\\result.csv");
                            }
                            FileStream tempGU = new FileStream((System.Windows.Forms.Application.StartupPath + "\\result.csv"), FileMode.OpenOrCreate);
                            StreamWriter strGU = new StreamWriter(tempGU, Encoding.GetEncoding("GB2312"));
                            strGU.Write(duanResult);
                            strGU.Close();
                            if (File.Exists(System.Windows.Forms.Application.StartupPath + "\\result1.csv"))
                            {
                                File.Delete(System.Windows.Forms.Application.StartupPath + "\\result1.csv");
                            }
                            FileStream tempDY = new FileStream((System.Windows.Forms.Application.StartupPath + "\\result1.csv"), FileMode.OpenOrCreate);
                            StreamWriter strDY = new StreamWriter(tempDY, Encoding.GetEncoding("GB2312"));
                            strDY.Write(dianYaResult);
                            strDY.Close();
                            if (File.Exists(System.Windows.Forms.Application.StartupPath + "\\result2.csv"))
                            {
                                File.Delete(System.Windows.Forms.Application.StartupPath + "\\result2.csv");
                            }
                            FileStream tempDL = new FileStream((System.Windows.Forms.Application.StartupPath + "\\result2.csv"), FileMode.OpenOrCreate);
                            StreamWriter strDL = new StreamWriter(tempDL, Encoding.GetEncoding("GB2312"));
                            strDL.Write(dianLiuResult);
                            strDL.Close();
                            if (File.Exists(System.Windows.Forms.Application.StartupPath + "\\" + tlVectorControl1.SVGDocument.FileName + "短路计算结果.xls"))
                            {
                                File.Delete(System.Windows.Forms.Application.StartupPath + "\\" + tlVectorControl1.SVGDocument.FileName + "短路计算结果.xls");
                            }

                            Excel.Application ex;
                            Excel.Worksheet xSheet;
                            Excel.Application result1;
                            Excel.Application result2;
                            Excel.Worksheet tempSheet;
                            Excel.Worksheet tempSheet1;
                            Excel.Worksheet newWorksheet;
                            Excel.Worksheet newWorkSheet1;

                            object oMissing = System.Reflection.Missing.Value;
                            ex = new Excel.Application();
                            ex.Application.Workbooks.Add(System.Windows.Forms.Application.StartupPath + "\\result.csv");

                            xSheet = (Excel.Worksheet)ex.Worksheets[1];
                            ex.Worksheets.Add(System.Reflection.Missing.Value, xSheet, 1, System.Reflection.Missing.Value);
                            xSheet = (Excel.Worksheet)ex.Worksheets[2];
                            ex.Worksheets.Add(System.Reflection.Missing.Value, xSheet, 1, System.Reflection.Missing.Value);
                            xSheet = (Excel.Worksheet)ex.Worksheets[1];
                            result1 = new Excel.Application();
                            result1.Application.Workbooks.Add(System.Windows.Forms.Application.StartupPath + "\\result1.csv");
                            result2 = new Excel.Application();
                            result2.Application.Workbooks.Add(System.Windows.Forms.Application.StartupPath + "\\result2.csv");
                            tempSheet = (Excel.Worksheet)result1.Worksheets.get_Item(1);
                            tempSheet1 = (Excel.Worksheet)result2.Worksheets.get_Item(1);
                            newWorksheet = (Excel.Worksheet)ex.Worksheets.get_Item(2);
                            newWorkSheet1 = (Excel.Worksheet)ex.Worksheets.get_Item(3);
                            newWorksheet.Name = "母线电压";
                            newWorkSheet1.Name = "支路电流";
                            xSheet.Name = "短路电流";
                            ex.Visible = true;

                            tempSheet.Cells.Select();
                            tempSheet.Cells.Copy(System.Reflection.Missing.Value);
                            newWorksheet.Paste(System.Reflection.Missing.Value, System.Reflection.Missing.Value);
                            tempSheet1.Cells.Select();
                            tempSheet1.Cells.Copy(System.Reflection.Missing.Value);
                            newWorkSheet1.Paste(System.Reflection.Missing.Value, System.Reflection.Missing.Value);

                            xSheet.UsedRange.Font.Name = "楷体_GB2312";
                            newWorksheet.UsedRange.Font.Name = "楷体_GB2312";
                            newWorkSheet1.UsedRange.Font.Name = "楷体_GB2312";

                            xSheet.get_Range(xSheet.Cells[1, 1], xSheet.Cells[1, 3]).MergeCells = true;
                            xSheet.get_Range(xSheet.Cells[1, 1], xSheet.Cells[1, 1]).Font.Size = 20;
                            xSheet.get_Range(xSheet.Cells[1, 1], xSheet.Cells[1, 1]).Font.Name = "黑体";
                            xSheet.get_Range(xSheet.Cells[1, 1], xSheet.Cells[1, 1]).HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;
                            xSheet.get_Range(xSheet.Cells[3, 1], xSheet.Cells[3, 3]).Interior.ColorIndex = 45;
                            xSheet.get_Range(xSheet.Cells[4, 1], xSheet.Cells[xSheet.UsedRange.Rows.Count, 1]).Interior.ColorIndex = 6;
                            xSheet.get_Range(xSheet.Cells[4, 3], xSheet.Cells[xSheet.UsedRange.Rows.Count, 13]).NumberFormat = "0.0000_ ";

                            newWorksheet.get_Range(newWorksheet.Cells[1, 1], newWorksheet.Cells[1, 14]).MergeCells = true;
                            newWorksheet.get_Range(newWorksheet.Cells[1, 1], newWorksheet.Cells[1, 1]).Font.Size = 20;
                            newWorksheet.get_Range(newWorksheet.Cells[1, 1], newWorksheet.Cells[1, 1]).Font.Name = "黑体";
                            newWorksheet.get_Range(newWorksheet.Cells[1, 1], newWorksheet.Cells[1, 1]).HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;
                            newWorksheet.get_Range(newWorksheet.Cells[3, 1], newWorksheet.Cells[3, 14]).Interior.ColorIndex = 45;
                            newWorksheet.get_Range(newWorksheet.Cells[4, 1], newWorksheet.Cells[newWorksheet.UsedRange.Rows.Count, 1]).Interior.ColorIndex = 6;
                            newWorksheet.get_Range(newWorksheet.Cells[4, 3], newWorksheet.Cells[newWorksheet.UsedRange.Rows.Count, 13]).NumberFormat = "0.0000_ ";

                            newWorkSheet1.get_Range(newWorkSheet1.Cells[1, 1], newWorkSheet1.Cells[1, 15]).MergeCells = true;
                            newWorkSheet1.get_Range(newWorkSheet1.Cells[1, 1], newWorkSheet1.Cells[1, 1]).Font.Size = 20;
                            newWorkSheet1.get_Range(newWorkSheet1.Cells[1, 1], newWorkSheet1.Cells[1, 1]).Font.Name = "黑体";
                            newWorkSheet1.get_Range(newWorkSheet1.Cells[1, 1], newWorkSheet1.Cells[1, 1]).HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;
                            newWorkSheet1.get_Range(newWorkSheet1.Cells[3, 1], newWorkSheet1.Cells[3, 15]).Interior.ColorIndex = 45;
                            newWorkSheet1.get_Range(newWorkSheet1.Cells[4, 1], newWorkSheet1.Cells[newWorkSheet1.UsedRange.Rows.Count, 1]).Interior.ColorIndex = 6;
                            newWorkSheet1.get_Range(newWorkSheet1.Cells[4, 2], newWorkSheet1.Cells[newWorkSheet1.UsedRange.Rows.Count, 2]).Interior.ColorIndex = 6;
                            newWorkSheet1.get_Range(newWorkSheet1.Cells[4, 4], newWorkSheet1.Cells[newWorkSheet1.UsedRange.Rows.Count, 14]).NumberFormat = "0.0000_ ";
                            xSheet.Rows.AutoFit();
                            xSheet.Columns.AutoFit();
                            newWorksheet.Rows.AutoFit();
                            newWorksheet.Columns.AutoFit();
                            newWorkSheet1.Rows.AutoFit();
                            newWorkSheet1.Columns.AutoFit();
                            newWorksheet.SaveAs(System.Windows.Forms.Application.StartupPath + "\\" + tlVectorControl1.SVGDocument.FileName + "短路计算结果.xls", Excel.XlFileFormat.xlXMLSpreadsheet, null, null, false, false, false, null, null, null);
                            System.Windows.Forms.Clipboard.Clear();
                            result1.Workbooks.Close();
                            result1.Quit();
                            result2.Workbooks.Close();
                            result2.Quit();
                             wFrom.ShowText += "\r\n结果成功!" + System.DateTime.Now.ToString();
                        }

                    }
                    catch (Exception e1)
                    {
                         wFrom.ShowText += "\r\n计算失败,短路数据有问题,请调整后再计算!" + System.DateTime.Now.ToString();
                       // MessageBox.Show("短路数据有问题,请调整后再计算!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                }
            }
            else if (e.ClickedItem.Text == "区域打印")
            {
                setTJhide();
                PrintHelper ph = new PrintHelper(tlVectorControl1, mapview);
                ph.blshowflag = false;
                frmPrinter dlg = new frmPrinter();
                dlg.printHelper = ph;
                dlg.ShowDialog();
                setTJshow();
                return;
            }
        }
Пример #2
0
        //根据操作的次序依次显示
        private void Allshortcheck(int caozuoi)
        {
            if (!addcheck())
            {
                return;
            }
            ElectricShorti elc = new ElectricShorti();
            if (!elc.CheckDL(tlVectorControl1.SVGDocument.SvgdataUid,this.ProjectUID,100))
            {
                return;
            }
            Dictionary<int, double> nodeshorti = new Dictionary<int, double>();      //记录母线有没有进行过短路
            KeyValuePair<int, double> maxshorti = new KeyValuePair<int, double>(); //取出短路的最大短路电流

            string con = ",PSP_ELCDEVICE WHERE PSPDEV.SUID = PSP_ELCDEVICE.DeviceSUID AND PSP_ELCDEVICE.ProjectSUID = '" +tlVectorControl1.SVGDocument.SvgdataUid + "'AND PSPDEV.type='01'AND PSPDEV.KSwitchStatus = '0' order by PSPDEV.number";
            PSPDEV pspDev = new PSPDEV();
            IList list1 = Services.BaseService.GetList("SelectPSPDEVByCondition", con);

            con = " ,PSP_ELCDEVICE WHERE PSPDEV.SUID = PSP_ELCDEVICE.DeviceSUID AND PSP_ELCDEVICE.ProjectSUID = '" + tlVectorControl1.SVGDocument.SvgdataUid+ "'AND PSPDEV.type='05'AND PSPDEV.KSwitchStatus = '0'order by PSPDEV.number";
            PSPDEV psp = new PSPDEV();
            IList list2 = Services.BaseService.GetList("SelectPSPDEVByCondition", con);

            shortbuscir shortCutCal = new shortbuscir(0);
            for (int i = 0; i < list1.Count; i++)
            {
                pspDev = list1[i] as PSPDEV;
                bool flag = false;
                string dlr = null;
                for (int j = 0; j < list2.Count; j++)
                {
                    psp = list2[j] as PSPDEV;
                    con = " WHERE Name='" + psp.ISwitch + "' AND ProjectID = '" +this.ProjectUID + "'" + "AND Type='07'";
                    IList listiswitch = Services.BaseService.GetList("SelectPSPDEVByCondition", con);
                    con = " WHERE Name='" + psp.JSwitch + "' AND ProjectID = '" + this.ProjectUID + "'" + "AND Type='07'";
                    IList listjswitch = Services.BaseService.GetList("SelectPSPDEVByCondition", con);
                    PSPDEV pspiswitch = (PSPDEV)listiswitch[0];
                    PSPDEV pspjswitch = (PSPDEV)listjswitch[0];

                    if (pspDev.Number == psp.FirstNode && pspiswitch.KSwitchStatus == "0" && pspjswitch.KSwitchStatus == "0")
                    {

                        flag = true;
                        dlr = "0" + " " + psp.FirstNode + " " + psp.LastNode + " " + psp.Number + " " + "0 " + " " + "0 ";

                    }
                    if (pspDev.Number == psp.LastNode && pspiswitch.KSwitchStatus == "0" && pspjswitch.KSwitchStatus == "0")
                    {
                        flag = true;
                        dlr = "0" + " " + psp.FirstNode + " " + psp.LastNode + " " + psp.Number + " " + "1 " + " " + "0 ";
                    }
                    if (File.Exists(System.Windows.Forms.Application.StartupPath + "\\fault.txt"))
                    {
                        File.Delete(System.Windows.Forms.Application.StartupPath + "\\fault.txt");
                    }
                    if (flag)
                    {
                        FileStream VK = new FileStream((System.Windows.Forms.Application.StartupPath + "\\fault.txt"), FileMode.OpenOrCreate);
                        StreamWriter str11 = new StreamWriter(VK);
                        str11.Write(dlr);
                        str11.Close();
                        if (File.Exists(System.Windows.Forms.Application.StartupPath + "\\ShortcuitI.txt"))
                        {
                            File.Delete(System.Windows.Forms.Application.StartupPath + "\\ShortcuitI.txt");
                        }
                       // shortcir shortCutCal = new shortcir();
                        shortCutCal.Show_shortcir(0,0,1);
                        //bool matrixflag=true;                //用来判断是否导纳矩阵的逆矩阵是否存在逆矩阵

                        string matrixstr = null;
                        if (File.Exists(System.Windows.Forms.Application.StartupPath + "\\Zmatrixcheck.txt"))
                        {
                            matrixstr = "正序导纳矩阵";
                            // matrixflag = false;
                        }

                        if (File.Exists(System.Windows.Forms.Application.StartupPath + "\\Fmatrixcheck.txt"))
                        {
                            // matrixflag = false;
                            matrixstr += "负序导纳矩阵";
                        }

                        if (File.Exists(System.Windows.Forms.Application.StartupPath + "\\Lmatrixcheck.txt"))
                        {
                            //matrixflag = false;
                            matrixstr += "零序导纳矩阵";
                        }
                        if (matrixstr != null)
                        {
                            MessageBox.Show(matrixstr + "不存在逆矩阵,请调整参数后再进行计算!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                            return;
                        }
                        if (File.Exists(System.Windows.Forms.Application.StartupPath + "\\ShortcuitI.txt"))
                        {
                        }
                        else
                        {
                            return;
                        }

                        FileStream shorcuit = new FileStream(System.Windows.Forms.Application.StartupPath + "\\ShortcuitI.txt", FileMode.Open);
                        StreamReader readLineGU = new StreamReader(shorcuit, System.Text.Encoding.Default);
                        string strLineGU;
                        string[] arrayGU;
                        char[] charSplitGU = new char[] { ' ' };

                        while ((strLineGU = readLineGU.ReadLine()) != null)
                        {

                            while ((strLineGU = readLineGU.ReadLine()) != null)
                            {
                                arrayGU = strLineGU.Split(charSplitGU);
                                string[] shorti = new string[4];
                                shorti.Initialize();
                                int m = 0;
                                foreach (string str in arrayGU)
                                {

                                    if (str != "")
                                    {

                                        shorti[m++] = str.ToString();

                                    }
                                }

                                nodeshorti[pspDev.Number] = Convert.ToDouble(shorti[3]) * 100 / (Math.Sqrt(3) * pspDev.ReferenceVolt);
                            }
                        }
                        readLineGU.Close();
                        break;                 //跳出本循环 进行母线的另外一个母线短路

                    }
                    if (!flag)
                        continue;
                    //写入错误中

                }
                //如果在一般线路中没有则在两绕组中进行
                if (!flag)
                {
                    con = " ,PSP_ELCDEVICE WHERE PSPDEV.SUID = PSP_ELCDEVICE.DeviceSUID AND PSP_ELCDEVICE.ProjectSUID = '" + tlVectorControl1.SVGDocument.SvgdataUid + "'AND PSPDEV.type='02'AND PSPDEV.KSwitchStatus = '0' order by PSPDEV.number";
                    IList list3 = Services.BaseService.GetList("SelectPSPDEVByCondition", con);
                    for (int j = 0; j < list3.Count; j++)
                    {
                        dlr = null;
                        psp = list3[j] as PSPDEV;
                        PSPDEV devFirst = new PSPDEV();

                        con = " WHERE Name='" + psp.IName + "' AND ProjectID = '" + this.ProjectUID + "'" + "AND Type='01'";
                        devFirst = (PSPDEV)Services.BaseService.GetObject("SelectPSPDEVByCondition", con);
                        PSPDEV devLast = new PSPDEV();

                        con = " WHERE Name='" + psp.JName + "' AND ProjectID = '" + this.ProjectUID + "'" + "AND Type='01'";
                        devLast = (PSPDEV)Services.BaseService.GetObject("SelectPSPDEVByCondition", con);
                        con = " WHERE Name='" + psp.ISwitch + "' AND ProjectID = '" + this.ProjectUID + "'" + "AND Type='07'";
                        IList listiswitch = Services.BaseService.GetList("SelectPSPDEVByCondition", con);
                        con = " WHERE Name='" + psp.JSwitch + "' AND ProjectID = '" + this.ProjectUID + "'" + "AND Type='07'";
                        IList listjswitch = Services.BaseService.GetList("SelectPSPDEVByCondition", con);
                        PSPDEV pspiswitch = (PSPDEV)listiswitch[0];
                        PSPDEV pspjswitch = (PSPDEV)listjswitch[0];
                        if (pspDev.Number == devFirst.Number && pspiswitch.KSwitchStatus == "0" && pspjswitch.KSwitchStatus == "0")
                        {

                            flag = true;
                            dlr = "0" + " " + devFirst.Number + " " + devLast.Number + " " + psp.Number + " " + "0" + " " + "0";

                        }
                        if (pspDev.Number == devLast.Number && pspiswitch.KSwitchStatus == "0" && pspjswitch.KSwitchStatus == "0")
                        {
                            flag = true;
                            dlr = "0" + " " + devFirst.Number + " " + devLast.Number + " " + psp.Number + " " + "1" + " " + "0";
                        }
                        if (flag)
                        {
                            FileStream VK = new FileStream((System.Windows.Forms.Application.StartupPath + "\\fault.txt"), FileMode.OpenOrCreate);
                            StreamWriter str11 = new StreamWriter(VK);
                            str11.Write(dlr);
                            str11.Close();
                            if (File.Exists(System.Windows.Forms.Application.StartupPath + "\\ShortcuitI.txt"))
                            {
                                File.Delete(System.Windows.Forms.Application.StartupPath + "\\ShortcuitI.txt");
                            }
                           // shortcir shortCutCal = new shortcir();
                            shortCutCal.Show_shortcir(0,0,1);
                            //bool matrixflag=true;                //用来判断是否导纳矩阵的逆矩阵是否存在逆矩阵

                            string matrixstr = null;
                            if (File.Exists(System.Windows.Forms.Application.StartupPath + "\\Zmatrixcheck.txt"))
                            {
                                matrixstr = "正序导纳矩阵";
                                // matrixflag = false;
                            }

                            if (File.Exists(System.Windows.Forms.Application.StartupPath + "\\Fmatrixcheck.txt"))
                            {
                                // matrixflag = false;
                                matrixstr += "负序导纳矩阵";
                            }

                            if (File.Exists(System.Windows.Forms.Application.StartupPath + "\\Lmatrixcheck.txt"))
                            {
                                //matrixflag = false;
                                matrixstr += "零序导纳矩阵";
                            }
                            if (matrixstr != null)
                            {
                                MessageBox.Show(matrixstr + "不存在逆矩阵,请调整参数后再进行计算!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                                return;
                            }
                            if (File.Exists(System.Windows.Forms.Application.StartupPath + "\\ShortcuitI.txt"))
                            {
                            }
                            else
                            {
                                return;
                            }

                            FileStream shorcuit = new FileStream(System.Windows.Forms.Application.StartupPath + "\\ShortcuitI.txt", FileMode.Open);
                            StreamReader readLineGU = new StreamReader(shorcuit, System.Text.Encoding.Default);
                            string strLineGU;
                            string[] arrayGU;
                            char[] charSplitGU = new char[] { ' ' };

                            while ((strLineGU = readLineGU.ReadLine()) != null)
                            {

                                while ((strLineGU = readLineGU.ReadLine()) != null)
                                {
                                    arrayGU = strLineGU.Split(charSplitGU);
                                    string[] shorti = new string[4];
                                    shorti.Initialize();
                                    int m = 0;
                                    foreach (string str in arrayGU)
                                    {

                                        if (str != "")
                                        {

                                            shorti[m++] = str.ToString();

                                        }
                                    }

                                    nodeshorti[pspDev.Number] = Convert.ToDouble(shorti[3]) * 100 / (Math.Sqrt(3) * pspDev.ReferenceVolt);
                                }
                            }
                            readLineGU.Close();
                            break;                 //跳出本循环 进行母线的另外一个母线短路

                        }
                        if (!flag)
                            continue;
                        //写入错误中

                    }
                }
                if (!flag)
                {
                    con = " ,PSP_ELCDEVICE WHERE PSPDEV.SUID = PSP_ELCDEVICE.DeviceSUID AND PSP_ELCDEVICE.ProjectSUID = '" + tlVectorControl1.SVGDocument.SvgdataUid + "'AND PSPDEV.type='03'AND PSPDEV.KSwitchStatus = '0' order by PSPDEV.number";
                    IList list4 = Services.BaseService.GetList("SelectPSPDEVByCondition", con);
                    for (int j = 0; j < list4.Count; j++)
                    {
                        dlr = null;
                        psp = list4[j] as PSPDEV;
                        PSPDEV devINode = new PSPDEV();

                        con = " WHERE Name='" + psp.IName + "' AND ProjectID = '" + this.ProjectUID+ "'" + "AND Type='01'";
                        devINode = (PSPDEV)Services.BaseService.GetObject("SelectPSPDEVByCondition", con);
                        PSPDEV devJNode = new PSPDEV();

                        con = " WHERE Name='" + psp.JName + "' AND ProjectID = '" + this.ProjectUID + "'" + "AND Type='01'";
                        devJNode = (PSPDEV)Services.BaseService.GetObject("SelectPSPDEVByCondition", con);
                        PSPDEV devKNode = new PSPDEV();

                        con = " WHERE Name='" + psp.KName + "' AND ProjectID = '" + this.ProjectUID + "'" + "AND Type='01'";
                        devKNode = (PSPDEV)Services.BaseService.GetObject("SelectPSPDEVByCondition", con);

                        con = " WHERE Name='" + psp.ISwitch + "' AND ProjectID = '" + this.ProjectUID + "'" + "AND Type='07'";
                        IList listiswitch = Services.BaseService.GetList("SelectPSPDEVByCondition", con);
                        con = " WHERE Name='" + psp.JSwitch + "' AND ProjectID = '" + this.ProjectUID + "'" + "AND Type='07'";
                        IList listjswitch = Services.BaseService.GetList("SelectPSPDEVByCondition", con);
                        con = " WHERE Name='" + psp.HuganLine1 + "' AND ProjectID = '" + this.ProjectUID + "'" + "AND Type='07'";
                        IList listkswitch = Services.BaseService.GetList("SelectPSPDEVByCondition", con);
                        PSPDEV pspiswitch = (PSPDEV)listiswitch[0];
                        PSPDEV pspjswitch = (PSPDEV)listjswitch[0];
                        PSPDEV pspkswitch = (PSPDEV)listkswitch[0];
                        if (pspDev.Number == devINode.Number && pspiswitch.KSwitchStatus == "0" && pspjswitch.KSwitchStatus == "0" && pspkswitch.KSwitchStatus == "0")
                        {

                            flag = true;
                            dlr = "0" + " " + devINode.Number + " " + devJNode.Number + " " + psp.Number + " " + "0" + " " + "0";

                        }
                        if (pspDev.Number == devJNode.Number && pspiswitch.KSwitchStatus == "0" && pspjswitch.KSwitchStatus == "0" && pspkswitch.KSwitchStatus == "0")
                        {
                            flag = true;
                            dlr = "0" + " " + devINode.Number + " " + devJNode.Number + " " + psp.Number + " " + "1" + " " + "0";
                        }
                        if (pspDev.Number == devKNode.Number && pspiswitch.KSwitchStatus == "0" && pspjswitch.KSwitchStatus == "0" && pspkswitch.KSwitchStatus == "0")
                        {
                            flag = true;
                            dlr = "0" + " " + devINode.Number + " " + devKNode.Number + " " + psp.Number + " " + "1" + " " + "0";
                        }

                        if (flag)
                        {
                            FileStream VK = new FileStream((System.Windows.Forms.Application.StartupPath + "\\fault.txt"), FileMode.OpenOrCreate);
                            StreamWriter str11 = new StreamWriter(VK);
                            str11.Write(dlr);
                            str11.Close();
                            if (File.Exists(System.Windows.Forms.Application.StartupPath + "\\ShortcuitI.txt"))
                            {
                                File.Delete(System.Windows.Forms.Application.StartupPath + "\\ShortcuitI.txt");
                            }
                          //  shortcir shortCutCal = new shortcir();
                            shortCutCal.Show_shortcir(0,0,1);
                            //bool matrixflag=true;                //用来判断是否导纳矩阵的逆矩阵是否存在逆矩阵

                            string matrixstr = null;
                            if (File.Exists(System.Windows.Forms.Application.StartupPath + "\\Zmatrixcheck.txt"))
                            {
                                matrixstr = "正序导纳矩阵";
                                // matrixflag = false;
                            }

                            if (File.Exists(System.Windows.Forms.Application.StartupPath + "\\Fmatrixcheck.txt"))
                            {
                                // matrixflag = false;
                                matrixstr += "负序导纳矩阵";
                            }

                            if (File.Exists(System.Windows.Forms.Application.StartupPath + "\\Lmatrixcheck.txt"))
                            {
                                //matrixflag = false;
                                matrixstr += "零序导纳矩阵";
                            }
                            if (matrixstr != null)
                            {
                                MessageBox.Show(matrixstr + "不存在逆矩阵,请调整参数后再进行计算!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                                return;
                            }
                            if (File.Exists(System.Windows.Forms.Application.StartupPath + "\\ShortcuitI.txt"))
                            {
                            }
                            else
                            {
                                return;
                            }

                            FileStream shorcuit = new FileStream(System.Windows.Forms.Application.StartupPath + "\\ShortcuitI.txt", FileMode.Open);
                            StreamReader readLineGU = new StreamReader(shorcuit, System.Text.Encoding.Default);
                            string strLineGU;
                            string[] arrayGU;
                            char[] charSplitGU = new char[] { ' ' };

                            while ((strLineGU = readLineGU.ReadLine()) != null)
                            {

                                while ((strLineGU = readLineGU.ReadLine()) != null)
                                {
                                    arrayGU = strLineGU.Split(charSplitGU);
                                    string[] shorti = new string[4];
                                    shorti.Initialize();
                                    int m = 0;
                                    foreach (string str in arrayGU)
                                    {

                                        if (str != "")
                                        {

                                            shorti[m++] = str.ToString();

                                        }
                                    }

                                    nodeshorti[pspDev.Number] = Convert.ToDouble(shorti[3]) * 100 / (Math.Sqrt(3) * pspDev.ReferenceVolt);
                                }
                            }
                            readLineGU.Close();
                            break;                 //跳出本循环 进行母线的另外一个母线短路

                        }
                        if (!flag)
                            continue;
                        //写入错误中

                    }
                }
            }
            //找出短路电流最大的值

            //maxshorti.Key = 1;
            //maxshorti.Value = nodeshorti[1];
            foreach (KeyValuePair<int, double> keyvalue in nodeshorti)
            {
                if (keyvalue.Value > maxshorti.Value)
                {
                    maxshorti = keyvalue;
                }
            }

            //首先取出断路器 判断它的母线在不在 如果不在就将其删除 然后与额定电压进行比较
            con = " ,PSP_ELCDEVICE WHERE PSPDEV.SUID = PSP_ELCDEVICE.DeviceSUID AND PSP_ELCDEVICE.ProjectSUID = '" + tlVectorControl1.SVGDocument.SvgdataUid + "'AND PSPDEV.type='06'AND PSPDEV.KSwitchStatus = '0' order by PSPDEV.number";
            IList list = Services.BaseService.GetList("SelectPSPDEVByCondition", con);

            for (int i = 0; i < list.Count; i++)
            {
                bool flag = false;
                pspDev = list[i] as PSPDEV;
                for (int j = 0; j < list1.Count; j++)
                {
                    psp = list1[j] as PSPDEV;
                    if (pspDev.IName == psp.Name)
                        flag = true;

                }
                if (!flag)
                {
                    Services.BaseService.Delete<PSPDEV>(pspDev);
                }
            }
            con = " ,PSP_ELCDEVICE WHERE PSPDEV.SUID = PSP_ELCDEVICE.DeviceSUID AND PSP_ELCDEVICE.ProjectSUID = '" + tlVectorControl1.SVGDocument.SvgdataUid + "'AND PSPDEV.type='06'AND PSPDEV.KSwitchStatus = '0' order by PSPDEV.number";
            list = Services.BaseService.GetList("SelectPSPDEVByCondition", con);
            for (int i = 0; i < list.Count; i++)
            {
                pspDev = list[i] as PSPDEV;
                pspDev.HuganLine3 = "";
                pspDev.KName = "";
                if (pspDev.KSwitchStatus == "0")
                {
                    pspDev.OutP = maxshorti.Value;
                    if (maxshorti.Value > pspDev.HuganTQ1)
                    {
                        pspDev.HuganLine3 = "不合格";
                    }
                    else
                    {
                        pspDev.HuganLine3 = "合格";
                    }
                    pspDev.HuganLine4 = "";
                    if (pspDev.HuganLine3 == "合格")
                    {
                        pspDev.KName = "合格";
                    }
                    else
                        pspDev.KName = "不合格";
                }

                Services.BaseService.Update<PSPDEV>(pspDev);
            }
            switch (caozuoi)
            {
                case 1:           //全部短路检验

                    {
                        pspDev.SvgUID = tlVectorControl1.SVGDocument.SvgdataUid;
                        pspDev.Type = "06";
                         DlqiCheckform dlqicheckform = new DlqiCheckform(pspDev);
                        dlqicheckform.getusercltr.gridView.GroupPanelText = "断路器开断能力评估初步结果表";
                        dlqicheckform.ShowDialog();
                        break;
                    }
                case 2:             //最大短路检验
                    {
                        con = " ,PSP_ELCDEVICE WHERE PSPDEV.SUID = PSP_ELCDEVICE.DeviceSUID AND PSP_ELCDEVICE.ProjectSUID = '" + tlVectorControl1.SVGDocument.SvgdataUid + "'AND PSPDEV.type='06'AND PSPDEV.KSwitchStatus = '0' order by PSPDEV.number";
                        list = Services.BaseService.GetList("SelectPSPDEVByCondition", con);
                        for (int i = 0; i < list.Count; i++)
                        {
                            pspDev = list[i] as PSPDEV;
                            if (pspDev.KSwitchStatus == "0")
                            {
                               con = ",PSP_ELCDEVICE WHERE PSPDEV.SUID = PSP_ELCDEVICE.DeviceSUID AND PSP_ELCDEVICE.ProjectSUID = '" + tlVectorControl1.SVGDocument.SvgdataUid+ "'AND PSPDEV.type='01'AND PSPDEV.KSwitchStatus = '0'AND PSPDEV.Name='"+pspDev.IName+"'";

                               IList list4 = Services.BaseService.GetList("SelectPSPDEVByCondition", con);
                                psp = list4[0] as PSPDEV;
                                try
                                {
                                    pspDev.OutQ = nodeshorti[psp.Number];
                                    if (pspDev.HuganLine3 == "不合格")
                                    {
                                        if (pspDev.OutQ <= pspDev.HuganTQ1)
                                        {
                                            pspDev.HuganLine3 = "合格";
                                        }
                                    }
                                    pspDev.HuganLine4 = "";

                                    if (pspDev.HuganLine3 == "合格")
                                    {
                                        pspDev.KName = "合格";
                                    }
                                    else
                                        pspDev.KName = "不合格";
                                    Services.BaseService.Update<PSPDEV>(pspDev);
                                }
                                catch (System.Exception ex)
                                {
                                    MessageBox.Show("短路数据不完整");
                                }
                            }

                        }
                        pspDev.SvgUID = tlVectorControl1.SVGDocument.SvgdataUid;
                        pspDev.Type = "06";
                        DlqiCheckform dlqicheckform = new DlqiCheckform(pspDev);
                        dlqicheckform.getusercltr.gridView.GroupPanelText = "最大短路校核结果表";
                        dlqicheckform.ShowDialog();
                        break;
                    }
                case 3:          //断路器直流检验

                    {
                        con = " ,PSP_ELCDEVICE WHERE PSPDEV.SUID = PSP_ELCDEVICE.DeviceSUID AND PSP_ELCDEVICE.ProjectSUID = '" + tlVectorControl1.SVGDocument.SvgdataUid + "'AND PSPDEV.type='06'AND PSPDEV.KSwitchStatus = '0' order by PSPDEV.number";
                        list = Services.BaseService.GetList("SelectPSPDEVByCondition", con);
                        for (int i = 0; i < list.Count; i++)
                        {
                            pspDev = list[i] as PSPDEV;
                            if (pspDev.KSwitchStatus == "0")
                            {
                                double tx = 0.0;
                                if (pspDev.HuganLine2 == "自脱扣断路器")
                                {
                                    tx = 0.0;
                                }
                                else if (pspDev.HuganLine2 == "辅助动力脱扣的断路器")
                                {
                                    tx = 10;
                                }
                                pspDev.HuganTQ4 = (pspDev.OutP / pspDev.HuganTQ1) * Math.Exp((-pspDev.HuganTQ2 - tx) / 45) * 100;
                                pspDev.HuganTQ5 = (pspDev.OutQ / pspDev.HuganTQ1) * Math.Exp((-pspDev.HuganTQ2 - tx) / 45) * 100;
                                if (pspDev.HuganTQ3 >= pspDev.HuganTQ4)
                                {
                                    pspDev.HuganLine4 = "合格";
                                }
                                if (pspDev.HuganTQ3 >= pspDev.HuganTQ5)
                                {
                                    pspDev.HuganLine4 = "合格";
                                }
                                else if (pspDev.HuganTQ3 < pspDev.HuganTQ5)
                                {
                                    pspDev.HuganLine4 = "不合格";
                                }
                                if (pspDev.HuganLine3 == "合格" && pspDev.HuganLine4 == "合格")
                                {
                                    pspDev.KName = "合格";
                                }
                                else
                                {
                                    pspDev.KName = "不合格";
                                }

                                Services.BaseService.Update<PSPDEV>(pspDev);
                            }

                        }
                        pspDev.SvgUID = tlVectorControl1.SVGDocument.SvgdataUid;
                        pspDev.Type = "06";
                        DlqiCheckform dlqicheckform = new DlqiCheckform(pspDev);
                        dlqicheckform.getusercltr.gridView.GroupPanelText = "断路器开端能力最终评估表";
                        dlqicheckform.ShowDialog();
                        break;
                    }

            }
        }