IsVisible() public method

public IsVisible ( Point point ) : bool
point Point
return bool
Esempio n. 1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="rgn"></param>
        /// <param name="pt1"></param>
        /// <param name="pt2"></param>
        /// <param name="ptIntercept"></param>
        /// <returns></returns>
        public static bool GetBoundaryIntercept(System.Drawing.Region rgn, PointF pt1, PointF pt2, out PointF ptIntercept)
        {
            bool hasIntercept = false;

            ptIntercept = new PointF(0, 0);

            bool pt1InRegion = rgn.IsVisible(pt1);
            bool pt2InRegion = rgn.IsVisible(pt2);

            if ((pt1InRegion && !pt2InRegion) || (pt2InRegion && !pt1InRegion))
            {
                PointF ptInside;
                PointF ptOutside;

                if (pt1InRegion)
                {
                    ptInside  = pt1;
                    ptOutside = pt2;
                }
                else
                {
                    ptInside  = pt2;
                    ptOutside = pt1;
                }

                RectangleF[] rcScans = rgn.GetRegionScans(new Matrix());
                RectangleF   rcCur;
                PointF[]     ptsIntersect;
                int          numIntersects;
                double       minDist = double.MaxValue;
                double       curDist;
                PointF       curPt;
                int          rcIdx;
                int          ptIdx;

                for (rcIdx = 0; rcIdx < rcScans.Length; rcIdx++)
                {
                    rcCur         = rcScans[rcIdx];
                    numIntersects = Geometry.GetLineIntersect(ptOutside, ptInside, rcCur, out ptsIntersect);

                    for (ptIdx = 0; ptIdx < numIntersects; ptIdx++)
                    {
                        curPt   = ptsIntersect[ptIdx];
                        curDist = Geometry.PointDistance(ptOutside, curPt);
                        if (curDist < minDist)
                        {
                            ptIntercept  = curPt;
                            minDist      = curDist;
                            hasIntercept = true;
                        }
                    }
                }
            }

            return(hasIntercept);
        }
Esempio n. 2
0
        public override void MouseDown(object sender, MouseEventArgs e) {

            if (e.Button == MouseButtons.Left) {
                isMouseDown = true;
                if (CurrentMarker == null && isBegin) {
                    GMapMarker marker = createMarker(rMap1.FromLocalToLatLng(e.X, e.Y));
                }
            } else if (e.Button == MouseButtons.Right) {
                if (isBegin) {
                    //统计设备
                    if(routes.Markers.Count<2)return;

                    List<PS_gt> gtlist = new List<PS_gt>();
                    List<sd_gt> sdlist = new List<sd_gt>();
                    int bl = 1000000;
                    using (GraphicsPath gp = new System.Drawing.Drawing2D.GraphicsPath()) {
                        List<PointF> list = new List<PointF>();
                        foreach (PointLatLng pll in routes.Polygons[0].Points) {
                            list.Add(new PointF((float)pll.Lng * bl, (float)pll.Lat * bl));

                        }
                        gp.AddPolygon(list.ToArray());
                        Region r = new Region(gp);
                        
                        foreach (GMapOverlay lay in this.rMap1.Overlays) {
                            if (!lay.IsVisibile|| !(lay is LineOverlay)) continue;
                            LineOverlay lo = lay as LineOverlay;
                            foreach (GMapMarker m in lo.Markers) {
                                if (r.IsVisible(new PointF((float)m.Position.Lng * bl, (float)m.Position.Lat * bl))) {
                                    if(m.Tag is PS_gt)
                                        gtlist.Add(m.Tag as PS_gt);
                                    else if(m.Tag is sd_gt)
                                    {
                                        sdlist.Add(m.Tag as sd_gt);
                                    }
                                }

                            }
                        }
                    }
                    if (gtlist.Count>sdlist.Count)
                    {
                        frmQytj dlg = new frmQytj(gtlist);
                        dlg.StartPosition = FormStartPosition.CenterScreen;

                        dlg.Show(this.rMap1);
                    }
                    else
                    {
                        frmSdtj dlg = new frmSdtj(sdlist);
                        dlg.StartPosition = FormStartPosition.CenterScreen;

                        dlg.Show(this.rMap1);
                    }
                   
                   
                }
                isBegin = false;
            }
        }
        public void GraphicsIsVisibleRectangleF(Graphics g)
        {
            Pen myPen = new Pen(Color.FromArgb(196, 0xC3, 0xC9, 0xCF), (float)0.6);
            SolidBrush myBrush = new SolidBrush(Color.FromArgb(127, 0xDD, 0xDD, 0xF0));

            // Create the first rectangle and draw it to the screen in blue.
            g.DrawRectangle(myPen, regionRect1);
            g.FillRectangle (myBrush, regionRect1);

            // Create the second rectangle and draw it to the screen in red.
            myPen.Color = Color.FromArgb(196, 0xF9, 0xBE, 0xA6);
            myBrush.Color = Color.FromArgb(127, 0xFF, 0xE0, 0xE0);

            g.DrawRectangle(myPen, Rectangle.Round(regionRectF2));
            g.FillRectangle (myBrush, Rectangle.Round (regionRectF2));

            // Create a region using the first rectangle.
            Region myRegion = new Region(regionRect1);

            // Determine if myRect is contained in the region.
            bool contained = myRegion.IsVisible(regionRect2);

            // Display the result.
            Font myFont = new Font("Arial", 8);
            SolidBrush txtBrush = new SolidBrush(Color.Black);
            g.DrawString("contained = " + contained.ToString(),
                myFont,
                txtBrush,
                new PointF(regionRectF2.Right + 10, regionRectF2.Top));

            regionRect1.Y += 120;
            regionRectF2.Y += 120;
            regionRectF2.X += 41;

            myPen.Color = Color.FromArgb (196, 0xC3, 0xC9, 0xCF);
            myBrush.Color = Color.FromArgb(127, 0xDD, 0xDD, 0xF0);

            // Create the first rectangle and draw it to the screen in blue.
            g.DrawRectangle(myPen, regionRect1);
            g.FillRectangle (myBrush, regionRect1);

            // Create the second rectangle and draw it to the screen in red.
            myPen.Color = Color.FromArgb(196, 0xF9, 0xBE, 0xA6);
            myBrush.Color = Color.FromArgb(127, 0xFF, 0xE0, 0xE0);

            g.DrawRectangle(myPen, Rectangle.Round(regionRectF2));
            g.FillRectangle (myBrush, Rectangle.Round (regionRectF2));

            // Create a region using the first rectangle.
            myRegion = new Region(regionRect1);

            // Determine if myRect is contained in the region.
            contained = myRegion.IsVisible(regionRectF2);

            // Display the result.
            g.DrawString("contained = " + contained.ToString(),
                myFont,
                txtBrush,
                new PointF(regionRectF2.Right + 10, regionRectF2.Top));
        }
Esempio n. 4
0
        /// <summary>
        /// Проверяет попадание точки в фигуру
        /// </summary>
        /// <param name="p"></param>
        /// <returns>-1 - нет попадания, 0 - есть попадание, 1 и более - номер опорной точки в которую попал курсор</returns>
        public override int ContainsPoint(Point p)
        {
            if (this.IsSelected)
            {
                for (int i = 1; i <= KeyPoints.Length; i++)
                {
                    if (PaintHelper.GetKeyPointWhiteRect(KeyPoints[i - 1]).Contains(p))
                        return i;
                }
            }

            var path = new GraphicsPath();
            Pen pen = new Pen(DrawSettings.Color, DrawSettings.Thickness);

            Rectangle rect = NormalRectToSquare(PaintHelper.NormalizeRect(StartPoint, EndPoint));
            path.AddEllipse(rect);
            path.Widen(pen);

            Region region = new Region(path);
            pen.Dispose();
            if(region.IsVisible(p))
                return 0;

            Point center = new Point(rect.X + rect.Width / 2, rect.Y + rect.Height / 2);
            double radius = rect.Width / 2;
            float dx = p.X - center.X;
            float dy = p.Y - center.Y;
            if (Math.Sqrt(dx * dx + dy * dy) <= radius)
                return 0;
            return -1;
        }
 /// <summary>
 /// Tests whether the mouse hits this shape
 /// </summary>
 /// <param name="p"></param>
 /// <returns></returns>
 public override bool Hit(System.Drawing.Point p)
 {
     GraphicsPath path = new GraphicsPath();
     path.AddEllipse(Rectangle);
     using (Region region = new Region(path))
     {
         return region.IsVisible(p);
     }
 }
Esempio n. 6
0
        /// <summary>
        /// Tests the region of the line decorator to determine if the given point is
        /// contained by the region.
        /// </summary>
        /// <param name="ptTest">Point to test</param>
        /// <param name="fSlop">Amount of padding to add for hit test</param>
        /// <returns>true if the point is within the region; otherwise false</returns>
        /// <remarks>
        /// <seealso cref="Syncfusion.Windows.Forms.Diagram.LineDecorator.CreateRegion"/>
        /// </remarks>
        bool IHitTestRegion.ContainsPoint(PointF ptTest, float fSlop)
        {
            bool hit = false;

            System.Drawing.Region rgn = this.CreateRegion(fSlop);
            if (rgn != null)
            {
                hit = rgn.IsVisible(ptTest);
            }
            return(hit);
        }
Esempio n. 7
0
        /// <summary>
        /// Returns whether the given rectangle, in screen coordinates, is visible in any screen's
        /// working area (the monitor's visible area minus task bars and docked windows)</summary>
        /// <param name="rect">Rectangle</param>
        /// <returns>Whether the given rectangle is visible</returns>
        public static bool IsOnScreen(Rectangle rect)
        {
            using (Region region = new Region())
            {
                region.MakeEmpty();
                foreach (Screen screen in Screen.AllScreens)
                    region.Union(screen.WorkingArea);

                rect.Inflate(-Margin, -Margin);
                return region.IsVisible(rect);
            }
        }
Esempio n. 8
0
        // Returns a percentage of the ErrorArea circle trespassing on the zone.
        // If anyone knows calculus better than me I'd welcome you to clean up this function =)
        public float TrespassArea(Point3D pntLocation, float flErrorRadius) {
            float returnPercentage = 0.0F;
            var errorArea = (float) (flErrorRadius * flErrorRadius * Math.PI);

            var gpLocationError = new GraphicsPath();
            gpLocationError.AddEllipse(new RectangleF(pntLocation.X - flErrorRadius, pntLocation.Y - flErrorRadius, flErrorRadius * 2, flErrorRadius * 2));
            gpLocationError.CloseAllFigures();

            var regZone = new Region(ZoneGraphicsPath);
            regZone.Intersect(gpLocationError);
            RectangleF[] scans = regZone.GetRegionScans(new Matrix());
            var recIntersection = new Rectangle(int.MaxValue, int.MaxValue, 0, 0);

            int iPixelCount = 0;

            if (scans.Length > 0) {
                for (int i = 0; i < scans.Length; i++) {
                    recIntersection.X = scans[i].X < recIntersection.X ? (int) scans[i].X : recIntersection.X;
                    recIntersection.Y = scans[i].Y < recIntersection.Y ? (int) scans[i].Y : recIntersection.Y;

                    recIntersection.Width = scans[i].Right > recIntersection.Right ? (int) scans[i].Right - recIntersection.X : recIntersection.Width;
                    recIntersection.Height = scans[i].Bottom > recIntersection.Bottom ? (int) scans[i].Bottom - recIntersection.Y : recIntersection.Height;
                }

                var pntVisible = new Point(recIntersection.X, recIntersection.Y);

                for (pntVisible.X = recIntersection.X; pntVisible.X <= recIntersection.Right; pntVisible.X++) {
                    for (pntVisible.Y = recIntersection.Y; pntVisible.Y <= recIntersection.Bottom; pntVisible.Y++) {
                        if (regZone.IsVisible(pntVisible) == true) {
                            iPixelCount++;
                        }
                    }
                }
            }

            returnPercentage = iPixelCount / errorArea;

            // Accounts for low error when using this method. (98.4% should be 100%)
            // but using regZone.GetRegionScans is slightly lossy.
            if (returnPercentage > 0.0F) {
                returnPercentage = (float) Math.Min(1.0F, returnPercentage + 0.02);
            }

            return returnPercentage;
        }
Esempio n. 9
0
        private void DrawHorizontalComponent(int index, Graphics g, LiveSplitState state, float width, float height, Region clipRegion)
        {
            var component = VisibleComponents.ElementAt(index);
            var leftPadding = Math.Min(GetPaddingToLeft(index), component.PaddingLeft) / 2f;
            var rightPadding = Math.Min(GetPaddingToRight(index), component.PaddingRight) / 2f;
            g.IntersectClip(new RectangleF(leftPadding, 0, component.HorizontalWidth - leftPadding - rightPadding, height));

            var scale = g.Transform.Elements.First();
            var separatorOffset = component.VerticalHeight * scale < 3 ? 1 : 0;

            if (clipRegion.IsVisible(new RectangleF(
                -separatorOffset + g.Transform.OffsetX - leftPadding * scale,
                g.Transform.OffsetY,
                separatorOffset * 2f + scale * (component.HorizontalWidth + rightPadding),
                height)))
                component.DrawHorizontal(g, state, height, clipRegion);
            g.TranslateTransform(component.HorizontalWidth - rightPadding * 2f, 0.0f);
        }
Esempio n. 10
0
        private void DrawVerticalComponent(int index, Graphics g, LiveSplitState state, float width, float height, Region clipRegion)
        {
            var component = VisibleComponents.ElementAt(index);
            var topPadding = Math.Min(GetPaddingAbove(index), component.PaddingTop) / 2f;
            var bottomPadding = Math.Min(GetPaddingBelow(index), component.PaddingBottom) / 2f;
            g.IntersectClip(new RectangleF(0, topPadding, width, component.VerticalHeight - topPadding - bottomPadding));

            var scale = g.Transform.Elements.First();
            var separatorOffset = component.VerticalHeight * scale < 3 ? 1 : 0;

            if (clipRegion.IsVisible(new RectangleF(
                g.Transform.OffsetX,
                -separatorOffset + g.Transform.OffsetY - topPadding * scale,
                width,
                separatorOffset * 2f + scale * (component.VerticalHeight + bottomPadding))))
                component.DrawVertical(g, state, width, clipRegion);
            g.TranslateTransform(0.0f, component.VerticalHeight - bottomPadding * 2f);
        }
Esempio n. 11
0
        /// <summary>
        /// Проверяет попадание точки в фигуру
        /// </summary>
        /// <param name="p"></param>
        /// <returns>-1 - нет попадания, 0 - есть попадание, 1 и более - номер опорной точки в которую попал курсор</returns>
        public int ContainsPoint(Point p)
        {
            if (this.IsSelected)
            {
                for (int i = 1; i <= KeyPoints.Length; i++)
                {
                    if (PaintHelper.GetKeyPointWhiteRect(KeyPoints[i - 1]).Contains(p))
                        return i;
                }
            }

            var path = new GraphicsPath();
            Pen pen = new Pen(DrawSettings.Color, DrawSettings.Thickness);
            path.AddCurve(points.ToArray());
            path.Widen(pen);
            Region region = new Region(path);
            pen.Dispose();
            if (region.IsVisible(p))
                return 0;
            return -1;
        }
Esempio n. 12
0
        /// <summary>
        /// Проверяет попадание точки в фигуру
        /// </summary>
        /// <param name="p"></param>
        /// <returns>-1 - нет попадания, 0 - есть попадание, 1 и более - номер опорной точки в которую попал курсор</returns>
        public int ContainsPoint(Point p)
        {
            if (this.IsSelected)
            {
                for (int i = 1; i <= KeyPoints.Length; i++)
                {
                    if (PaintHelper.GetKeyPointWhiteRect(KeyPoints[i - 1]).Contains(p))
                        return i;
                }
            }

            var path = new GraphicsPath();
            Pen pen = new Pen(DrawSettings.Color, DrawSettings.Thickness);
            Rectangle rect = PaintHelper.NormalizeRect(startPoint, endPoint);
            Point p1 = new Point(rect.X, rect.Y + rect.Height);
            Point p2 = new Point(rect.X + rect.Width / 2, rect.Y);
            Point p3 = new Point(rect.X + rect.Width, rect.Y + rect.Height);
            path.AddPolygon(new Point[] { p1, p2, p3 });
            path.Widen(pen);
            Region region = new Region(path);
            pen.Dispose();
            if (region.IsVisible(p))
                return 0;

            if (IsPointInTriangle(p, p1, p2, p3))
                return 0;
            return -1;
        }
Esempio n. 13
0
        // While still in design this function draws directly to the component.
        // Once design is complete it will paint to a image, then the image painted to the component for a little speed boost.
        private void DrawKillCircles(Graphics g, Kill kKill, KillDisplayDetails kddKillDetails) {

            PointF pntLineStart = new PointF((float)kKill.KillerLocation.X, (float)kKill.KillerLocation.Y);
            PointF pntLineEnd = new PointF((float)kKill.VictimLocation.X, (float)kKill.VictimLocation.Y);
            PointF pntLineHalfway = new PointF(pntLineStart.X - (pntLineStart.X - pntLineEnd.X) / 2, pntLineStart.Y - (pntLineStart.Y - pntLineEnd.Y) / 2 - 3);
            PointF pntLineHalfway2 = new PointF(pntLineStart.X - (pntLineStart.X - pntLineEnd.X) / 2, pntLineStart.Y - (pntLineStart.Y - pntLineEnd.Y) / 2 - 4);

            LinearGradientBrush killBrush = this.GetKillColour(this.KillColours, kKill, kddKillDetails);

            GraphicsPath gpKillCircles = new GraphicsPath();
            gpKillCircles.AddEllipse(new Rectangle(kKill.KillerLocation.X - this.ErrorRadius, kKill.KillerLocation.Y - this.ErrorRadius, this.ErrorRadius * 2, this.ErrorRadius * 2));
            gpKillCircles.AddEllipse(new Rectangle(kKill.VictimLocation.X - this.ErrorRadius, kKill.VictimLocation.Y - this.ErrorRadius, this.ErrorRadius * 2, this.ErrorRadius * 2));
            gpKillCircles.FillMode = FillMode.Winding;

            //GraphicsPath gpKill = new GraphicsPath();
            GraphicsPath gpKill = (GraphicsPath)gpKillCircles.Clone();
            gpKill.AddClosedCurve(new PointF[] { pntLineStart, pntLineHalfway, pntLineEnd, pntLineHalfway2 });
            //gpKill.AddEllipse(new Rectangle(kKill.KillerLocation.X - this.ErrorRadius, kKill.KillerLocation.Y - this.ErrorRadius, this.ErrorRadius * 2, this.ErrorRadius * 2));
            //gpKill.AddEllipse(new Rectangle(kKill.VictimLocation.X - this.ErrorRadius, kKill.VictimLocation.Y - this.ErrorRadius, this.ErrorRadius * 2, this.ErrorRadius * 2));
            gpKill.FillMode = FillMode.Winding;

            GraphicsPath gpKillOutline = (GraphicsPath)gpKill.Clone();
            //GraphicsPath gpKillOutline = new GraphicsPath(gpKill.PathPoints, gpKill.PathTypes);
            Matrix gpKillMatrix = new Matrix();
            gpKillOutline.Widen(this.m_pTwoWidth, gpKillMatrix, 0.01F);

            Region reKillOutline = new Region(gpKillOutline);
            reKillOutline.Exclude(gpKill);
            reKillOutline.Exclude(gpKillCircles);

            Region reKill = new Region(gpKill);
            reKill.Union(gpKillCircles);

            //Region reKillDropshadow = new Region(gpKill);
            //reKillDropshadow.Union(gpKillCircles);
            //reKillDropshadow.Union(reKillOutline);
            //reKillDropshadow.Translate(0.4F, 1.0F);

            if (reKill.IsVisible(this.ClientPointToGame(this.PointToClient(Cursor.Position))) == true) {
                kddKillDetails.IsMouseOver = true;
                kddKillDetails.Opacity = 1.0F;
            }
            else {
                kddKillDetails.IsMouseOver = false;
            }

            //g.FillRegion(new SolidBrush(Color.FromArgb((int)(64.0F * kddKillDetails.Opacity), Color.Black)), reKillDropshadow);
            g.FillRegion(killBrush, reKill);
            g.FillRegion(new SolidBrush(Color.FromArgb((int)(255.0F * kddKillDetails.Opacity), Color.Black)), reKillOutline);

            if (this.LoadedMapImagePack != null) {

                Image imgDeathIcon = null;
                if (kKill.Headshot == true) {
                    imgDeathIcon = this.LoadedMapImagePack.CompensateImageRotation(this.LoadedMapImagePack.GetIcon("Headshot"));
                }
                else {
                    imgDeathIcon = this.LoadedMapImagePack.CompensateImageRotation(this.LoadedMapImagePack.GetIcon("Death"));
                }

                if (imgDeathIcon != null) {
                    ColorMatrix colormatrix = new ColorMatrix();
                    colormatrix.Matrix00 = 1.0F;
                    colormatrix.Matrix11 = 1.0F;
                    colormatrix.Matrix22 = 1.0F;
                    colormatrix.Matrix33 = kddKillDetails.Opacity;
                    colormatrix.Matrix44 = 1.0F;
                    ImageAttributes imgattr = new ImageAttributes();
                    imgattr.SetColorMatrix(colormatrix);

                    Rectangle destRect = new Rectangle((int)pntLineEnd.X - 12, (int)pntLineEnd.Y - 12, 24, 24);
                    g.DrawImage(imgDeathIcon, destRect, 0, 0, imgDeathIcon.Width, imgDeathIcon.Height, GraphicsUnit.Pixel, imgattr);

                    imgattr.Dispose();
                    imgDeathIcon.Dispose();
                }
            }

            this.DrawMapText(g, kKill.Victim.SoldierName, kKill.VictimLocation, 16, kddKillDetails.Opacity);
            this.DrawMapText(g, kKill.Killer.SoldierName, kKill.KillerLocation, 16, kddKillDetails.Opacity);

            killBrush.Dispose();
            gpKillCircles.Dispose();
            gpKill.Dispose();
            gpKillOutline.Dispose();
            gpKillMatrix.Dispose();
            reKill.Dispose();
        }
Esempio n. 14
0
        private void dotNetBarManager1_ItemClick(object sender, EventArgs e)
        {
            FileStream dh;
            StreamReader readLine;
            char[] charSplit;
            string strLine;
            string[] array1;
            string output = null;
            string[] array2;

            string strLine2;

            char[] charSplit2 = new char[] { ' ' };
            FileStream op;
            StreamWriter str1;
            FileStream dh2;
            StreamReader readLine2;
            Excel.Application ex;
            Excel.Worksheet xSheet;
            Excel.Application result1;
            Excel.Worksheet tempSheet;
            Excel.Worksheet newWorksheet;
            DevComponents.DotNetBar.ButtonItem btItem = sender as DevComponents.DotNetBar.ButtonItem;
            //Layer layer1 = (Layer)LayerBox.ComboBoxEx.SelectedItem;
            if (btItem != null)
            {
                switch (btItem.Name)
                {
                    #region 文件操作
                    case "mNew":
                        try
                        {
                            //{
                            XmlNodeList list = tlVectorControl1.SVGDocument.SelectNodes("svg/*[@layer='" + tlVectorControl1.SVGDocument.CurrentLayer.ID + "']");
                            for (int i = 0; i < list.Count; i++)
                            {
                                SvgElement ele = (SvgElement)list[i];
                                if (ele.LocalName == "polyline")
                                {
                                    PSPDEV _dev = new PSPDEV();
                                    _dev.EleID = ele.ID;
                                    _dev.SvgUID = tlVectorControl1.SVGDocument.CurrentLayer.ID;
                                    _dev = (PSPDEV)Services.BaseService.GetObject("SelectPSPDEVBySvgUIDandEleID", _dev);

                                    if (_dev == null)
                                    {
                                        LineInfo _pl = new LineInfo();
                                        _pl.EleID = ele.ID;
                                        _pl.SvgUID = tlVectorControl1.SVGDocument.CurrentLayer.ID;
                                        _pl = (LineInfo)Services.BaseService.GetObject("SelectLineInfoByEleID", _pl);
                                        if (_pl != null)
                                        {
                                            PSPDEV pspDev = new PSPDEV();
                                            pspDev.SUID = Guid.NewGuid().ToString();
                                            pspDev.EleID = ele.GetAttribute("id");
                                            pspDev.SvgUID = tlVectorControl1.SVGDocument.CurrentLayer.ID;
                                            pspDev.Number = -1;
                                            pspDev.FirstNode = -1;
                                            pspDev.LastNode = -1;
                                            pspDev.Type = "Polyline";
                                            pspDev.Lable = "支路";
                                            pspDev.Name = _pl.LineName;
                                            pspDev.LineLength = Convert.ToDouble(_pl.Length);
                                            pspDev.LineLevel = _pl.Voltage;
                                            pspDev.LineType = _pl.LineType;
                                            pspDev.LineStatus = "运行";
                                            Services.BaseService.Create<PSPDEV>(pspDev);
                                        }
                                    }
                                }
                                if (ele.LocalName == "use")
                                {
                                    PSPDEV _dev = new PSPDEV();
                                    _dev.EleID = ele.ID;
                                    _dev.SvgUID = tlVectorControl1.SVGDocument.CurrentLayer.ID;
                                    _dev = (PSPDEV)Services.BaseService.GetObject("SelectPSPDEVBySvgUIDandEleID", _dev);

                                    if (_dev == null)
                                    {
                                        substation _pl = new substation();
                                        _pl.EleID = ele.ID;
                                        _pl.SvgUID = tlVectorControl1.SVGDocument.CurrentLayer.ID;
                                        _pl = (substation)Services.BaseService.GetObject("SelectsubstationByEleID", _pl);
                                        if (_pl != null)
                                        {
                                            PSPDEV pspDev = new PSPDEV();
                                            pspDev.SUID = Guid.NewGuid().ToString();
                                            pspDev.EleID = ele.GetAttribute("id");
                                            pspDev.SvgUID = tlVectorControl1.SVGDocument.CurrentLayer.ID;
                                            pspDev.Number = -1;
                                            pspDev.FirstNode = -1;
                                            pspDev.LastNode = -1;
                                            pspDev.Type = "Use";
                                            pspDev.Lable = "变电站";
                                            pspDev.Name = _pl.EleName;
                                            pspDev.VoltR = Convert.ToDouble(_pl.ObligateField1);
                                            pspDev.Burthen = _pl.Number;
                                            Services.BaseService.Create<PSPDEV>(pspDev);
                                        }
                                    }

                                }

                            }

                            PSPDEV pppp = new PSPDEV();
                            pppp.Type = "power";
                            pppp.SvgUID = tlVectorControl1.SVGDocument.SvgdataUid;
                            IList listpp = Services.BaseService.GetList("SelectPSPDEVBySvgUIDAndType", pppp);
                            if (listpp == null || listpp.Count == 0)
                            {

                                if (MessageBox.Show("新建的潮流计算,需要设置基准值,是否立即设置??", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Information) == DialogResult.OK)
                                {
                                    PSPDEV pspDev2 = new PSPDEV();

                                    //pspDev2.SUID = Guid.NewGuid().ToString();
                                    pspDev2.Type = "Power";
                                    pspDev2.SvgUID = tlVectorControl1.SVGDocument.SvgdataUid;
                                    pspDev2 = (PSPDEV)Services.BaseService.GetObject("SelectPSPDEVBySvgUIDAndType", pspDev2);
                                    if (pspDev2 != null)
                                    {
                                    }
                                    else
                                    {
                                        pspDev2 = new PSPDEV();
                                        pspDev2.SUID = Guid.NewGuid().ToString();
                                        pspDev2.Type = "Power";
                                        pspDev2.SvgUID = tlVectorControl1.SVGDocument.SvgdataUid;
                                        Services.BaseService.Create<PSPDEV>(pspDev2);
                                    }
                                    powerf pp = new powerf(pspDev2);
                                    if (pp.ShowDialog() == DialogResult.OK)
                                    {
                                        pspDev2.PowerFactor = Convert.ToDouble(pp.powerfactor);
                                        pspDev2.StandardVolt = Convert.ToDouble(pp.standardvolt);
                                        pspDev2.StandardCurrent = Convert.ToDouble(pp.standardcurrent);
                                        pspDev2.BigP = Convert.ToDouble(pp.bigP);
                                        Services.BaseService.Update<PSPDEV>(pspDev2);
                                        //PSPDEV voltall = new PSPDEV();
                                        //voltall.Type = "Use";
                                        //voltall.Lable = "电厂";
                                        //voltall.SvgUID = tlVectorControl1.SVGDocument.CurrentLayer.ID;
                                        //IList allvolt = Services.BaseService.GetList("SelectPSPDEVBySvgUIDandLableandType", voltall);
                                        //foreach (PSPDEV dev in allvolt)
                                        //{
                                        //    dev.OutP = Convert.ToDouble(dev.Burthen) * pspDev2.BigP;
                                        //    //dev.InPutP=dev.Burthen*pspDev2.BigP;
                                        //    dev.OutQ = dev.OutP * Math.Tan(Math.Acos(pspDev2.PowerFactor));
                                        //    Services.BaseService.Update<PSPDEV>(dev);
                                        //}
                                        //voltall.Lable = "变电站";
                                        //allvolt = Services.BaseService.GetList("SelectPSPDEVBySvgUIDandLableandType", voltall);
                                        //foreach (PSPDEV dev in allvolt)
                                        //{
                                        //    dev.InPutP = Convert.ToDouble(dev.Burthen) * pspDev2.BigP;
                                        //    //dev.InPutP=dev.Burthen*pspDev2.BigP;
                                        //    dev.InPutQ = dev.InPutP * pspDev2.BigP * Math.Tan(Math.Acos(pspDev2.PowerFactor));
                                        //    Services.BaseService.Update<PSPDEV>(dev);
                                        //}

                                    }
                                    //powerf pf=new powerf()
                                }
                            }
                            if (!Check())
                            {
                                return;
                            }
                            NIULA pspniula = new NIULA();
                            pspniula.CurrentCal();

                            if (File.Exists(System.Windows.Forms.Application.StartupPath + "\\" + tlVectorControl1.SVGDocument.FileName + "牛拉法计算结果.xls"))
                            {
                                File.Delete(System.Windows.Forms.Application.StartupPath + "\\" + tlVectorControl1.SVGDocument.FileName + "牛拉法计算结果.xls");
                                //OpenRead(System.Windows.Forms.Application.StartupPath + "\\" + tlVectorControl1.SVGDocument.FileName + ".xls");
                            }

                            double yinzi = 0, capability = 0, volt = 0, current = 0, Rad_to_Deg = 57.29577951;
                            PSPDEV benchmark = new PSPDEV();
                            benchmark.Type = "power";
                            benchmark.SvgUID = tlVectorControl1.SVGDocument.SvgdataUid;
                            IList list3 = Services.BaseService.GetList("SelectPSPDEVBySvgUIDAndType", benchmark);
                            if (list3 == null)
                            {
                                MessageBox.Show("请设置基准后再进行计算!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                                return;
                            }
                            foreach (PSPDEV dev in list3)
                            {
                                yinzi = Convert.ToDouble(dev.PowerFactor);
                                capability = Convert.ToDouble(dev.StandardCurrent);
                                volt = Convert.ToDouble(dev.StandardVolt);
                                if (dev.PowerFactor == 0)
                                {
                                    yinzi = 1;
                                }
                                if (dev.StandardCurrent == 0)
                                {
                                    capability = 1;
                                }
                                if (dev.StandardVolt == 0)
                                {
                                    volt = 1;
                                }
                                current = capability / (Math.Sqrt(3) * volt);

                            }
                            if (File.Exists(System.Windows.Forms.Application.StartupPath + "\\PF1.txt"))
                            {
                            }
                            else
                            {
                                return;
                            }
                            dh = new FileStream(System.Windows.Forms.Application.StartupPath + "\\PF1.txt", FileMode.Open);
                            readLine = new StreamReader(dh);

                            charSplit = new char[] { ' ' };
                            strLine = readLine.ReadLine();

                            output += ("全网母线(发电、负荷)结果报表 " + "\r\n" + "\r\n");
                            output += ("单位:kA\\kV\\MW\\Mvar" + "\r\n" + "\r\n");
                            output += ("母线名" + "," + "电压幅值" + "," + "电压相角" + "," + "有功发电" + "," + "无功发电" + "," + "有功负荷" + "," + "无功负荷" + "," + "越限标志" + "," + "过载标志" + "\r\n");
                            int count = 0;
                            while (strLine != null && strLine != "")
                            {
                                array1 = strLine.Split(charSplit);
                                string[] dev = new string[9];
                                dev.Initialize();
                                int i = 0;
                                count++;
                                PSPDEV CR = new PSPDEV();
                                CR.SvgUID = tlVectorControl1.SVGDocument.CurrentLayer.ID;

                                foreach (string str in array1)
                                {
                                    if (str != "")
                                    {
                                        if (str != "NaN")
                                        {
                                            dev[i++] = Convert.ToDouble(str).ToString();
                                        }
                                        else
                                        {
                                            dev[i++] = str;
                                        }

                                    }

                                }

                                CR.Number = Convert.ToInt32(dev[0]);
                                CR.Type = "Use";
                                CR = (PSPDEV)Services.BaseService.GetObject("SelectPSPDEVByNumberAndSvgUIDAndType", CR);
                                double vTemp = Convert.ToDouble(dev[1]) * volt;
                                double vTemp1 = volt * 95 / 100;
                                double vTemp2 = volt * 105 / 100;

                                if (vTemp >= vTemp1 && vTemp <= vTemp2)
                                {
                                    dev[5] = "0";
                                }
                                else
                                {
                                    dev[5] = "1";
                                }
                                if (Convert.ToDouble(dev[3]) * capability > Convert.ToDouble(CR.Burthen))
                                {
                                    dev[6] = "1";
                                }
                                else
                                {
                                    dev[6] = "0";
                                }

                                if (Convert.ToDouble(dev[3]) < 0)
                                {
                                    output += CR.Name + "," + (Convert.ToDouble(dev[1]) * volt).ToString() + "," + (Convert.ToDouble(dev[2]) * Rad_to_Deg).ToString() + "," + "0" + "," + "0" + "," + (Convert.ToDouble(dev[3]) * capability).ToString() + "," + (Convert.ToDouble(dev[4]) * capability).ToString() + "," + dev[5] + "," + dev[6] + "\r\n";
                                }
                                else
                                {
                                    output += CR.Name + "," + (Convert.ToDouble(dev[1]) * volt).ToString() + "," + (Convert.ToDouble(dev[2]) * Rad_to_Deg).ToString() + "," + (Convert.ToDouble(dev[3]) * capability).ToString() + "," + (Convert.ToDouble(dev[4]) * capability).ToString() + "," + "0" + "," + "0" + "," + dev[5] + "," + dev[6] + "\r\n";
                                }
                                strLine = readLine.ReadLine();
                            }
                            PSPDEV ct = new PSPDEV();
                            ct.SvgUID = tlVectorControl1.SVGDocument.CurrentLayer.ID;
                            ct.Type = "Use";
                            IList cont = Services.BaseService.GetList("SelectPSPDEVBySvgUIDAndType", ct);
                            if (count < cont.Count)
                            {
                                MessageBox.Show("请进行潮流计算后再查看结果!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                                readLine.Close();
                                return;

                            }
                            readLine.Close();
                            if (File.Exists(System.Windows.Forms.Application.StartupPath + "\\result.csv"))
                            {
                                File.Delete(System.Windows.Forms.Application.StartupPath + "\\result.csv");
                            }
                            op = new FileStream((System.Windows.Forms.Application.StartupPath + "\\result.csv"), FileMode.OpenOrCreate);
                            str1 = new StreamWriter(op, Encoding.GetEncoding("GB2312"));
                            str1.Write(output);
                            str1.Close();

                            if (File.Exists(System.Windows.Forms.Application.StartupPath + "\\DH1.txt"))
                            {
                            }
                            else
                            {
                                return;
                            }
                            if (File.Exists(System.Windows.Forms.Application.StartupPath + "\\IH1.txt"))
                            {
                            }
                            else
                            {
                                return;
                            }
                            dh = new FileStream(System.Windows.Forms.Application.StartupPath + "\\DH1.txt", FileMode.Open);
                            dh2 = new FileStream(System.Windows.Forms.Application.StartupPath + "\\IH1.txt", FileMode.Open);
                            readLine2 = new StreamReader(dh2);
                            readLine = new StreamReader(dh);
                            charSplit = new char[] { ' ' };
                            strLine = readLine.ReadLine();
                            strLine2 = readLine2.ReadLine();

                            output = null;

                            output += ("全网交流线结果报表" + "\r\n" + "\r\n");
                            output += ("单位:kA\\kV\\MW\\Mvar" + "\r\n" + "\r\n");
                            output += ("支路名称" + "," + "支路有功" + "," + "支路无功" + "," + "有功损耗" + "," + "无功损耗" + "," + "电流幅值" + "," + "电流相角" + "," + "越限标志" + "," + "\r\n");
                            while (strLine != null && strLine2 != null && strLine != "" && strLine2 != "")
                            {
                                array1 = strLine.Split(charSplit);
                                array2 = strLine2.Split(charSplit2);

                                string[] dev = new string[20];
                                dev.Initialize();
                                int i = 0;
                                PSPDEV CR = new PSPDEV();
                                CR.SvgUID = tlVectorControl1.SVGDocument.CurrentLayer.ID;

                                foreach (string str in array1)
                                {
                                    if (str != "")
                                    {
                                        if (i == 0)
                                        {
                                            dev[i++] = str.ToString();
                                        }
                                        else
                                        {
                                            if (str != "NaN")
                                            {
                                                dev[i++] = Convert.ToDouble(str).ToString();
                                            }
                                            else
                                            {
                                                dev[i++] = str;
                                            }

                                        }
                                    }

                                }
                                i = 7;
                                for (int j = 3; j < 5; j++)
                                {
                                    if (array2[j] != "")
                                    {
                                        if (array2[j] != "NaN")
                                        {
                                            dev[i++] = Convert.ToDouble(array2[j]).ToString();
                                        }
                                        else
                                        {
                                            dev[i++] = array2[j];
                                        }
                                    }

                                }
                                CR.Name = dev[0];
                                CR.Type = "Polyline";
                                CR = (PSPDEV)Services.BaseService.GetObject("SelectPSPDEVByName", CR);

                                if (CR != null)
                                {
                                    if (Convert.ToDouble(dev[7]) * current * 1000 > CR.LineChange)
                                    {
                                        dev[11] = "1";
                                    }
                                    else
                                    {
                                        dev[11] = "0";
                                    }
                                    output += CR.Name + "," + (Convert.ToDouble(dev[3]) * capability).ToString() + "," + (Convert.ToDouble(dev[4]) * capability).ToString() + "," + (Convert.ToDouble(dev[5]) * capability).ToString() + "," + (Convert.ToDouble(dev[6]) * capability).ToString() + "," + (Convert.ToDouble(dev[7]) * current).ToString() + "," + (Convert.ToDouble(dev[8]) * Rad_to_Deg).ToString() + "," + dev[11] + "," + "\r\n";
                                }
                                else
                                {
                                    CR = new PSPDEV();
                                    CR.Name = dev[0];
                                    CR.Type = "TransformLine";
                                    CR.SvgUID = tlVectorControl1.SVGDocument.CurrentLayer.ID;
                                    CR = (PSPDEV)Services.BaseService.GetObject("SelectPSPDEVByName", CR);
                                    if (CR != null)
                                    {
                                        if (Convert.ToDouble(dev[7]) * current * 1000 > CR.LineChange)
                                        {
                                            dev[11] = "1";
                                        }
                                        else
                                        {
                                            dev[11] = "0";
                                        }
                                        output += CR.Name + "," + (Convert.ToDouble(dev[3]) * capability).ToString() + "," + (Convert.ToDouble(dev[4]) * capability).ToString() + "," + (Convert.ToDouble(dev[5]) * capability).ToString() + "," + (Convert.ToDouble(dev[6]) * capability).ToString() + "," + (Convert.ToDouble(dev[7]) * current).ToString() + "," + (Convert.ToDouble(dev[8]) * Rad_to_Deg).ToString() + "," + dev[11] + "," + "\r\n";
                                    }
                                }

                                strLine = readLine.ReadLine();
                                strLine2 = readLine2.ReadLine();
                            }
                            readLine.Close();
                            readLine2.Close();
                            if (File.Exists(System.Windows.Forms.Application.StartupPath + "\\result1.csv"))
                            {
                                File.Delete(System.Windows.Forms.Application.StartupPath + "\\result1.csv");
                            }
                            op = new FileStream((System.Windows.Forms.Application.StartupPath + "\\result1.csv"), FileMode.OpenOrCreate);
                            str1 = new StreamWriter(op, Encoding.GetEncoding("GB2312"));
                            str1.Write(output);
                            str1.Close();

                            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);

                            result1 = new Excel.Application();
                            result1.Application.Workbooks.Add(System.Windows.Forms.Application.StartupPath + "\\result1.csv");
                            tempSheet = (Excel.Worksheet)result1.Worksheets.get_Item(1);
                            newWorksheet = (Excel.Worksheet)ex.Worksheets.get_Item(2);
                            newWorksheet.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);
                            xSheet.Rows.AutoFit();
                            xSheet.Columns.AutoFit();
                            newWorksheet.Rows.AutoFit();
                            newWorksheet.Columns.AutoFit();
                            xSheet.get_Range(xSheet.Cells[1, 1], xSheet.Cells[1, 9]).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[5, 1], xSheet.Cells[5, 9]).Interior.ColorIndex = 45;
                            xSheet.get_Range(xSheet.Cells[6, 1], xSheet.Cells[xSheet.UsedRange.Rows.Count, 1]).Interior.ColorIndex = 6;
                            xSheet.get_Range(xSheet.Cells[6, 2], xSheet.Cells[xSheet.UsedRange.Rows.Count, 9]).NumberFormat = "0.0000_ ";
                            xSheet.get_Range(xSheet.Cells[3, 1], xSheet.Cells[xSheet.UsedRange.Rows.Count, 9]).Font.Name = "楷体_GB2312";

                            newWorksheet.get_Range(newWorksheet.Cells[1, 1], newWorksheet.Cells[1, 9]).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[5, 1], newWorksheet.Cells[5, 8]).Interior.ColorIndex = 45;
                            newWorksheet.get_Range(newWorksheet.Cells[6, 1], newWorksheet.Cells[newWorksheet.UsedRange.Rows.Count, 1]).Interior.ColorIndex = 6;
                            newWorksheet.get_Range(newWorksheet.Cells[6, 2], newWorksheet.Cells[newWorksheet.UsedRange.Rows.Count, 9]).NumberFormat = "0.0000_ ";
                            newWorksheet.get_Range(newWorksheet.Cells[3, 1], newWorksheet.Cells[newWorksheet.UsedRange.Rows.Count, 9]).Font.Name = "楷体_GB2312";

                            //op = new FileStream((System.Windows.Forms.Application.StartupPath + "\\fck.excel"), FileMode.OpenOrCreate);
                            //str1 = new StreamWriter(op, Encoding.GetEncoding("GB2312"));

                            string fn = tlVectorControl1.SVGDocument.FileName;

                            //result1.Save(System.Windows.Forms.Application.StartupPath + "\\fck.xls");

                            newWorksheet.SaveAs(System.Windows.Forms.Application.StartupPath + "\\" + fn + "牛拉法计算结果.xls", Excel.XlFileFormat.xlXMLSpreadsheet, null, null, false, false, false, null, null, null);

                            //str1.Write();
                            //op.Close();

                            System.Windows.Forms.Clipboard.Clear();
                            result1.Workbooks.Close();
                            result1.Quit();

                        }
                        catch (System.Exception e1)
                        {
                            MessageBox.Show("请进行潮流计算后再查看结果!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        }
                        //}
                        break;
                    case "mOpen":
                        if (tlVectorControl1.IsModified == true)
                        {
                            DialogResult a;
                            a = MessageBox.Show("图形已修改,是否保存?", "提示", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Information);

                            if (a == DialogResult.Yes)
                            {
                                Save();
                            }
                            else if (a == DialogResult.No)
                            {
                            }
                            else if (a == DialogResult.Cancel)
                            {
                                return;
                            }

                        }
                        Open();

                        break;
                    case "btExSymbol":
                        tlVectorControl1.ExportSymbol();
                        break;
                    case "mjxt"://导入接线图

                        string _svguid = ConfigurationSettings.AppSettings.Get("SvgID");
                        frmYear f = new frmYear();
                        f.uid = _svguid;
                        f.Show();
                        //ImportJxt jxt = new ImportJxt(tlVectorControl1);
                        //jxt.Import();
                        break;
                    case "mSave":
                        SaveAllLayer();

                        break;
                    case "mExit":
                        this.Close();
                        break;
                    case "bt1":
                        //InitTK();
                        break;
                    case "mFin":
                        frmGProList p = new frmGProList();
                        p.Show();
                        p.LoadData(LoadData());
                        break;
                    case "bt2":
                        break;
                    case "mPriSet":
                        this.tlVectorControl1.Operation = ToolOperation.InterEnclosurePrint;
                        break;
                    case "mPrint":
                        tlVectorControl1.Print();
                        break;
                    case "mImport":
                        ExportImage();
                        break;
                    case "mView":
                        //frmSvgView fView = new frmSvgView();
                        //fView.Open(tlVectorControl1.SVGDocument.CurrentLayer.ID);
                        //fView.Show();

                        break;

                    //case "mIncreaseView":
                    //    tlVectorControl1.Operation = ToolOperation.IncreaseView;
                    //    break;
                    case "mRzb":
                        frmRatio fRat = new frmRatio();
                        string viewRat = tlVectorControl1.SVGDocument.getRZBRatio();
                        if (viewRat != "")
                        {
                            fRat.InitData(viewRat);
                        }
                        if (fRat.ShowDialog() == DialogResult.OK)
                        {
                            viewRat = fRat.ViewScale;
                            tlVectorControl1.SVGDocument.setRZBRatio(viewRat);
                        }
                        break;

                    case "mAbout":

                        frmAbout frma = new frmAbout();
                        frma.ShowDialog();
                        break;

                    case "ButtonItem10":
                        int temp411 = 10;
                        frmConvert frmc = new frmConvert();
                        frmc.ShowDialog();
                        temp411++;
                        break;

                    //基础操作
                    case "mFreeTransform":
                        tlVectorControl1.Operation = ToolOperation.FreeTransform;

                        break;
                    case "mCJ":
                        tlVectorControl1.Operation = ToolOperation.PolyLine;
                        csOperation = CustomOperation.OP_MeasureDistance;
                        break;
                    //case "ButtonItem2":
                    //    break;
                    #endregion
                    #region 基础图元
                    case "mDecreaseView":
                        tlVectorControl1.Operation = ToolOperation.DecreaseView;

                        break;
                    case "mIncreaseView":

                        tlVectorControl1.Operation = ToolOperation.IncreaseView;
                        break;
                    case "mRoam":
                        tlVectorControl1.Operation = ToolOperation.Roam;

                        break;
                    case "mSelect":
                        tlVectorControl1.Operation = ToolOperation.Select;
                        break;
                    case "mSel":

                        tlVectorControl1.Operation = ToolOperation.FreeTransform;
                        break;
                    //case "mFreeTransform":
                    //    tlVectorControl1.Operation = ToolOperation.FreeTransform;

                    //    break;
                    case "mFreeLines"://锁套
                        tlVectorControl1.Operation = ToolOperation.FreeLines;

                        break;
                    case "mFreePath":
                        tlVectorControl1.Operation = ToolOperation.FreePath;

                        break;
                    case "mShapeTransform":
                        tlVectorControl1.Operation = ToolOperation.ShapeTransform;

                        break;
                    case "mAngleRectangle":
                        tlVectorControl1.Operation = ToolOperation.AngleRectangle;

                        break;
                    case "mEllipse":
                        tlVectorControl1.Operation = ToolOperation.Ellipse;

                        break;
                    case "mLine":
                        tlVectorControl1.Operation = ToolOperation.ConnectLine_Polyline;

                        break;
                    case "mPolyline":
                        tlVectorControl1.Operation = ToolOperation.PolyLine;

                        break;
                    case "mConnectLine":
                        tlVectorControl1.Operation = ToolOperation.ConnectLine;
                        break;

                    case "mPolygon":
                        tlVectorControl1.Operation = ToolOperation.Polygon;

                        break;
                    case "mImage":
                        tlVectorControl1.Operation = ToolOperation.Image;
                        break;
                    case "mText":
                        tlVectorControl1.Operation = ToolOperation.Text;
                        break;
                    case "mBezier":
                        tlVectorControl1.Operation = ToolOperation.Bezier;

                        break;
                    case "ButtonItem2":
                        fileType = true;
                        if (fileType == true)
                        {
                            LoadShape("symbol20.xml");
                            //jxtbar(1);
                        }
                        else
                        {
                            LoadShape("symbol21.xml");
                            //jxtbar(0);
                        }
                        tlVectorControl1.SVGDocument.CurrentLayer.ID = Guid.NewGuid().ToString();
                        SvgDocument.currentLayer = Layer.CreateNew("默认层", tlVectorControl1.SVGDocument).ID;
                        tlVectorControl1.IsModified = false;
                        frmElementName dlgnew2 = new frmElementName();
                        dlgnew2.TextInput = tlVectorControl1.SVGDocument.FileName;
                        if (dlgnew2.ShowDialog() == DialogResult.OK)
                        {
                            tlVectorControl1.SVGDocument.FileName = dlgnew2.TextInput;
                            Save();
                        }
                        //NewFile(fileType);
                        break;
                    case "ButtonItem8":
                        fileType = false;
                        //NewFile(fileType);
                        tlVectorControl1.NewFile();
                        if (fileType == true)
                        {
                            LoadShape("symbol20.xml");
                            //jxtbar(1);
                        }
                        else
                        {
                            LoadShape("symbol21.xml");
                            //jxtbar(0);
                        }
                        tlVectorControl1.SVGDocument.CurrentLayer.ID = Guid.NewGuid().ToString();
                        SvgDocument.currentLayer = Layer.CreateNew("默认层", tlVectorControl1.SVGDocument).ID;
                        tlVectorControl1.IsModified = false;
                        frmElementName dlgnew3 = new frmElementName();
                        dlgnew3.TextInput = tlVectorControl1.SVGDocument.FileName;
                        if (dlgnew3.ShowDialog() == DialogResult.OK)
                        {
                            tlVectorControl1.SVGDocument.FileName = dlgnew3.TextInput;
                            Save();
                        }
                        break;
                    case "mCheck":
                        Check();
                        break;
                    case "niula":
                        //MessageBox.Show(Directory.GetCurrentDirectory());
                        //frmTLpsp el = new frmTLpsp();
                        PspNIULA();
                        //oThread = new Thread(new ThreadStart(el.PspNIULA));
                        //oThread.Start();
                        //try
                        //{
                        //    time = new System.Threading.Timer(new TimerCallback(method), null, 50000, 60000);
                        //}
                        //catch { }
                        break;
                    case "pq":
                        //frmTLpsp e2 = new frmTLpsp();
                        PspPQ();
                        break;
                    //case "ShortCut":
                    //    ShortCutCheck();
                    //    break;
                    case "GaussSeidel":
                        PspGaussSeidel();
                        break;
                    case "PowerLossCal":
                        PspPowerLossCal();
                        break;
                    case "N_RZYz":
                        PspN_RZYz();
                        break;
                    case "WebRela":                        //进行网络N-1检验

                        WebCalAndPrint();
                        break;
                    case "TransRela":                       //进行变压器N-1检验

                        break;
                    case "DuanluResult":
                        //ShortCutCheck();
                        //PSPDEV pspDuanlu = new PSPDEV();
                        //pspDuanlu.SvgUID = tlVectorControl1.SVGDocument.CurrentLayer.ID;
                        //frmDuanlu dudu = new frmDuanlu(pspDuanlu);
                        //PSPDEV Duanlu = new PSPDEV();
                        //Duanlu.SvgUID = tlVectorControl1.SVGDocument.CurrentLayer.ID;

                        //if (dudu.ShowDialog() == DialogResult.OK)
                        //{

                        //    Duanlu = (PSPDEV)Services.BaseService.GetObject("SelectPSPDEVByName", Duanlu);
                        //    n4 = Convert.ToInt32(dudu.hscool);
                        //    if (Duanlu.Type == "Use")
                        //    {
                        //        n1 = Duanlu.Number;
                        //        n2 = Duanlu.Number;
                        //        string dlr=n1.ToString();
                        //        if (File.Exists(System.Windows.Forms.Application.StartupPath + "\\dlb.txt"))
                        //        {
                        //            File.Delete(System.Windows.Forms.Application.StartupPath+"\\dlb.txt");
                        //        }

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

                        //        n4 = 0;
                        //    }
                        //    if (Duanlu.Type == "Polyline")
                        //    {
                        //        n1 = Duanlu.FirstNode;
                        //        n2 = Duanlu.LastNode;
                        //    }
                        //    switch (dudu.DuanluType){

                        //        case "单相接地":
                        //            n3 = 1;
                        //            break;

                        //        case "两相接地":
                        //            n3 = 3;
                        //            break;
                        //        case "两相故障":
                        //            n3 = 2;
                        //            break;
                        //        case "三相故障":
                        //            n3 = 0;
                        //            break;
                        //        default:
                        //            n3 = 1;
                        //            break;
                        //    }
                        //    duanlu.myshort(n1, n2, n3, n4);
                        // }
                        break;
                    //case "DuanluResult":
                    //    il = 1;
                    //    break;
                    case "dd":
                        //SubPrint = true;
                        tlVectorControl1.Operation = ToolOperation.InterEnclosurePrint;
                        break;

                    case "NiulaResult":
                        try
                        {
                            //{
                            if (!Check())
                            {
                                return;
                            }
                            NIULA pspniula = new NIULA();
                            pspniula.CurrentCal();

                            if (File.Exists(System.Windows.Forms.Application.StartupPath + "\\" + tlVectorControl1.SVGDocument.FileName + "牛拉法计算结果.xls"))
                            {
                                File.Delete(System.Windows.Forms.Application.StartupPath + "\\" + tlVectorControl1.SVGDocument.FileName + "牛拉法计算结果.xls");
                                //OpenRead(System.Windows.Forms.Application.StartupPath + "\\" + tlVectorControl1.SVGDocument.FileName + ".xls");
                            }

                            double yinzi = 0, capability = 0, volt = 0, current = 0, standvolt = 0, Rad_to_Deg = 57.29577951;
                            PSPDEV benchmark = new PSPDEV();
                            benchmark.Type = "power";
                            benchmark.SvgUID = tlVectorControl1.SVGDocument.SvgdataUid;
                            IList list3 = Services.BaseService.GetList("SelectPSPDEVBySvgUIDAndType", benchmark);
                            if (list3 == null)
                            {
                                MessageBox.Show("请设置基准后再进行计算!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                                return;
                            }
                            foreach (PSPDEV dev in list3)
                            {
                                yinzi = Convert.ToDouble(dev.PowerFactor);
                                capability = Convert.ToDouble(dev.StandardCurrent);
                                volt = Convert.ToDouble(dev.StandardVolt);
                                if (dev.PowerFactor == 0)
                                {
                                    yinzi = 1;
                                }
                                if (dev.StandardCurrent == 0)
                                {
                                    capability = 1;
                                }
                                if (dev.StandardVolt == 0)
                                {
                                    volt = 1;
                                }
                                standvolt = volt;
                                current = capability / (Math.Sqrt(3) * volt);

                            }
                            capability = 100;

                            if (File.Exists(System.Windows.Forms.Application.StartupPath + "\\PF1.txt"))
                            {
                            }
                            else
                            {
                                return;
                            }
                            dh = new FileStream(System.Windows.Forms.Application.StartupPath + "\\PF1.txt", FileMode.Open);
                            readLine = new StreamReader(dh);

                            charSplit = new char[] { ' ' };
                            strLine = readLine.ReadLine();

                            output += ("全网母线(发电、负荷)结果报表 " + "\r\n" + "\r\n");
                            output += ("单位:kA\\kV\\MW\\Mvar" + "\r\n" + "\r\n");
                            output += ("母线名" + "," + "电压幅值" + "," + "电压相角" + "," + "有功发电" + "," + "无功发电" + "," + "有功负荷" + "," + "无功负荷" + "," + "越限标志" + "," + "过载标志" + "\r\n");
                            int count = 0;
                            while (strLine != null && strLine != "")
                            {
                                array1 = strLine.Split(charSplit);
                                string[] dev = new string[9];
                                dev.Initialize();
                                int i = 0;
                                count++;
                                PSPDEV CR = new PSPDEV();
                                CR.SvgUID = tlVectorControl1.SVGDocument.CurrentLayer.ID;

                                foreach (string str in array1)
                                {
                                    if (str != "")
                                    {
                                        if (str != "NaN")
                                        {
                                            dev[i++] = Convert.ToDouble(str).ToString();
                                        }
                                        else
                                        {
                                            dev[i++] = str;
                                        }

                                    }

                                }

                                CR.Number = Convert.ToInt32(dev[0]);
                                CR.Type = "Use";
                                CR = (PSPDEV)Services.BaseService.GetObject("SelectPSPDEVByNumberAndSvgUIDAndType", CR);
                                if (CR.ReferenceVolt != null && CR.ReferenceVolt != 0)
                                {
                                    volt = CR.ReferenceVolt;
                                }
                                else
                                    volt = standvolt;
                                current = capability / (Math.Sqrt(3) * volt);
                                double vTemp = Convert.ToDouble(dev[1]) * volt;
                                double vTemp1 = volt * 95 / 100;
                                double vTemp2 = volt * 105 / 100;

                                if (vTemp >= vTemp1 && vTemp <= vTemp2)
                                {
                                    dev[5] = "0";
                                }
                                else
                                {
                                    dev[5] = "1";
                                }
                                if (Convert.ToDouble(dev[3]) * capability > Convert.ToDouble(CR.Burthen))
                                {
                                    dev[6] = "1";
                                }
                                else
                                {
                                    dev[6] = "0";
                                }

                                if (Convert.ToDouble(dev[3]) < 0)
                                {
                                    output += CR.Name + "," + (Convert.ToDouble(dev[1]) * volt).ToString() + "," + (Convert.ToDouble(dev[2]) * Rad_to_Deg).ToString() + "," + "0" + "," + "0" + "," + (Convert.ToDouble(dev[3]) * capability).ToString() + "," + (Convert.ToDouble(dev[4]) * capability).ToString() + "," + dev[5] + "," + dev[6] + "\r\n";
                                }
                                else
                                {
                                    output += CR.Name + "," + (Convert.ToDouble(dev[1]) * volt).ToString() + "," + (Convert.ToDouble(dev[2]) * Rad_to_Deg).ToString() + "," + (Convert.ToDouble(dev[3]) * capability).ToString() + "," + (Convert.ToDouble(dev[4]) * capability).ToString() + "," + "0" + "," + "0" + "," + dev[5] + "," + dev[6] + "\r\n";
                                }
                                strLine = readLine.ReadLine();
                            }
                            PSPDEV ct = new PSPDEV();
                            ct.SvgUID = tlVectorControl1.SVGDocument.CurrentLayer.ID;
                            ct.Type = "Use";
                            IList cont = Services.BaseService.GetList("SelectPSPDEVBySvgUIDAndType", ct);
                            if (count < cont.Count)
                            {
                                MessageBox.Show("请进行潮流计算后再查看结果!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                                readLine.Close();
                                return;

                            }
                            readLine.Close();
                            if (File.Exists(System.Windows.Forms.Application.StartupPath + "\\result.csv"))
                            {
                                File.Delete(System.Windows.Forms.Application.StartupPath + "\\result.csv");
                            }
                            op = new FileStream((System.Windows.Forms.Application.StartupPath + "\\result.csv"), FileMode.OpenOrCreate);
                            str1 = new StreamWriter(op, Encoding.GetEncoding("GB2312"));
                            str1.Write(output);
                            str1.Close();

                            if (File.Exists(System.Windows.Forms.Application.StartupPath + "\\DH1.txt"))
                            {
                            }
                            else
                            {
                                return;
                            }
                            if (File.Exists(System.Windows.Forms.Application.StartupPath + "\\IH1.txt"))
                            {
                            }
                            else
                            {
                                return;
                            }
                            dh = new FileStream(System.Windows.Forms.Application.StartupPath + "\\DH1.txt", FileMode.Open);
                            dh2 = new FileStream(System.Windows.Forms.Application.StartupPath + "\\IH1.txt", FileMode.Open);
                            readLine2 = new StreamReader(dh2);
                            readLine = new StreamReader(dh);
                            charSplit = new char[] { ' ' };
                            strLine = readLine.ReadLine();
                            strLine2 = readLine2.ReadLine();

                            output = null;

                            output += ("全网交流线结果报表" + "\r\n" + "\r\n");
                            output += ("单位:kA\\kV\\MW\\Mvar" + "\r\n" + "\r\n");
                            output += ("支路名称" + "," + "支路有功" + "," + "支路无功" + "," + "有功损耗" + "," + "无功损耗" + "," + "电流幅值" + "," + "电流相角" + "," + "越限标志" + "," + "\r\n");
                            while (strLine != null && strLine2 != null && strLine != "" && strLine2 != "")
                            {
                                array1 = strLine.Split(charSplit);
                                array2 = strLine2.Split(charSplit2);

                                string[] dev = new string[20];
                                dev.Initialize();
                                int i = 0;
                                PSPDEV CR = new PSPDEV();
                                CR.SvgUID = tlVectorControl1.SVGDocument.CurrentLayer.ID;

                                foreach (string str in array1)
                                {
                                    if (str != "")
                                    {
                                        if (i == 0)
                                        {
                                            dev[i++] = str.ToString();
                                        }
                                        else
                                        {
                                            if (str != "NaN")
                                            {
                                                dev[i++] = Convert.ToDouble(str).ToString();
                                            }
                                            else
                                            {
                                                dev[i++] = str;
                                            }

                                        }
                                    }

                                }
                                i = 7;
                                for (int j = 3; j < 5; j++)
                                {
                                    if (array2[j] != "")
                                    {
                                        if (array2[j] != "NaN")
                                        {
                                            dev[i++] = Convert.ToDouble(array2[j]).ToString();
                                        }
                                        else
                                        {
                                            dev[i++] = array2[j];
                                        }
                                    }

                                }
                                CR.Name = dev[0];
                                CR.Type = "Polyline";
                                CR = (PSPDEV)Services.BaseService.GetObject("SelectPSPDEVByName", CR);
                                if (CR.ReferenceVolt != null && CR.ReferenceVolt != 0)
                                {
                                    volt = CR.ReferenceVolt;
                                }
                                else
                                    volt = standvolt;
                                current = capability / (Math.Sqrt(3) * volt);
                                if (CR != null)
                                {
                                    if (Convert.ToDouble(dev[7]) * current * 1000 > CR.LineChange)
                                    {
                                        dev[11] = "1";
                                    }
                                    else
                                    {
                                        dev[11] = "0";
                                    }
                                    output += CR.Name + "," + (Convert.ToDouble(dev[3]) * capability).ToString() + "," + (Convert.ToDouble(dev[4]) * capability).ToString() + "," + (Convert.ToDouble(dev[5]) * capability).ToString() + "," + (Convert.ToDouble(dev[6]) * capability).ToString() + "," + (Convert.ToDouble(dev[7]) * current).ToString() + "," + (Convert.ToDouble(dev[8]) * Rad_to_Deg).ToString() + "," + dev[11] + "," + "\r\n";
                                }
                                else
                                {
                                    CR = new PSPDEV();
                                    CR.Name = dev[0];
                                    CR.Type = "TransformLine";
                                    CR.SvgUID = tlVectorControl1.SVGDocument.CurrentLayer.ID;
                                    CR = (PSPDEV)Services.BaseService.GetObject("SelectPSPDEVByName", CR);
                                    if (CR != null)
                                    {
                                        if (Convert.ToDouble(dev[7]) * current * 1000 > CR.LineChange)
                                        {
                                            dev[11] = "1";
                                        }
                                        else
                                        {
                                            dev[11] = "0";
                                        }
                                        output += CR.Name + "," + (Convert.ToDouble(dev[3]) * capability).ToString() + "," + (Convert.ToDouble(dev[4]) * capability).ToString() + "," + (Convert.ToDouble(dev[5]) * capability).ToString() + "," + (Convert.ToDouble(dev[6]) * capability).ToString() + "," + (Convert.ToDouble(dev[7]) * current).ToString() + "," + (Convert.ToDouble(dev[8]) * Rad_to_Deg).ToString() + "," + dev[11] + "," + "\r\n";
                                    }
                                }

                                strLine = readLine.ReadLine();
                                strLine2 = readLine2.ReadLine();
                            }
                            readLine.Close();
                            readLine2.Close();
                            if (File.Exists(System.Windows.Forms.Application.StartupPath + "\\result1.csv"))
                            {
                                File.Delete(System.Windows.Forms.Application.StartupPath + "\\result1.csv");
                            }
                            op = new FileStream((System.Windows.Forms.Application.StartupPath + "\\result1.csv"), FileMode.OpenOrCreate);
                            str1 = new StreamWriter(op, Encoding.GetEncoding("GB2312"));
                            str1.Write(output);
                            str1.Close();

                            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);

                            result1 = new Excel.Application();
                            result1.Application.Workbooks.Add(System.Windows.Forms.Application.StartupPath + "\\result1.csv");
                            tempSheet = (Excel.Worksheet)result1.Worksheets.get_Item(1);
                            newWorksheet = (Excel.Worksheet)ex.Worksheets.get_Item(2);
                            newWorksheet.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);
                            xSheet.Rows.AutoFit();
                            xSheet.Columns.AutoFit();
                            newWorksheet.Rows.AutoFit();
                            newWorksheet.Columns.AutoFit();
                            xSheet.get_Range(xSheet.Cells[1, 1], xSheet.Cells[1, 9]).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[5, 1], xSheet.Cells[5, 9]).Interior.ColorIndex = 45;
                            xSheet.get_Range(xSheet.Cells[6, 1], xSheet.Cells[xSheet.UsedRange.Rows.Count, 1]).Interior.ColorIndex = 6;
                            xSheet.get_Range(xSheet.Cells[6, 2], xSheet.Cells[xSheet.UsedRange.Rows.Count, 9]).NumberFormat = "0.0000_ ";
                            xSheet.get_Range(xSheet.Cells[3, 1], xSheet.Cells[xSheet.UsedRange.Rows.Count, 9]).Font.Name = "楷体_GB2312";

                            newWorksheet.get_Range(newWorksheet.Cells[1, 1], newWorksheet.Cells[1, 9]).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[5, 1], newWorksheet.Cells[5, 8]).Interior.ColorIndex = 45;
                            newWorksheet.get_Range(newWorksheet.Cells[6, 1], newWorksheet.Cells[newWorksheet.UsedRange.Rows.Count, 1]).Interior.ColorIndex = 6;
                            newWorksheet.get_Range(newWorksheet.Cells[6, 2], newWorksheet.Cells[newWorksheet.UsedRange.Rows.Count, 9]).NumberFormat = "0.0000_ ";
                            newWorksheet.get_Range(newWorksheet.Cells[3, 1], newWorksheet.Cells[newWorksheet.UsedRange.Rows.Count, 9]).Font.Name = "楷体_GB2312";

                            //op = new FileStream((System.Windows.Forms.Application.StartupPath + "\\fck.excel"), FileMode.OpenOrCreate);
                            //str1 = new StreamWriter(op, Encoding.GetEncoding("GB2312"));

                            string fn = tlVectorControl1.SVGDocument.FileName;

                            //result1.Save(System.Windows.Forms.Application.StartupPath + "\\fck.xls");

                            newWorksheet.SaveAs(System.Windows.Forms.Application.StartupPath + "\\" + fn + "牛拉法计算结果.xls", Excel.XlFileFormat.xlXMLSpreadsheet, null, null, false, false, false, null, null, null);

                            //str1.Write();
                            //op.Close();

                            System.Windows.Forms.Clipboard.Clear();
                            result1.Workbooks.Close();
                            result1.Quit();

                        }
                        catch (System.Exception e1)
                        {
                            MessageBox.Show("请进行潮流计算后再查看结果!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        }
                        //}
                        break;
                    case "GaussSeidelResult":
                        try
                        {

                            if (!Check())
                            {
                                return;
                            }
                            Gauss pspgauss = new Gauss();
                            pspgauss.CurrentCal();
                            if (File.Exists(System.Windows.Forms.Application.StartupPath + "\\" + tlVectorControl1.SVGDocument.FileName + "高斯-赛德尔计算结果.xls"))
                            {
                                File.Delete(System.Windows.Forms.Application.StartupPath + "\\" + tlVectorControl1.SVGDocument.FileName + "高斯-赛德尔计算结果.xls");
                                //OpenRead(System.Windows.Forms.Application.StartupPath + "\\" + tlVectorControl1.SVGDocument.FileName + ".xls");
                            }

                            double yinzi = 0, capability = 0, volt = 0, current = 0, Rad_to_Deg = 57.29577951;
                            PSPDEV benchmark = new PSPDEV();
                            benchmark.Type = "power";
                            benchmark.SvgUID = tlVectorControl1.SVGDocument.SvgdataUid;
                            IList list3 = Services.BaseService.GetList("SelectPSPDEVBySvgUIDAndType", benchmark);
                            if (list3 == null)
                            {
                                MessageBox.Show("请设置基准后再进行计算!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                                return;
                            }
                            foreach (PSPDEV dev in list3)
                            {
                                yinzi = Convert.ToDouble(dev.PowerFactor);
                                capability = Convert.ToDouble(dev.StandardCurrent);
                                volt = Convert.ToDouble(dev.StandardVolt);
                                if (dev.PowerFactor == 0)
                                {
                                    yinzi = 1;
                                }
                                if (dev.StandardCurrent == 0)
                                {
                                    capability = 1;
                                }
                                if (dev.StandardVolt == 0)
                                {
                                    volt = 1;
                                }
                                current = capability / (Math.Sqrt(3) * volt);
                            };
                            if (File.Exists(System.Windows.Forms.Application.StartupPath + "\\PF3.txt"))
                            {
                            }
                            else
                            {
                                return;
                            }
                            dh = new FileStream(System.Windows.Forms.Application.StartupPath + "\\PF3.txt", FileMode.Open);
                            readLine = new StreamReader(dh);

                            charSplit = new char[] { ' ' };
                            strLine = readLine.ReadLine();

                            output += ("全网母线(发电、负荷)结果报表 " + "\r\n" + "\r\n");
                            output += ("单位:kA\\kV\\MW\\Mvar" + "\r\n" + "\r\n");
                            output += ("母线名" + "," + "电压幅值" + "," + "电压相角" + "," + "有功发电" + "," + "无功发电" + "," + "有功负荷" + "," + "无功负荷" + "," + "越限标志" + "," + "过载标志" + "\r\n");
                            int count = 0;
                            while (strLine != null && strLine != "")
                            {
                                array1 = strLine.Split(charSplit);
                                string[] dev = new string[9];
                                dev.Initialize();
                                int i = 0;
                                count++;
                                PSPDEV CR = new PSPDEV();
                                CR.SvgUID = tlVectorControl1.SVGDocument.CurrentLayer.ID;

                                foreach (string str in array1)
                                {
                                    if (str != "")
                                    {
                                        if (str != "NaN")
                                        {
                                            dev[i++] = Convert.ToDouble(str).ToString();
                                        }
                                        else
                                        {
                                            dev[i++] = str;
                                        }

                                    }

                                }

                                CR.Number = Convert.ToInt32(dev[0]);
                                CR.Type = "Use";
                                CR = (PSPDEV)Services.BaseService.GetObject("SelectPSPDEVByNumberAndSvgUIDAndType", CR);
                                double vTemp = Convert.ToDouble(dev[1]) * volt;
                                double vTemp1 = volt * 95 / 100;
                                double vTemp2 = volt * 105 / 100;

                                if (vTemp >= vTemp1 && vTemp <= vTemp2)
                                {
                                    dev[5] = "0";
                                }
                                else
                                {
                                    dev[5] = "1";
                                }
                                if (Convert.ToDouble(dev[3]) * capability > Convert.ToDouble(CR.Burthen))
                                {
                                    dev[6] = "1";
                                }
                                else
                                {
                                    dev[6] = "0";
                                }

                                if (Convert.ToDouble(dev[3]) < 0)
                                {

                                    output += CR.Name + "," + (Convert.ToDouble(dev[1]) * volt).ToString() + "," + (Convert.ToDouble(dev[2]) * Rad_to_Deg).ToString() + "," + "0" + "," + "0" + "," + (Convert.ToDouble(dev[3]) * capability).ToString() + "," + (Convert.ToDouble(dev[4]) * capability).ToString() + "," + dev[5] + "," + dev[6] + "\r\n";
                                }
                                else
                                {

                                    output += CR.Name + "," + (Convert.ToDouble(dev[1]) * volt).ToString() + "," + (Convert.ToDouble(dev[2]) * Rad_to_Deg).ToString() + "," + (Convert.ToDouble(dev[3]) * capability).ToString() + "," + (Convert.ToDouble(dev[4]) * capability).ToString() + "," + "0" + "," + "0" + "," + dev[5] + "," + dev[6] + "\r\n";
                                }
                                strLine = readLine.ReadLine();
                            }
                            PSPDEV ct = new PSPDEV();
                            ct.SvgUID = tlVectorControl1.SVGDocument.CurrentLayer.ID;
                            ct.Type = "Use";
                            IList cont = Services.BaseService.GetList("SelectPSPDEVBySvgUIDAndType", ct);
                            if (count < cont.Count)
                            {
                                MessageBox.Show("请进行潮流计算后再查看结果!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                                readLine.Close();
                                return;

                            }
                            readLine.Close();
                            if (File.Exists(System.Windows.Forms.Application.StartupPath + "\\result.csv"))
                            {
                                File.Delete(System.Windows.Forms.Application.StartupPath + "\\result.csv");
                            }
                            op = new FileStream((System.Windows.Forms.Application.StartupPath + "\\result.csv"), FileMode.OpenOrCreate);
                            str1 = new StreamWriter(op, Encoding.GetEncoding("GB2312"));
                            str1.Write(output);
                            str1.Close();

                            if (File.Exists(System.Windows.Forms.Application.StartupPath + "\\DH3.txt"))
                            {
                            }
                            else
                            {
                                return;
                            }
                            if (File.Exists(System.Windows.Forms.Application.StartupPath + "\\IH3.txt"))
                            {
                            }
                            else
                            {
                                return;
                            }
                            dh = new FileStream(System.Windows.Forms.Application.StartupPath + "\\DH3.txt", FileMode.Open);
                            dh2 = new FileStream(System.Windows.Forms.Application.StartupPath + "\\IH3.txt", FileMode.Open);
                            readLine2 = new StreamReader(dh2);
                            readLine = new StreamReader(dh);
                            charSplit = new char[] { ' ' };
                            strLine = readLine.ReadLine();
                            strLine2 = readLine2.ReadLine();

                            output = null;

                            output += ("全网交流线结果报表" + "\r\n" + "\r\n");
                            output += ("单位:kA\\kV\\MW\\Mvar" + "\r\n" + "\r\n");
                            output += ("支路名称" + "," + "支路有功" + "," + "支路无功" + "," + "有功损耗" + "," + "无功损耗" + "," + "电流幅值" + "," + "电流相角" + "," + "越限标志" + "," + "\r\n");
                            while (strLine != null && strLine2 != null && strLine != "" && strLine2 != "")
                            {
                                array1 = strLine.Split(charSplit);
                                array2 = strLine2.Split(charSplit2);

                                string[] dev = new string[20];
                                dev.Initialize();
                                int i = 0;
                                PSPDEV CR = new PSPDEV();
                                CR.SvgUID = tlVectorControl1.SVGDocument.CurrentLayer.ID;

                                foreach (string str in array1)
                                {
                                    if (str != "")
                                    {
                                        if (i == 0)
                                        {
                                            dev[i++] = str.ToString();
                                        }
                                        else
                                        {
                                            if (str != "NaN")
                                            {
                                                dev[i++] = Convert.ToDouble(str).ToString();
                                            }
                                            else
                                            {
                                                dev[i++] = str;
                                            }

                                        }
                                    }

                                }
                                i = 7;
                                for (int j = 3; j < 5; j++)
                                {
                                    if (array2[j] != "")
                                    {
                                        if (array2[j] != "NaN")
                                        {
                                            dev[i++] = Convert.ToDouble(array2[j]).ToString();
                                        }
                                        else
                                        {
                                            dev[i++] = array2[j];
                                        }
                                    }

                                }
                                CR.Name = dev[0];
                                CR.Type = "Polyline";
                                CR = (PSPDEV)Services.BaseService.GetObject("SelectPSPDEVByName", CR);

                                if (CR != null)
                                {
                                    if (Convert.ToDouble(dev[7]) * current * 1000 > CR.LineChange)
                                    {
                                        dev[11] = "1";
                                    }
                                    else
                                    {
                                        dev[11] = "0";
                                    }
                                    output += CR.Name + "," + (Convert.ToDouble(dev[3]) * capability).ToString() + "," + (Convert.ToDouble(dev[4]) * capability).ToString() + "," + (Convert.ToDouble(dev[5]) * capability).ToString() + "," + (Convert.ToDouble(dev[6]) * capability).ToString() + "," + (Convert.ToDouble(dev[7]) * current).ToString() + "," + (Convert.ToDouble(dev[8]) * Rad_to_Deg).ToString() + "," + dev[11] + "," + "\r\n";
                                }
                                else
                                {
                                    CR = new PSPDEV();
                                    CR.Name = dev[0];
                                    CR.Type = "TransformLine";
                                    CR.SvgUID = tlVectorControl1.SVGDocument.CurrentLayer.ID;
                                    CR = (PSPDEV)Services.BaseService.GetObject("SelectPSPDEVByName", CR);
                                    if (CR != null)
                                    {
                                        if (Convert.ToDouble(dev[7]) * current * 1000 > CR.LineChange)
                                        {
                                            dev[11] = "1";
                                        }
                                        else
                                        {
                                            dev[11] = "0";
                                        }
                                        output += CR.Name + "," + (Convert.ToDouble(dev[3]) * capability).ToString() + "," + (Convert.ToDouble(dev[4]) * capability).ToString() + "," + (Convert.ToDouble(dev[5]) * capability).ToString() + "," + (Convert.ToDouble(dev[6]) * capability).ToString() + "," + (Convert.ToDouble(dev[7]) * current).ToString() + "," + (Convert.ToDouble(dev[8]) * Rad_to_Deg).ToString() + "," + dev[11] + "," + "\r\n";
                                    }
                                }

                                strLine = readLine.ReadLine();
                                strLine2 = readLine2.ReadLine();
                            }
                            readLine.Close();
                            readLine2.Close();
                            if (File.Exists(System.Windows.Forms.Application.StartupPath + "\\result1.csv"))
                            {
                                File.Delete(System.Windows.Forms.Application.StartupPath + "\\result1.csv");
                            }
                            op = new FileStream((System.Windows.Forms.Application.StartupPath + "\\result1.csv"), FileMode.OpenOrCreate);
                            str1 = new StreamWriter(op, Encoding.GetEncoding("GB2312"));
                            str1.Write(output);
                            str1.Close();

                            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);

                            result1 = new Excel.Application();
                            result1.Application.Workbooks.Add(System.Windows.Forms.Application.StartupPath + "\\result1.csv");
                            tempSheet = (Excel.Worksheet)result1.Worksheets.get_Item(1);
                            newWorksheet = (Excel.Worksheet)ex.Worksheets.get_Item(2);
                            newWorksheet.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);
                            xSheet.Rows.AutoFit();
                            xSheet.Columns.AutoFit();
                            newWorksheet.Rows.AutoFit();
                            newWorksheet.Columns.AutoFit();
                            xSheet.get_Range(xSheet.Cells[1, 1], xSheet.Cells[1, 9]).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[5, 1], xSheet.Cells[5, 9]).Interior.ColorIndex = 45;
                            xSheet.get_Range(xSheet.Cells[6, 1], xSheet.Cells[xSheet.UsedRange.Rows.Count, 1]).Interior.ColorIndex = 6;
                            xSheet.get_Range(xSheet.Cells[6, 2], xSheet.Cells[xSheet.UsedRange.Rows.Count, 9]).NumberFormat = "0.0000_ ";
                            xSheet.get_Range(xSheet.Cells[3, 1], xSheet.Cells[xSheet.UsedRange.Rows.Count, 9]).Font.Name = "楷体_GB2312";

                            newWorksheet.get_Range(newWorksheet.Cells[1, 1], newWorksheet.Cells[1, 9]).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[5, 1], newWorksheet.Cells[5, 8]).Interior.ColorIndex = 45;
                            newWorksheet.get_Range(newWorksheet.Cells[6, 1], newWorksheet.Cells[newWorksheet.UsedRange.Rows.Count, 1]).Interior.ColorIndex = 6;
                            newWorksheet.get_Range(newWorksheet.Cells[6, 2], newWorksheet.Cells[newWorksheet.UsedRange.Rows.Count, 9]).NumberFormat = "0.0000_ ";
                            newWorksheet.get_Range(newWorksheet.Cells[3, 1], newWorksheet.Cells[newWorksheet.UsedRange.Rows.Count, 9]).Font.Name = "楷体_GB2312";

                            //op = new FileStream((System.Windows.Forms.Application.StartupPath + "\\fck.excel"), FileMode.OpenOrCreate);
                            //str1 = new StreamWriter(op, Encoding.GetEncoding("GB2312"));

                            string fn = tlVectorControl1.SVGDocument.FileName;

                            //result1.Save(System.Windows.Forms.Application.StartupPath + "\\fck.xls");

                            newWorksheet.SaveAs(System.Windows.Forms.Application.StartupPath + "\\" + fn + "高斯-赛德尔计算结果.xls", Excel.XlFileFormat.xlXMLSpreadsheet, null, null, false, false, false, null, null, null);

                            //str1.Write();
                            //op.Close();

                            System.Windows.Forms.Clipboard.Clear();
                            result1.Workbooks.Close();
                            result1.Quit();

                        }
                        catch (System.Exception e1)
                        {
                            MessageBox.Show("请进行潮流计算后再查看结果!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        }

                        break;
                    case "N_RZYzResult":
                        try
                        {
                            if (!Check())
                            {
                                return;
                            }
                            ZYZ zyz = new ZYZ();
                            zyz.CurrentCal();
                            if (File.Exists(System.Windows.Forms.Application.StartupPath + "\\" + tlVectorControl1.SVGDocument.FileName + "最优乘子法计算结果.xls"))
                            {
                                File.Delete(System.Windows.Forms.Application.StartupPath + "\\" + tlVectorControl1.SVGDocument.FileName + "最优乘子法计算结果.xls");
                                //OpenRead(System.Windows.Forms.Application.StartupPath + "\\" + tlVectorControl1.SVGDocument.FileName + ".xls");
                            }

                            double yinzi = 0, capability = 0, volt = 0, current = 0, Rad_to_Deg = 57.29577951;
                            PSPDEV benchmark = new PSPDEV();
                            benchmark.Type = "power";
                            benchmark.SvgUID = tlVectorControl1.SVGDocument.SvgdataUid;
                            IList list3 = Services.BaseService.GetList("SelectPSPDEVBySvgUIDAndType", benchmark);
                            if (list3 == null)
                            {
                                MessageBox.Show("请设置基准后再进行计算!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                                return;
                            }
                            foreach (PSPDEV dev in list3)
                            {
                                yinzi = Convert.ToDouble(dev.PowerFactor);
                                capability = Convert.ToDouble(dev.StandardCurrent);
                                volt = Convert.ToDouble(dev.StandardVolt);
                                if (dev.PowerFactor == 0)
                                {
                                    yinzi = 1;
                                }
                                if (dev.StandardCurrent == 0)
                                {
                                    capability = 1;
                                }
                                if (dev.StandardVolt == 0)
                                {
                                    volt = 1;
                                }
                                current = capability / (Math.Sqrt(3) * volt);
                            }
                            if (File.Exists(System.Windows.Forms.Application.StartupPath + "\\PF4.txt"))
                            {
                            }
                            else
                            {
                                return;
                            }
                            dh = new FileStream(System.Windows.Forms.Application.StartupPath + "\\PF4.txt", FileMode.Open);
                            readLine = new StreamReader(dh);

                            charSplit = new char[] { ' ' };
                            strLine = readLine.ReadLine();

                            output += ("全网母线(发电、负荷)结果报表 " + "\r\n" + "\r\n");
                            output += ("单位:kA\\kV\\MW\\Mvar" + "\r\n" + "\r\n");
                            output += ("母线名" + "," + "电压幅值" + "," + "电压相角" + "," + "有功发电" + "," + "无功发电" + "," + "有功负荷" + "," + "无功负荷" + "," + "越限标志" + "," + "过载标志" + "\r\n");
                            int count = 0;
                            while (strLine != null && strLine != "")
                            {
                                array1 = strLine.Split(charSplit);
                                string[] dev = new string[9];
                                dev.Initialize();
                                int i = 0;
                                count++;
                                PSPDEV CR = new PSPDEV();
                                CR.SvgUID = tlVectorControl1.SVGDocument.CurrentLayer.ID;

                                foreach (string str in array1)
                                {
                                    if (str != "")
                                    {
                                        if (str != "NaN")
                                        {
                                            dev[i++] = Convert.ToDouble(str).ToString();
                                        }
                                        else
                                        {
                                            dev[i++] = str;
                                        }

                                    }

                                }

                                CR.Number = Convert.ToInt32(dev[0]);
                                CR.Type = "Use";
                                CR = (PSPDEV)Services.BaseService.GetObject("SelectPSPDEVByNumberAndSvgUIDAndType", CR);
                                double vTemp = Convert.ToDouble(dev[1]) * volt;
                                double vTemp1 = volt * 95 / 100;
                                double vTemp2 = volt * 105 / 100;

                                if (vTemp >= vTemp1 && vTemp <= vTemp2)
                                {
                                    dev[5] = "0";
                                }
                                else
                                {
                                    dev[5] = "1";
                                }
                                if (Convert.ToDouble(dev[3]) * capability > Convert.ToDouble(CR.Burthen))
                                {
                                    dev[6] = "1";
                                }
                                else
                                {
                                    dev[6] = "0";
                                }
                                if (Convert.ToDouble(dev[3]) < 0)
                                {

                                    output += CR.Name + "," + (Convert.ToDouble(dev[1]) * volt).ToString() + "," + (Convert.ToDouble(dev[2]) * Rad_to_Deg).ToString() + "," + "0" + "," + "0" + "," + (Convert.ToDouble(dev[3]) * capability).ToString() + "," + (Convert.ToDouble(dev[4]) * capability).ToString() + "," + dev[5] + "," + dev[6] + "\r\n";
                                }
                                else
                                {

                                    output += CR.Name + "," + (Convert.ToDouble(dev[1]) * volt).ToString() + "," + (Convert.ToDouble(dev[2]) * Rad_to_Deg).ToString() + "," + (Convert.ToDouble(dev[3]) * capability).ToString() + "," + (Convert.ToDouble(dev[4]) * capability).ToString() + "," + "0" + "," + "0" + "," + dev[5] + "," + dev[6] + "\r\n";
                                }
                                strLine = readLine.ReadLine();
                            }
                            PSPDEV ct = new PSPDEV();
                            ct.SvgUID = tlVectorControl1.SVGDocument.CurrentLayer.ID;
                            ct.Type = "Use";
                            IList cont = Services.BaseService.GetList("SelectPSPDEVBySvgUIDAndType", ct);
                            if (count < cont.Count)
                            {
                                MessageBox.Show("请进行潮流计算后再查看结果!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                                readLine.Close();
                                return;

                            }
                            readLine.Close();
                            if (File.Exists(System.Windows.Forms.Application.StartupPath + "\\result.csv"))
                            {
                                File.Delete(System.Windows.Forms.Application.StartupPath + "\\result.csv");
                            }
                            op = new FileStream((System.Windows.Forms.Application.StartupPath + "\\result.csv"), FileMode.OpenOrCreate);
                            str1 = new StreamWriter(op, Encoding.GetEncoding("GB2312"));
                            str1.Write(output);
                            str1.Close();

                            if (File.Exists(System.Windows.Forms.Application.StartupPath + "\\DH4.txt"))
                            {
                            }
                            else
                            {
                                return;
                            }
                            if (File.Exists(System.Windows.Forms.Application.StartupPath + "\\IH4.txt"))
                            {
                            }
                            else
                            {
                                return;
                            }
                            dh = new FileStream(System.Windows.Forms.Application.StartupPath + "\\DH4.txt", FileMode.Open);
                            dh2 = new FileStream(System.Windows.Forms.Application.StartupPath + "\\IH4.txt", FileMode.Open);
                            readLine2 = new StreamReader(dh2);
                            readLine = new StreamReader(dh);
                            charSplit = new char[] { ' ' };
                            strLine = readLine.ReadLine();
                            strLine2 = readLine2.ReadLine();

                            output = null;

                            output += ("全网交流线结果报表" + "\r\n" + "\r\n");
                            output += ("单位:kA\\kV\\MW\\Mvar" + "\r\n" + "\r\n");
                            output += ("支路名称" + "," + "支路有功" + "," + "支路无功" + "," + "有功损耗" + "," + "无功损耗" + "," + "电流幅值" + "," + "电流相角" + "," + "越限标志" + "," + "\r\n");
                            while (strLine != null && strLine2 != null && strLine != "" && strLine2 != "")
                            {
                                array1 = strLine.Split(charSplit);
                                array2 = strLine2.Split(charSplit2);

                                string[] dev = new string[20];
                                dev.Initialize();
                                int i = 0;
                                PSPDEV CR = new PSPDEV();
                                CR.SvgUID = tlVectorControl1.SVGDocument.CurrentLayer.ID;

                                foreach (string str in array1)
                                {
                                    if (str != "")
                                    {
                                        if (i == 0)
                                        {
                                            dev[i++] = str.ToString();
                                        }
                                        else
                                        {
                                            if (str != "NaN")
                                            {
                                                dev[i++] = Convert.ToDouble(str).ToString();
                                            }
                                            else
                                            {
                                                dev[i++] = str;
                                            }

                                        }
                                    }

                                }
                                i = 7;
                                for (int j = 3; j < 5; j++)
                                {
                                    if (array2[j] != "")
                                    {
                                        if (array2[j] != "NaN")
                                        {
                                            dev[i++] = Convert.ToDouble(array2[j]).ToString();
                                        }
                                        else
                                        {
                                            dev[i++] = array2[j];
                                        }
                                    }

                                }
                                CR.Name = dev[0];
                                CR.Type = "Polyline";
                                CR = (PSPDEV)Services.BaseService.GetObject("SelectPSPDEVByName", CR);

                                if (CR != null)
                                {
                                    if (Convert.ToDouble(dev[7]) * current * 1000 > CR.LineChange)
                                    {
                                        dev[11] = "1";
                                    }
                                    else
                                    {
                                        dev[11] = "0";
                                    }
                                    output += CR.Name + "," + (Convert.ToDouble(dev[3]) * capability).ToString() + "," + (Convert.ToDouble(dev[4]) * capability).ToString() + "," + (Convert.ToDouble(dev[5]) * capability).ToString() + "," + (Convert.ToDouble(dev[6]) * capability).ToString() + "," + (Convert.ToDouble(dev[7]) * current).ToString() + "," + (Convert.ToDouble(dev[8]) * Rad_to_Deg).ToString() + "," + dev[11] + "," + "\r\n";
                                }
                                else
                                {
                                    CR = new PSPDEV();
                                    CR.Name = dev[0];
                                    CR.Type = "TransformLine";
                                    CR.SvgUID = tlVectorControl1.SVGDocument.CurrentLayer.ID;
                                    CR = (PSPDEV)Services.BaseService.GetObject("SelectPSPDEVByName", CR);
                                    if (CR != null)
                                    {
                                        if (Convert.ToDouble(dev[7]) * current * 1000 > CR.LineChange)
                                        {
                                            dev[11] = "1";
                                        }
                                        else
                                        {
                                            dev[11] = "0";
                                        }
                                        output += CR.Name + "," + (Convert.ToDouble(dev[3]) * capability).ToString() + "," + (Convert.ToDouble(dev[4]) * capability).ToString() + "," + (Convert.ToDouble(dev[5]) * capability).ToString() + "," + (Convert.ToDouble(dev[6]) * capability).ToString() + "," + (Convert.ToDouble(dev[7]) * current).ToString() + "," + (Convert.ToDouble(dev[8]) * Rad_to_Deg).ToString() + "," + dev[11] + "," + "\r\n";
                                    }
                                }

                                strLine = readLine.ReadLine();
                                strLine2 = readLine2.ReadLine();
                            }
                            readLine.Close();
                            readLine2.Close();
                            if (File.Exists(System.Windows.Forms.Application.StartupPath + "\\result1.csv"))
                            {
                                File.Delete(System.Windows.Forms.Application.StartupPath + "\\result1.csv");
                            }
                            op = new FileStream((System.Windows.Forms.Application.StartupPath + "\\result1.csv"), FileMode.OpenOrCreate);
                            str1 = new StreamWriter(op, Encoding.GetEncoding("GB2312"));
                            str1.Write(output);
                            str1.Close();

                            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);

                            result1 = new Excel.Application();
                            result1.Application.Workbooks.Add(System.Windows.Forms.Application.StartupPath + "\\result1.csv");
                            tempSheet = (Excel.Worksheet)result1.Worksheets.get_Item(1);
                            newWorksheet = (Excel.Worksheet)ex.Worksheets.get_Item(2);
                            newWorksheet.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);
                            xSheet.Rows.AutoFit();
                            xSheet.Columns.AutoFit();
                            newWorksheet.Rows.AutoFit();
                            newWorksheet.Columns.AutoFit();
                            xSheet.get_Range(xSheet.Cells[1, 1], xSheet.Cells[1, 9]).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[5, 1], xSheet.Cells[5, 9]).Interior.ColorIndex = 45;
                            xSheet.get_Range(xSheet.Cells[6, 1], xSheet.Cells[xSheet.UsedRange.Rows.Count, 1]).Interior.ColorIndex = 6;
                            xSheet.get_Range(xSheet.Cells[6, 2], xSheet.Cells[xSheet.UsedRange.Rows.Count, 9]).NumberFormat = "0.0000_ ";
                            xSheet.get_Range(xSheet.Cells[3, 1], xSheet.Cells[xSheet.UsedRange.Rows.Count, 9]).Font.Name = "楷体_GB2312";

                            newWorksheet.get_Range(newWorksheet.Cells[1, 1], newWorksheet.Cells[1, 9]).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[5, 1], newWorksheet.Cells[5, 8]).Interior.ColorIndex = 45;
                            newWorksheet.get_Range(newWorksheet.Cells[6, 1], newWorksheet.Cells[newWorksheet.UsedRange.Rows.Count, 1]).Interior.ColorIndex = 6;
                            newWorksheet.get_Range(newWorksheet.Cells[6, 2], newWorksheet.Cells[newWorksheet.UsedRange.Rows.Count, 9]).NumberFormat = "0.0000_ ";
                            newWorksheet.get_Range(newWorksheet.Cells[3, 1], newWorksheet.Cells[newWorksheet.UsedRange.Rows.Count, 9]).Font.Name = "楷体_GB2312";

                            //op = new FileStream((System.Windows.Forms.Application.StartupPath + "\\fck.excel"), FileMode.OpenOrCreate);
                            //str1 = new StreamWriter(op, Encoding.GetEncoding("GB2312"));

                            string fn = tlVectorControl1.SVGDocument.FileName;

                            //result1.Save(System.Windows.Forms.Application.StartupPath + "\\fck.xls");

                            newWorksheet.SaveAs(System.Windows.Forms.Application.StartupPath + "\\" + fn + "最优乘子法计算结果.xls", Excel.XlFileFormat.xlXMLSpreadsheet, null, null, false, false, false, null, null, null);

                            //str1.Write();
                            //op.Close();

                            System.Windows.Forms.Clipboard.Clear();
                            result1.Workbooks.Close();
                            result1.Quit();

                        }
                        catch (System.Exception e1)
                        {
                            MessageBox.Show("请进行潮流计算后再查看结果!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        }

                        break;
                    case "VoltEvaluation":
                        PspVoltEvaluation();
                        break;
                    case "PowerLoss":
                        try
                        {
                            PSPDEV _dev = new PSPDEV();
                            _dev.SvgUID = tlVectorControl1.SVGDocument.CurrentLayer.ID;
                            _dev.Type = "Polyline";
                            IList list = Services.BaseService.GetList("SelectPSPDEVBySvgUIDAndType", _dev);
                            for (int i = 0; i < list.Count; i++)
                            {
                                PSPDEV _pp = (PSPDEV)list[i];
                                if (_pp.BigP == 0)
                                {
                                    MessageBox.Show("请设置线路" + _pp.Name + "的建设投资。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                                    return;
                                }
                            }
                            if (File.Exists(System.Windows.Forms.Application.StartupPath + "\\DH1.txt"))
                            {
                            }
                            else
                            {
                                return;
                            }
                            dh = new FileStream(System.Windows.Forms.Application.StartupPath + "\\DH1.txt", FileMode.Open);
                            readLine = new StreamReader(dh);
                            charSplit = new char[] { ' ' };
                            strLine = readLine.ReadLine();
                            output = null;
                            output += ("全网交流线结果报表" + "\r\n" + "\r\n");
                            output += ("单位:kA\\kV\\MW\\Mvar" + "\r\n" + "\r\n");
                            output += ("支路名称" + "," + "支路有功" + "," + "支路无功" + "," + "有功损耗" + "," + "无功损耗" + "\r\n");
                            while (strLine != null)
                            {
                                array1 = strLine.Split(charSplit);
                                string[] dev = new string[9];
                                dev.Initialize();
                                int i = 0;
                                PSPDEV CR = new PSPDEV();
                            }
                        }
                        catch (System.Exception e1)
                        {
                            MessageBox.Show("请进行潮流计算后再查看结果!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        }

                        break;
                    case "ZLPResult1":
                        if (File.Exists(System.Windows.Forms.Application.StartupPath + "\\DH1.txt"))
                        {
                        }
                        else
                        {
                            return;
                        }
                        dh = new FileStream(System.Windows.Forms.Application.StartupPath + "\\DH1.txt", FileMode.Open);
                        readLine = new StreamReader(dh);
                        charSplit = new char[] { ' ' };
                        strLine = readLine.ReadLine();
                        output = null;
                        output += ("全网交流线结果报表" + "\r\n" + "\r\n");
                        output += ("单位:kA\\kV\\MW\\Mvar" + "\r\n" + "\r\n");
                        output += ("支路名称" + "," + "支路有功" + "," + "支路无功" + "," + "有功损耗" + "," + "无功损耗" + "\r\n");
                        while (strLine != null)
                        {
                            array1 = strLine.Split(charSplit);
                            string[] dev = new string[9];
                            dev.Initialize();
                            int i = 0;
                            PSPDEV CR = new PSPDEV();
                            CR.SvgUID = tlVectorControl1.SVGDocument.CurrentLayer.ID;

                            foreach (string str in array1)
                            {
                                if (str != "")
                                {
                                    if (str != "NaN")
                                    {
                                        dev[i++] = Convert.ToDouble(str).ToString();
                                    }
                                    else
                                    {
                                        dev[i++] = str;
                                    }

                                }

                            }
                            CR.Number = Convert.ToInt32(dev[0]);
                            CR.Type = "Polyline";
                            CR = (PSPDEV)Services.BaseService.GetObject("SelectPSPDEVByNumberAndSvgUIDAndType", CR);
                            output += CR.Name + "," + dev[3] + "," + dev[4] + "," + dev[5] + "," + dev[6] + "\r\n";
                            strLine = readLine.ReadLine();
                        }
                        readLine.Close();
                        if (File.Exists(System.Windows.Forms.Application.StartupPath + "\\result.csv"))
                        {
                            File.Delete(System.Windows.Forms.Application.StartupPath + "\\result.csv");
                        }
                        op = new FileStream((System.Windows.Forms.Application.StartupPath + "\\result.csv"), FileMode.OpenOrCreate);
                        str1 = new StreamWriter(op, Encoding.GetEncoding("GB2312"));
                        str1.Write(output);
                        str1.Close();

                        ex = new Excel.Application();
                        ex.Application.Workbooks.Add(System.Windows.Forms.Application.StartupPath + "\\result.csv");
                        ex.Visible = true;

                        break;

                    case "ZLAResult1":

                        if (File.Exists(System.Windows.Forms.Application.StartupPath + "\\IH1.txt"))
                        {
                        }
                        else
                        {
                            return;
                        }
                        dh = new FileStream(System.Windows.Forms.Application.StartupPath + "\\IH1.txt", FileMode.Open);
                        readLine = new StreamReader(dh);
                        charSplit = new char[] { ' ' };
                        strLine = readLine.ReadLine();
                        output = null;

                        output += ("支路名称" + "," + "电流幅值" + "," + "电流相角" + "," + "越限标志" + "\r\n");
                        while (strLine != null)
                        {
                            array1 = strLine.Split(charSplit);
                            string[] dev = new string[9];
                            dev.Initialize();
                            int i = 0;
                            PSPDEV CR = new PSPDEV();
                            CR.SvgUID = tlVectorControl1.SVGDocument.CurrentLayer.ID;

                            foreach (string str in array1)
                            {
                                if (str != "")
                                {
                                    if (str != "NaN")
                                    {
                                        dev[i++] = Convert.ToDouble(str).ToString();
                                    }
                                    else
                                    {
                                        dev[i++] = str;
                                    }

                                }

                            }
                            CR.Number = Convert.ToInt32(dev[0]);
                            CR.Type = "Polyline";
                            CR = (PSPDEV)Services.BaseService.GetObject("SelectPSPDEVByNumberAndSvgUIDAndType", CR);
                            output += CR.Name + "," + dev[3] + "," + dev[4] + "," + dev[5] + "\r\n";
                            strLine = readLine.ReadLine();
                        }
                        readLine.Close();
                        if (File.Exists(System.Windows.Forms.Application.StartupPath + "\\result.csv"))
                        {
                            File.Delete(System.Windows.Forms.Application.StartupPath + "\\result.csv");
                        }
                        op = new FileStream((System.Windows.Forms.Application.StartupPath + "\\result.csv"), FileMode.OpenOrCreate);
                        str1 = new StreamWriter(op, Encoding.GetEncoding("GB2312"));
                        str1.Write(output);
                        str1.Close();

                        ex = new Excel.Application();
                        ex.Application.Workbooks.Add(System.Windows.Forms.Application.StartupPath + "\\result.csv");
                        ex.Visible = true;

                        break;

                    case "PQResult":
                        try
                        {
                            if (!CheckPQ())
                            {
                                return;
                            }
                            PQ_PowerFlowCalClass pq = new PQ_PowerFlowCalClass();
                            pq.CurrentCal();
                            if (File.Exists(System.Windows.Forms.Application.StartupPath + "\\" + tlVectorControl1.SVGDocument.FileName + "PQ法计算结果.xls"))
                            {
                                //System.Diagnostics.Process.Start(System.Windows.Forms.Application.StartupPath + "\\" + tlVectorControl1.SVGDocument.FileName + "PQ法计算结果.xls");
                                File.Delete(System.Windows.Forms.Application.StartupPath + "\\" + tlVectorControl1.SVGDocument.FileName + "PQ法计算结果.xls");

                            }
                            double yinzi = 0, capability = 0, volt = 0, current = 0, Rad_to_Deg = 57.29577951;
                            PSPDEV benchmark = new PSPDEV();
                            benchmark.Type = "power";
                            benchmark.SvgUID = tlVectorControl1.SVGDocument.SvgdataUid;
                            IList list3 = Services.BaseService.GetList("SelectPSPDEVBySvgUIDAndType", benchmark);
                            if (list3 == null)
                            {
                                MessageBox.Show("请设置基准后再进行计算!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                                return;
                            }
                            foreach (PSPDEV dev in list3)
                            {
                                yinzi = Convert.ToDouble(dev.PowerFactor);
                                capability = Convert.ToDouble(dev.StandardCurrent);
                                volt = Convert.ToDouble(dev.StandardVolt);
                                if (dev.PowerFactor == 0)
                                {
                                    yinzi = 1;
                                }
                                if (dev.StandardCurrent == 0)
                                {
                                    capability = 1;
                                }
                                if (dev.StandardVolt == 0)
                                {
                                    volt = 1;
                                }
                                current = capability / (Math.Sqrt(3) * volt);

                            }
                            if (File.Exists(System.Windows.Forms.Application.StartupPath + "\\PF2.txt"))
                            {
                            }
                            else
                            {
                                return;
                            }
                            dh = new FileStream(System.Windows.Forms.Application.StartupPath + "\\PF2.txt", FileMode.Open);
                            readLine = new StreamReader(dh);

                            charSplit = new char[] { ' ' };
                            strLine = readLine.ReadLine();
                            output = null;
                            int count = 0;
                            output += ("全网母线(发电、负荷)结果报表 " + "\r\n" + "\r\n");
                            output += ("单位:kA\\kV\\MW\\Mvar" + "\r\n" + "\r\n");
                            output += ("母线名" + "," + "电压幅值" + "," + "电压相角" + "," + "有功发电" + "," + "无功发电" + "," + "有功负荷" + "," + "无功负荷" + "," + "越限标志" + "," + "过载标志" + "\r\n");
                            while (strLine != null && strLine != "")
                            {
                                array1 = strLine.Split(charSplit);
                                string[] dev = new string[9];
                                dev.Initialize();
                                int i = 0;
                                count++;
                                PSPDEV CR = new PSPDEV();
                                CR.SvgUID = tlVectorControl1.SVGDocument.CurrentLayer.ID;

                                foreach (string str in array1)
                                {
                                    if (str != "")
                                    {
                                        if (str != "NaN")
                                        {
                                            dev[i++] = Convert.ToDouble(str).ToString();
                                        }
                                        else
                                        {
                                            dev[i++] = str;
                                        }

                                    }

                                }

                                CR.Number = Convert.ToInt32(dev[0]);
                                CR.Type = "Use";
                                CR = (PSPDEV)Services.BaseService.GetObject("SelectPSPDEVByNumberAndSvgUIDAndType", CR);
                                double vTemp = Convert.ToDouble(dev[1]) * volt;
                                double vTemp1 = volt * 95 / 100;
                                double vTemp2 = volt * 105 / 100;

                                if (vTemp >= vTemp1 && vTemp <= vTemp2)
                                {
                                    dev[5] = "0";
                                }
                                else
                                {
                                    dev[5] = "1";
                                }
                                if (Convert.ToDouble(dev[3]) * capability > Convert.ToDouble(CR.Burthen))
                                {
                                    dev[6] = "1";
                                }
                                else
                                {
                                    dev[6] = "0";
                                }
                                if (Convert.ToDouble(dev[3]) < 0)
                                {

                                    output += CR.Name + "," + (Convert.ToDouble(dev[1]) * volt).ToString() + "," + (Convert.ToDouble(dev[2])).ToString() + "," + "0" + "," + "0" + "," + (Convert.ToDouble(dev[3]) * capability).ToString() + "," + (Convert.ToDouble(dev[4]) * capability).ToString() + "," + dev[5] + "," + dev[6] + "\r\n";
                                }
                                else
                                {

                                    output += CR.Name + "," + (Convert.ToDouble(dev[1]) * volt).ToString() + "," + (Convert.ToDouble(dev[2])).ToString() + "," + (Convert.ToDouble(dev[3]) * capability).ToString() + "," + (Convert.ToDouble(dev[4]) * capability).ToString() + "," + "0" + "," + "0" + "," + dev[5] + "," + dev[6] + "\r\n";
                                }
                                strLine = readLine.ReadLine();
                            }
                            PSPDEV ct = new PSPDEV();
                            ct.SvgUID = tlVectorControl1.SVGDocument.CurrentLayer.ID;
                            ct.Type = "Use";
                            IList cont = Services.BaseService.GetList("SelectPSPDEVBySvgUIDAndType", ct);
                            if (count < cont.Count)
                            {
                                MessageBox.Show("请进行潮流计算后再查看结果!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                                readLine.Close();
                                return;

                            }
                            readLine.Close();

                            if (File.Exists(System.Windows.Forms.Application.StartupPath + "\\result.csv"))
                            {
                                File.Delete(System.Windows.Forms.Application.StartupPath + "\\result.csv");
                            }
                            op = new FileStream((System.Windows.Forms.Application.StartupPath + "\\result.csv"), FileMode.OpenOrCreate);
                            str1 = new StreamWriter(op, Encoding.GetEncoding("GB2312"));
                            str1.Write(output);
                            str1.Close();

                            if (File.Exists(System.Windows.Forms.Application.StartupPath + "\\DH2.txt"))
                            {
                            }
                            else
                            {
                                return;
                            }
                            if (File.Exists(System.Windows.Forms.Application.StartupPath + "\\IH2.txt"))
                            {
                            }
                            else
                            {
                                return;
                            }
                            dh = new FileStream(System.Windows.Forms.Application.StartupPath + "\\DH2.txt", FileMode.Open);
                            dh2 = new FileStream(System.Windows.Forms.Application.StartupPath + "\\IH2.txt", FileMode.Open);
                            readLine2 = new StreamReader(dh2);

                            readLine = new StreamReader(dh);
                            charSplit = new char[] { ' ' };
                            strLine = readLine.ReadLine();
                            charSplit2 = new char[] { ' ' };
                            strLine2 = readLine2.ReadLine();
                            output = null;
                            output += ("全网交流线结果报表" + "\r\n" + "\r\n");
                            output += ("单位:kA\\kV\\MW\\Mvar" + "\r\n" + "\r\n");
                            output += ("支路名称" + "," + "支路有功" + "," + "支路无功" + "," + "有功损耗" + "," + "无功损耗" + "," + "电流幅值" + "," + "电流相角" + "," + "越限标志" + "," + "\r\n");
                            while (strLine != null && strLine2 != null && strLine != "" && strLine2 != "")
                            {
                                array1 = strLine.Split(charSplit);
                                array2 = strLine2.Split(charSplit2);

                                string[] dev = new string[20];
                                dev.Initialize();
                                int i = 0;
                                PSPDEV CR = new PSPDEV();
                                CR.SvgUID = tlVectorControl1.SVGDocument.CurrentLayer.ID;

                                foreach (string str in array1)
                                {
                                    if (str != "")
                                    {
                                        if (i == 0)
                                        {
                                            dev[i++] = str.ToString();
                                        }
                                        else
                                        {
                                            if (str != "NaN")
                                            {
                                                dev[i++] = Convert.ToDouble(str).ToString();
                                            }
                                            else
                                            {
                                                dev[i++] = str;
                                            }

                                        }
                                    }

                                }
                                i = 7;
                                for (int j = 3; j < 5; j++)
                                {
                                    if (array2[j] != "")
                                    {
                                        if (array2[j] != "NaN")
                                        {
                                            dev[i++] = Convert.ToDouble(array2[j]).ToString();
                                        }
                                        else
                                        {
                                            dev[i++] = array2[j];
                                        }
                                    }

                                }
                                CR.Name = dev[0];
                                CR.Type = "Polyline";
                                CR = (PSPDEV)Services.BaseService.GetObject("SelectPSPDEVByName", CR);

                                if (CR != null)
                                {
                                    if (Convert.ToDouble(dev[7]) * current * 1000 > CR.LineChange)
                                    {
                                        dev[11] = "1";
                                    }
                                    else
                                    {
                                        dev[11] = "0";
                                    }
                                    output += CR.Name + "," + (Convert.ToDouble(dev[3]) * capability).ToString() + "," + (Convert.ToDouble(dev[4]) * capability).ToString() + "," + (Convert.ToDouble(dev[5]) * capability).ToString() + "," + (Convert.ToDouble(dev[6]) * capability).ToString() + "," + (Convert.ToDouble(dev[7]) * current).ToString() + "," + (Convert.ToDouble(dev[8]) * Rad_to_Deg).ToString() + "," + dev[11] + "," + "\r\n";
                                }
                                else
                                {
                                    CR = new PSPDEV();
                                    CR.Name = dev[0];
                                    CR.Type = "TransformLine";
                                    CR.SvgUID = tlVectorControl1.SVGDocument.CurrentLayer.ID;
                                    CR = (PSPDEV)Services.BaseService.GetObject("SelectPSPDEVByName", CR);
                                    if (CR != null)
                                    {
                                        if (Convert.ToDouble(dev[7]) * current * 1000 > CR.LineChange)
                                        {
                                            dev[11] = "1";
                                        }
                                        else
                                        {
                                            dev[11] = "0";
                                        }
                                        output += CR.Name + "," + (Convert.ToDouble(dev[3]) * capability).ToString() + "," + (Convert.ToDouble(dev[4]) * capability).ToString() + "," + (Convert.ToDouble(dev[5]) * capability).ToString() + "," + (Convert.ToDouble(dev[6]) * capability).ToString() + "," + (Convert.ToDouble(dev[7]) * current).ToString() + "," + (Convert.ToDouble(dev[8]) * Rad_to_Deg).ToString() + "," + dev[11] + "," + "\r\n";
                                    }
                                }

                                strLine = readLine.ReadLine();
                                strLine2 = readLine2.ReadLine();
                            }
                            readLine.Close();
                            readLine2.Close();

                            if (File.Exists(System.Windows.Forms.Application.StartupPath + "\\result1.csv"))
                            {
                                File.Delete(System.Windows.Forms.Application.StartupPath + "\\result1.csv");
                            }
                            op = new FileStream((System.Windows.Forms.Application.StartupPath + "\\result1.csv"), FileMode.OpenOrCreate);
                            str1 = new StreamWriter(op, Encoding.GetEncoding("GB2312"));
                            str1.Write(output);
                            str1.Close();

                            Excel.Application ex2 = new Excel.Application();
                            ex2.Application.Workbooks.Add(System.Windows.Forms.Application.StartupPath + "\\result.csv");
                            Excel.Worksheet xSheet2 = (Excel.Worksheet)ex2.Worksheets[1];
                            ex2.Worksheets.Add(System.Reflection.Missing.Value, xSheet2, 1, System.Reflection.Missing.Value);

                            Excel.Application result11 = new Excel.Application();
                            result11.Application.Workbooks.Add(System.Windows.Forms.Application.StartupPath + "\\result1.csv");
                            Excel.Application result12 = new Excel.Application();

                            Excel.Worksheet tempSheet11 = (Excel.Worksheet)result11.Worksheets.get_Item(1);

                            Excel.Worksheet newWorksheet11 = (Excel.Worksheet)ex2.Worksheets.get_Item(2);

                            newWorksheet11.Name = "线路电流";
                            xSheet2.Name = "母线潮流";

                            ex2.Visible = true;
                            tempSheet11.Cells.Select();
                            tempSheet11.Cells.Copy(System.Reflection.Missing.Value);
                            newWorksheet11.Paste(System.Reflection.Missing.Value, System.Reflection.Missing.Value);
                            xSheet2.Rows.AutoFit();
                            xSheet2.Columns.AutoFit();
                            newWorksheet11.Rows.AutoFit();
                            newWorksheet11.Columns.AutoFit();

                            xSheet2.get_Range(xSheet2.Cells[1, 1], xSheet2.Cells[1, 9]).MergeCells = true;
                            xSheet2.get_Range(xSheet2.Cells[1, 1], xSheet2.Cells[1, 1]).Font.Size = 20;
                            xSheet2.get_Range(xSheet2.Cells[1, 1], xSheet2.Cells[1, 1]).Font.Name = "黑体";
                            xSheet2.get_Range(xSheet2.Cells[1, 1], xSheet2.Cells[1, 1]).HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;
                            xSheet2.get_Range(xSheet2.Cells[5, 1], xSheet2.Cells[5, 9]).Interior.ColorIndex = 45;
                            xSheet2.get_Range(xSheet2.Cells[6, 1], xSheet2.Cells[xSheet2.UsedRange.Rows.Count, 1]).Interior.ColorIndex = 6;
                            xSheet2.get_Range(xSheet2.Cells[6, 2], xSheet2.Cells[xSheet2.UsedRange.Rows.Count, 9]).NumberFormat = "0.0000_ ";
                            xSheet2.get_Range(xSheet2.Cells[3, 1], xSheet2.Cells[xSheet2.UsedRange.Rows.Count, 9]).Font.Name = "楷体_GB2312";

                            newWorksheet11.get_Range(newWorksheet11.Cells[1, 1], newWorksheet11.Cells[1, 9]).MergeCells = true;
                            newWorksheet11.get_Range(newWorksheet11.Cells[1, 1], newWorksheet11.Cells[1, 1]).Font.Size = 20;
                            newWorksheet11.get_Range(newWorksheet11.Cells[1, 1], newWorksheet11.Cells[1, 1]).Font.Name = "黑体";
                            newWorksheet11.get_Range(newWorksheet11.Cells[1, 1], newWorksheet11.Cells[1, 1]).HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;
                            newWorksheet11.get_Range(newWorksheet11.Cells[5, 1], newWorksheet11.Cells[5, 8]).Interior.ColorIndex = 45;
                            newWorksheet11.get_Range(newWorksheet11.Cells[6, 1], newWorksheet11.Cells[newWorksheet11.UsedRange.Rows.Count, 1]).Interior.ColorIndex = 6;
                            newWorksheet11.get_Range(newWorksheet11.Cells[6, 2], newWorksheet11.Cells[newWorksheet11.UsedRange.Rows.Count, 9]).NumberFormat = "0.0000_ ";
                            newWorksheet11.get_Range(newWorksheet11.Cells[3, 1], newWorksheet11.Cells[newWorksheet11.UsedRange.Rows.Count, 9]).Font.Name = "楷体_GB2312";

                            string fn = tlVectorControl1.SVGDocument.FileName;

                            //result1.Save(System.Windows.Forms.Application.StartupPath + "\\fck.xls");

                            newWorksheet11.SaveAs(System.Windows.Forms.Application.StartupPath + "\\" + fn + "PQ法计算结果.xls", Excel.XlFileFormat.xlXMLSpreadsheet, null, null, false, false, false, null, null, null);

                            System.Windows.Forms.Clipboard.Clear();

                            result11.Workbooks.Close();
                            result11.Quit();

                        }
                        catch (System.Exception e3)
                        {
                            MessageBox.Show("请进行潮流计算后再查看结果!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        }

                        break;

                    case "mDLR":

                        if (File.Exists(System.Windows.Forms.Application.StartupPath + "\\result.txt"))
                        {
                        }
                        else
                        {
                            return;
                        }
                        int ij = 1;
                        dh = new FileStream(System.Windows.Forms.Application.StartupPath + "\\result.txt", FileMode.Open);
                        readLine = new StreamReader(dh);

                        charSplit = new char[] { ' ' };
                        strLine = readLine.ReadLine();
                        output = null;

                        FileStream dh5 = new FileStream(System.Windows.Forms.Application.StartupPath + "\\dlb.txt", FileMode.Open);
                        StreamReader readLine5 = new StreamReader(dh5);
                        string strLine5;
                        string[] array5;
                        char[] charSplit5 = new char[] { ' ' };
                        strLine5 = readLine5.ReadLine();
                        array5 = strLine5.Split(charSplit5);

                        output += ("全网短路计算结果报表" + "\r\n" + "\r\n");

                        PSPDEV CR235 = new PSPDEV();
                        CR235.SvgUID = tlVectorControl1.SVGDocument.CurrentLayer.ID;
                        CR235.Number = Convert.ToInt32(array5[0]);
                        CR235.Type = array5[1];
                        double ibb = 0;
                        double temp11 = 0;
                        CR235 = (PSPDEV)Services.BaseService.GetObject("SelectPSPDEVByNumberAndSvgUIDAndType", CR235);

                        if (CR235 == null)
                        {
                            MessageBox.Show("错误!当前图元与结果报表不符!");
                            readLine.Close();
                            readLine5.Close();
                            return;
                        }
                        output += ("短路点" + ":" + " " + CR235.Name + "   " + "故障类型" + ":" + " " + array5[2] + "\r\n" + "\r\n");

                        output += ("名称" + "," + "零序电流" + "," + "正序电流" + "," + "负序电流" + "," + "A相电流" + "," + "B相电流" + "," + "C相电流" + "," + "短路电流" + "," + "短路容量" + "," + "\r\n");
                        while (strLine != null)
                        {
                            array1 = strLine.Split(charSplit);
                            string[] dev = new string[9];
                            dev.Initialize();
                            int i = 0;
                            PSPDEV CR2 = new PSPDEV();
                            CR2.SvgUID = tlVectorControl1.SVGDocument.CurrentLayer.ID;
                            foreach (string str in array1)
                            {
                                if (str != "")
                                {
                                    if (str != "NaN")
                                    {
                                        dev[i++] = Convert.ToDouble(str).ToString();
                                    }
                                    else
                                    {
                                        dev[i++] = str;
                                    }

                                }

                            }

                            //CR2.Number = Convert.ToInt32(dev[2]);
                            //CR2.Type = "Use";
                            //CR2 = (PSPDEV)Services.BaseService.GetObject("SelectPSPDEVByNumberAndSvgUIDAndType", CR2);
                            CR2.Number = Convert.ToInt32(array5[0]);
                            CR2.Type = array5[1];
                            string nodeName = CR2.Name;

                            CR2 = (PSPDEV)Services.BaseService.GetObject("SelectPSPDEVByNumberAndSvgUIDAndType", CR2);
                            int vr = Convert.ToInt32(CR2.VoltR);

                            switch (vr)
                            {
                                case 220:
                                    {
                                        ibb = 251.03;
                                        for (int j = 3; j < 9; j++)
                                        {
                                            temp11 = Convert.ToDouble(dev[j]) * ibb * 0.001;
                                            dev[j] = temp11.ToString();
                                        }
                                        ibb = Convert.ToDouble(dev[4]) * 3;
                                        temp11 = 1.732 * ibb * 230;

                                    }
                                    break;
                                case 500:
                                    {
                                        ibb = 104.98;
                                        for (int j = 3; j < 9; j++)
                                        {
                                            temp11 = Convert.ToDouble(dev[j]) * ibb * 0.001;
                                            dev[j] = temp11.ToString();
                                        }
                                        ibb = Convert.ToDouble(dev[4]) * 3;
                                        temp11 = 1.732 * ibb * 550;

                                    }
                                    break;
                                default:
                                    { }
                                    break;
                            }
                            if (ij == 1)
                            {
                                output += CR2.Name + "," + dev[3] + "," + dev[4] + "," + dev[5] + "," + dev[6] + "," + dev[7] + "," + dev[8] + "," + ibb.ToString() + "," + temp11.ToString() + "," + "\r\n";
                            }
                            else
                            {
                                CR2.Number = Convert.ToInt32(dev[2]);

                                CR2.Type = "Polyline";
                                CR2 = (PSPDEV)Services.BaseService.GetObject("SelectPSPDEVByNumberAndSvgUIDAndType", CR2);

                                //output += CR2.Name + "," + dev[3] + "," + dev[4] + "," + dev[5] + "," + dev[6] + "," + dev[7] + "," + dev[8] + "\r\n";
                                if (CR2 != null)
                                {
                                    output += CR2.Name + "," + dev[3] + "," + dev[4] + "," + dev[5] + "," + dev[6] + "," + dev[7] + "," + dev[8] + "\r\n";
                                }
                                else if (dev[2] == "500")
                                {
                                    output += nodeName + "故障生成线路" + "," + dev[3] + "," + dev[4] + "," + dev[5] + "," + dev[6] + "," + dev[7] + "," + dev[8] + "\r\n";
                                }
                            }
                            ij = 0;
                            strLine = readLine.ReadLine();
                        }
                        readLine.Close();
                        readLine5.Close();
                        if (File.Exists(System.Windows.Forms.Application.StartupPath + "\\result.csv"))
                        {
                            File.Delete(System.Windows.Forms.Application.StartupPath + "\\result.csv");
                        }
                        op = new FileStream((System.Windows.Forms.Application.StartupPath + "\\result.csv"), FileMode.OpenOrCreate);
                        str1 = new StreamWriter(op, Encoding.GetEncoding("GB2312"));
                        str1.Write(output);
                        str1.Close();

                        ex = new Excel.Application();
                        ex.Application.Workbooks.Add(System.Windows.Forms.Application.StartupPath + "\\result.csv");
                        //ex.Visible = true;

                        //Excel.Application 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);

                        //result1 = new Excel.Application();
                        //result1.Application.Workbooks.Add(System.Windows.Forms.Application.StartupPath + "\\result1.csv");
                        //tempSheet = (Excel.Worksheet)result1.Worksheets.get_Item(1);
                        //Excel.Worksheet newWorksheet = (Excel.Worksheet)ex.Worksheets.get_Item(2);
                        //newWorksheet.Name = "线路电流";
                        xSheet.Name = "短路计算";

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

                        xSheet.get_Range(xSheet.Cells[1, 1], xSheet.Cells[1, 9]).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, 1]).Font.Name = "楷体_GB2312";

                        xSheet.get_Range(xSheet.Cells[5, 1], xSheet.Cells[5, 9]).Interior.ColorIndex = 45;

                        xSheet.get_Range(xSheet.Cells[6, 1], xSheet.Cells[xSheet.UsedRange.Rows.Count, 1]).Interior.ColorIndex = 6;
                        xSheet.get_Range(xSheet.Cells[8, 2], xSheet.Cells[xSheet.UsedRange.Rows.Count, 9]).NumberFormat = "0.0000_ ";
                        xSheet.get_Range(xSheet.Cells[5, 1], xSheet.Cells[xSheet.UsedRange.Rows.Count, 9]).Font.Name = "楷体_GB2312";

                        System.Windows.Forms.Clipboard.Clear();
                        //result1.Workbooks.Close();
                        //result1.Quit();
                        ex.Visible = true;
                        break;

                    case "mEnclosure":
                        tlVectorControl1.Operation = ToolOperation.Enclosure;

                        break;

                    case "mGroup":
                        tlVectorControl1.Group();
                        break;
                    case "mUnGroup":
                        tlVectorControl1.UnGroup();
                        break;
                    case "mlinelx":
                        tlVectorControl1.Operation = ToolOperation.ConnectLine_Line;
                        break;
                    case "mzxlx":
                        tlVectorControl1.Operation = ToolOperation.ConnectLine_Rightangle;
                        break;
                    case "mqxlx":
                        tlVectorControl1.Operation = ToolOperation.ConnectLine_Spline;
                        break;
                    case "mqzlx":
                        tlVectorControl1.Operation = ToolOperation.ConnectLine_Polyline;
                        break;
                    case "mCJ1":
                        tlVectorControl1.Operation = ToolOperation.PolyLine;
                        csOperation = CustomOperation.OP_MeasureDistance;
                        break;
                    case "powerFactor":
                        PSPDEV pspDev21 = new PSPDEV();

                        //pspDev2.SUID = Guid.NewGuid().ToString();
                        pspDev21.Type = "Power";
                        pspDev21.SvgUID = tlVectorControl1.SVGDocument.SvgdataUid;
                        pspDev21 = (PSPDEV)Services.BaseService.GetObject("SelectPSPDEVBySvgUIDAndType", pspDev21);
                        if (pspDev21 != null)
                        {
                        }
                        else
                        {
                            pspDev21 = new PSPDEV();
                            pspDev21.SUID = Guid.NewGuid().ToString();
                            pspDev21.Type = "Power";
                            pspDev21.SvgUID = tlVectorControl1.SVGDocument.SvgdataUid;
                            Services.BaseService.Create<PSPDEV>(pspDev21);
                        }
                        powerf ppz = new powerf(pspDev21);
                        if (ppz.ShowDialog() == DialogResult.OK)
                        {
                            pspDev21.PowerFactor = Convert.ToDouble(ppz.powerfactor);
                            pspDev21.StandardVolt = Convert.ToDouble(ppz.standardvolt);
                            pspDev21.StandardCurrent = Convert.ToDouble(ppz.standardcurrent);
                            pspDev21.BigP = Convert.ToDouble(ppz.bigP);
                            Services.BaseService.Update<PSPDEV>(pspDev21);
                            PSPDEV voltall = new PSPDEV();
                            voltall.Type = "Use";
                            voltall.Lable = "电厂";
                            voltall.SvgUID = tlVectorControl1.SVGDocument.CurrentLayer.ID;
                            IList allvolt = Services.BaseService.GetList("SelectPSPDEVBySvgUIDandLableandType", voltall);
                            foreach (PSPDEV dev in allvolt)
                            {
                                dev.OutP = Convert.ToDouble(dev.Burthen) * pspDev21.BigP;
                                //dev.InPutP=dev.Burthen*pspDev2.BigP;
                                dev.OutQ = dev.OutP * Math.Tan(Math.Acos(pspDev21.PowerFactor));
                                Services.BaseService.Update<PSPDEV>(dev);
                            }
                            voltall.Lable = "变电站";
                            allvolt = Services.BaseService.GetList("SelectPSPDEVBySvgUIDandLableandType", voltall);
                            foreach (PSPDEV dev in allvolt)
                            {
                                dev.InPutP = Convert.ToDouble(dev.Burthen) * pspDev21.BigP;
                                //dev.InPutP=dev.Burthen*pspDev2.BigP;
                                dev.InPutQ = dev.InPutP * pspDev21.BigP * Math.Tan(Math.Acos(pspDev21.PowerFactor));
                                Services.BaseService.Update<PSPDEV>(dev);
                            }

                        }

                        break;
                    //if (=null)
                    //{

                    #endregion

                    #region 视图
                    case "mLayer":
                        frmlar.Show();
                        break;
                    case "mOption":
                        tlVectorControl1.SetOption();
                        break;
                    case "mAirscape":
                        frmAirscape fAir = new frmAirscape();
                        fAir.InitData(tlVectorControl1);
                        fAir.Owner = this;
                        fAir.ShowInTaskbar = false;
                        fAir.Top = Screen.PrimaryScreen.WorkingArea.Height - 250;
                        fAir.Left = Screen.PrimaryScreen.WorkingArea.Width - 300;
                        fAir.Show();
                        break;
                    case "btTL":
                        frmGlebeTypeList fgle = new frmGlebeTypeList();
                        fgle.Show();
                        break;
                    #endregion

                    #region 布局,对齐,顺序
                    case "mRotate":
                        if (btItem.Tag is ButtonItem)
                        {
                            btItem = btItem.Tag as ButtonItem;
                            tlVectorControl1.FlipX();

                        }
                        else
                        {
                            tlVectorControl1.FlipX();
                        }
                        break;
                    case "mToH":

                        tlVectorControl1.FlipX();
                        //this.rotateButton.Tag = btItem;
                        //this.rotateButton.ImageIndex = btItem.ImageIndex;
                        break;
                    case "mToV":
                        tlVectorControl1.FlipY();
                        //this.rotateButton.Tag = btItem;
                        //this.rotateButton.ImageIndex = btItem.ImageIndex;
                        break;
                    case "mToLeft":
                        tlVectorControl1.RotateSelection(-90f);
                        ////this.rotateButton.Tag = btItem;
                        ////this.rotateButton.ImageIndex = btItem.ImageIndex;
                        break;
                    case "mToRight":
                        tlVectorControl1.RotateSelection(90f);
                        //this.rotateButton.Tag = btItem;
                        //this.rotateButton.ImageIndex = btItem.ImageIndex;
                        break;
                    case "mAlign":
                        if (btItem.Tag is ButtonItem)
                        {
                            btItem = btItem.Tag as ButtonItem;
                            tlVectorControl1.Align(AlignType.Left);

                        }
                        else
                        {
                            tlVectorControl1.Align(AlignType.Left);

                        }
                        tlVectorControl1.Refresh();
                        break;
                    case "mAlignLeft":
                        tlVectorControl1.Align(AlignType.Left);
                        this.alignButton.ImageIndex = btItem.ImageIndex;
                        this.alignButton.Tag = btItem;
                        tlVectorControl1.Refresh();
                        break;
                    case "mAlignRight":
                        tlVectorControl1.Align(AlignType.Right);
                        this.alignButton.ImageIndex = btItem.ImageIndex;
                        this.alignButton.Tag = btItem;
                        tlVectorControl1.Refresh();
                        break;
                    case "mAlignTop":
                        tlVectorControl1.Align(AlignType.Top);
                        this.alignButton.ImageIndex = btItem.ImageIndex;
                        this.alignButton.Tag = btItem;
                        tlVectorControl1.Refresh();
                        break;
                    case "mAlignBottom":
                        tlVectorControl1.Align(AlignType.Bottom);
                        this.alignButton.ImageIndex = btItem.ImageIndex;
                        this.alignButton.Tag = btItem;
                        tlVectorControl1.Refresh();
                        break;
                    case "mAlignHorizontalCenter":
                        tlVectorControl1.Align(AlignType.HorizontalCenter);
                        this.alignButton.ImageIndex = btItem.ImageIndex;
                        this.alignButton.Tag = btItem;
                        tlVectorControl1.Refresh();
                        break;
                    case "mAlignVerticalCenter":
                        tlVectorControl1.Align(AlignType.VerticalCenter);
                        this.alignButton.ImageIndex = btItem.ImageIndex;
                        this.alignButton.Tag = btItem;
                        tlVectorControl1.Refresh();
                        break;
                    case "mOrder":
                        if (btItem.Tag is ButtonItem)
                        {
                            btItem = btItem.Tag as ButtonItem;
                            tlVectorControl1.ChangeLevel(LevelType.Top);

                        }
                        else
                        {
                            tlVectorControl1.ChangeLevel(LevelType.Top);
                        }

                        break;
                    case "mGoTop":
                        tlVectorControl1.ChangeLevel(LevelType.Top);
                        this.orderButton.Tag = btItem;
                        this.orderButton.ImageIndex = btItem.ImageIndex;
                        break;
                    case "mGoUp":
                        tlVectorControl1.ChangeLevel(LevelType.Up);
                        this.orderButton.Tag = btItem;
                        this.orderButton.ImageIndex = btItem.ImageIndex;
                        break;
                    case "mGoDown":
                        tlVectorControl1.ChangeLevel(LevelType.Down);
                        this.orderButton.Tag = btItem;
                        this.orderButton.ImageIndex = btItem.ImageIndex;
                        break;
                    case "mGoBottom":
                        tlVectorControl1.ChangeLevel(LevelType.Bottom);
                        this.orderButton.Tag = btItem;
                        this.orderButton.ImageIndex = btItem.ImageIndex;
                        break;
                    #endregion
                    #region 图元操作
                    case "mCopy":
                        tlVectorControl1.Copy();
                        break;
                    case "mCut":
                        tlVectorControl1.Cut();
                        break;
                    case "mPaste":
                        tlVectorControl1.Paste();
                        break;
                    case "mDelete":
                        if (tlVectorControl1.SVGDocument.CurrentElement is SVG)
                        {
                        }
                        else
                        {
                            if (MessageBox.Show("确定要删除么?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                            {
                                SvgElementCollection collection = tlVectorControl1.SVGDocument.SelectCollection;
                                foreach (XmlElement element in collection)
                                {
                                    PSPDEV pspDev = new PSPDEV();
                                    pspDev.EleID = element.GetAttribute("id");
                                    pspDev.SvgUID = tlVectorControl1.SVGDocument.CurrentLayer.ID;
                                    pspDev = (PSPDEV)Services.BaseService.GetObject("SelectPSPDEVBySvgUIDandEleID", pspDev);
                                    Services.BaseService.Delete<PSPDEV>(pspDev);
                                }
                                tlVectorControl1.Delete();
                            }

                        }
                        break;
                    case "mUodo":
                        tlVectorControl1.Undo();
                        break;
                    case "mRedo":
                        tlVectorControl1.Redo();
                        break;
                    #endregion
                    #region 业务操作

                    case "mXLine":
                        tlVectorControl1.Operation = ToolOperation.Select;
                        tlVectorControl1.Operation = ToolOperation.XPolyLine;
                        break;
                    case "mYLine":
                        tlVectorControl1.Operation = ToolOperation.Select;
                        tlVectorControl1.Operation = ToolOperation.YPolyLine;
                        break;

                    case "mSaveGroup":
                        if (tlVectorControl1.SVGDocument.SelectCollection.Count > 1)
                        {
                            string content = "<svg>";
                            SvgElementCollection col = tlVectorControl1.SVGDocument.SelectCollection;
                            for (int i = 0; i < col.Count; i++)
                            {
                                SvgElement _e = (SvgElement)col[i];
                                if (_e.ID != "svg")
                                {
                                    content = content + _e.OuterXml;
                                }
                            }
                            RectangleF rect = tlVectorControl1.DrawArea.viewer.SelectedViewRectangle;

                            content = content + "</svg>";
                            frmSaveGroup fm = new frmSaveGroup();
                            fm.rect = rect;
                            fm.Content = content;
                            fm.ShowDialog();
                        }
                        else
                        {
                            MessageBox.Show("请至少选择2个图元。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                            return;
                        }
                        break;

                    case "mInsert":
                        frmUseGroup fg = new frmUseGroup();
                        if (fg.ShowDialog() == DialogResult.OK)
                        {
                            UseGroup u = fg.SelectedUseGroup;
                            if (u != null)
                            {
                                frmXY xy = new frmXY();
                                if (xy.ShowDialog() == DialogResult.OK)
                                {
                                    decimal x = xy.GetX();
                                    decimal y = xy.GetY();
                                    string content = u.Content;
                                    XmlDocument doc = new XmlDocument();
                                    doc.LoadXml(u.Content);
                                    XmlNodeList list = doc.ChildNodes;
                                    XmlNode _node = list[0];
                                    XmlNodeList sonlist = _node.ChildNodes;
                                    XmlElement ele = tlVectorControl1.SVGDocument.CreateElement("g");
                                    ele.SetAttribute("layer", SvgDocument.currentLayer);
                                    for (int i = 0; i < sonlist.Count; i++)
                                    {
                                        XmlNode _sonnode = sonlist[i];
                                        //string str = _sonnode.OuterXml;
                                        if (_sonnode.Name == "use")
                                        {
                                            string sid = ((XmlElement)_sonnode).GetAttribute("xlink:href");
                                            XmlNode _snode = symbolSelector.SymbolDoc.SelectSingleNode("//*[@id='" + sid.Substring(1) + "']");
                                            tlVectorControl1.SVGDocument.AddDefsElement((SvgElement)_snode);
                                        }
                                        ele.AppendChild(_sonnode);
                                        string ss = ele.OuterXml;
                                    }
                                    //RectangleF r=((Group)ele).GetBounds();
                                    string tr = "matrix(1,0,0,1,";

                                    tr = tr + Convert.ToString(x - Convert.ToDecimal(u.X)) + ",";
                                    tr = tr + Convert.ToString(y - Convert.ToDecimal(u.Y)) + ")";

                                    ele.SetAttribute("transform", tr);
                                    // transform="matrix(1,0,0,1,2558.82,-352.94)"
                                    tlVectorControl1.SVGDocument.RootElement.AppendChild(ele);
                                    tlVectorControl1.SVGDocument.SelectCollection.Clear();
                                    tlVectorControl1.SVGDocument.SelectCollection.Add((SvgElement)ele);
                                    tlVectorControl1.UnGroup();
                                    // tlVectorControl1.Refresh();
                                }
                            }
                        }
                        break;
                    #endregion
                    #region 参数维护
                    case "mNodeParam":
                        frmNodeParam dlgNodeParam = new frmNodeParam(tlVectorControl1.SVGDocument.CurrentLayer.ID);
                        dlgNodeParam.ShowDialog();
                        break;
                    case "mLineParam":
                        frmLineParamWJ dlgLineParam = new frmLineParamWJ(tlVectorControl1.SVGDocument.CurrentLayer.ID);
                        dlgLineParam.ShowDialog();
                        break;
                    case "mWire":
                        wireTypeParam wirewire = new wireTypeParam();
                        wirewire.ShowDialog();
                        break;
                    case "nTransformLineParam":
                        frmTransformLineParam frmTransfor = new frmTransformLineParam(tlVectorControl1.SVGDocument.CurrentLayer.ID);
                        frmTransfor.ShowDialog();
                        break;
                    case "nGNDLineParam":
                        break;
                    case "mLineDL":
                        frmLineParamDL dlgLineParamDL = new frmLineParamDL(tlVectorControl1.SVGDocument.CurrentLayer.ID);
                        dlgLineParamDL.ShowDialog();
                        break;
                    case "mFadianDL":
                        frmFadejieDL dlgFadeDL = new frmFadejieDL(tlVectorControl1.SVGDocument.CurrentLayer.ID);
                        dlgFadeDL.ShowDialog();
                        break;
                    case "mTest":
                        tlVectorControl1.Operation = ToolOperation.AreaSelect;
                        break;
                    case "mjianLine":

                        if (tlVectorControl1.SVGDocument.CurrentLayer.ID == tlVectorControl1.SVGDocument.SvgdataUid + "4")
                        {
                            zhengtiflag = true;
                            jiqiflag = false;
                            zhongqiflag = false;
                            yuanqiflag = false;
                            jianxiancheck();

                            MessageBox.Show("整体数据减线成功。");
                            Topology2();             //颜色发生变化
                        }
                        if (tlVectorControl1.SVGDocument.CurrentLayer.ID == tlVectorControl1.SVGDocument.SvgdataUid + "1" && zhengtiflag)
                        {
                            jiqiflag = true;
                            zhengtiflag = false;
                            zhongqiflag = false;
                            yuanqiflag = false;
                            jianxiancheck();

                            MessageBox.Show("近期数据减线成功。");
                            Topology2();             //颜色发生变化
                        }
                        if (tlVectorControl1.SVGDocument.CurrentLayer.ID == tlVectorControl1.SVGDocument.SvgdataUid + "2" && jiqiflag)
                        {
                            zhongqiflag = true;
                            jiqiflag = false;
                            yuanqiflag = false;
                            jianxiancheck();

                            MessageBox.Show("中期数据减线成功。");
                            Topology2();             //颜色发生变化
                        }
                        if (tlVectorControl1.SVGDocument.CurrentLayer.ID == tlVectorControl1.SVGDocument.SvgdataUid + "3" && zhongqiflag)
                        {
                            yuanqiflag = true;
                            jiqiflag = false;
                            zhongqiflag = false;
                            jianxiancheck();

                            MessageBox.Show("远期数据减线成功,请查看结果");
                            Topology2();             //颜色发生变化
                        }
                        if (!zhengtiflag && !jiqiflag && !zhongqiflag && !yuanqiflag)
                        {
                            string msg2 = "减线法:\r\n 1、选中整体图层进行网架优化。\r\n 2、将整体图层拷贝到近期图层,然后选中近期图层进行网架优化。\r\n 3、拷贝到中期图层,然后选中中期图层进行网架优化\r\n 4、拷贝到远期图层,然后选中远期图层进行网架优化。";
                            MessageBox.Show(msg2, "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);

                        }
                        break;
                    case "mjiaLine":

                        if (tlVectorControl1.SVGDocument.CurrentLayer.ID == tlVectorControl1.SVGDocument.SvgdataUid + "4")
                        {

                            MessageBox.Show("整体图层采用的是减线法!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                            break;
                        }
                        if (tlVectorControl1.SVGDocument.CurrentLayer.ID == tlVectorControl1.SVGDocument.SvgdataUid + "1" && zhengtiflag)
                        {
                            jiqiflag = true;
                            zhengtiflag = false;
                            zhongqiflag = false;
                            yuanqiflag = false;
                            addlinecheck();
                            addrightcheck();
                            for (int i = 0; i < ercilinedengdai.Count; i++)
                            {
                                ercilinedengdai[i].LineStatus = "运行";
                                Services.BaseService.Update<PSPDEV>(ercilinedengdai[i]);
                            }
                            for (int i = 0; i < lineyiyou.Count; i++)
                            {
                                lineyiyou[i].LineStatus = "待选";
                                Services.BaseService.Update<PSPDEV>(lineyiyou[i]);
                            }
                            MessageBox.Show("近期数据加线成功。");
                            Topology2();             //颜色发生变化
                        }
                        if (tlVectorControl1.SVGDocument.CurrentLayer.ID == tlVectorControl1.SVGDocument.SvgdataUid + "2" && jiqiflag)
                        {
                            zhongqiflag = true;
                            jiqiflag = false;
                            yuanqiflag = false;
                            addlinecheck();
                            addrightcheck();
                            for (int i = 0; i < ercilinedengdai.Count; i++)
                            {
                                ercilinedengdai[i].LineStatus = "运行";
                                Services.BaseService.Update<PSPDEV>(ercilinedengdai[i]);
                            }
                            for (int i = 0; i < lineyiyou.Count; i++)
                            {
                                lineyiyou[i].LineStatus = "待选";
                                Services.BaseService.Update<PSPDEV>(lineyiyou[i]);
                            }
                            MessageBox.Show("中期数据加线成功。");
                            Topology2();             //颜色发生变化
                        }
                        if (tlVectorControl1.SVGDocument.CurrentLayer.ID == tlVectorControl1.SVGDocument.SvgdataUid + "3" && zhongqiflag)
                        {
                            yuanqiflag = true;
                            jiqiflag = false;
                            zhongqiflag = false;
                            addlinecheck();
                            addrightcheck();
                            for (int i = 0; i < ercilinedengdai.Count; i++)
                            {
                                ercilinedengdai[i].LineStatus = "运行";
                                Services.BaseService.Update<PSPDEV>(ercilinedengdai[i]);
                            }
                            for (int i = 0; i < lineyiyou.Count; i++)
                            {
                                lineyiyou[i].LineStatus = "待选";
                                Services.BaseService.Update<PSPDEV>(lineyiyou[i]);
                            }
                            MessageBox.Show("远期数据加线成功。请查看优化结果");
                            Topology2();             //颜色发生变化
                        }
                        if (!zhengtiflag && !jiqiflag && !zhongqiflag && !yuanqiflag)
                        {
                            string msg2 = "加线法:\r\n 1、选中整体图层进行网架优化,此时采用的是减线法。\r\n 2、将整体图层拷贝到近期图层,然后选中近期图层进行网架优化。\r\n 3、拷贝到中期图层,然后选中中期图层进行网架优化\r\n 4、拷贝到远期图层,然后选中远期图层进行网架优化。";
                            MessageBox.Show(msg2, "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                            break;
                        }
                        break;

                    case "YhResult":       //优化结果
                        if (yuanqiflag)
                        {
                            frmGProList p1 = new frmGProList();
                            p1.Show();
                            p1.LoadData(LoadData());
                        }
                        else
                            MessageBox.Show("请依次做完各个时期的优化,再看结果!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        break;
                    #endregion
                    #region 参数维护
                    case "m_in":
                        if (tlVectorControl1.SVGDocument.CurrentLayer.ID != tlVectorControl1.SVGDocument.SvgdataUid + "5")
                        {
                            MessageBox.Show("请选择背景参考层。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                            return;
                        }

                        StringBuilder txt = new StringBuilder("<?xml version=\"1.0\" encoding=\"utf-8\"?><svg id=\"svg\" width=\"1500\" height=\"1000\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:itop=\"http://www.Itop.com/itop\" transform=\"matrix(1 0 0 1 0 1)\"><defs>");
                        StringBuilder Allcontent = new StringBuilder();
                        string svgdefs = "";
                        string layertxt = "";

                        frmLayerSel sel = new frmLayerSel();
                        if (sel.ShowDialog() == DialogResult.OK)
                        {
                            ArrayList tlist = sel.LayList;
                            SVG_SYMBOL sym = new SVG_SYMBOL();
                            sym.svgID = oldsid;
                            IList<SVG_SYMBOL> symlist = Services.BaseService.GetList<SVG_SYMBOL>("SelectSVG_SYMBOLBySvgID", sym);
                            foreach (SVG_SYMBOL _sym in symlist)
                            {
                                svgdefs = svgdefs + _sym.XML;
                            }
                            txt.Append(svgdefs + "</defs>");
                            for (int i = 0; i < tlist.Count; i++)
                            {
                                SVG_LAYER lar = new SVG_LAYER();
                                lar.svgID = oldsid;
                                lar.SUID = ((SVG_LAYER)tlist[i]).SUID;
                                lar = (SVG_LAYER)Services.BaseService.GetObject("SelectSVG_LAYERByKey", lar);
                                layertxt = layertxt + "<layer id=\"" + lar.SUID + "\" label=\"" + lar.NAME + "\" layerType=\"" + lar.layerType + "\" visibility=\"" + lar.visibility + "\" ParentID=\"" + lar.YearID + "\" IsSelect=\"" + lar.IsSelect + "\" />";
                                Allcontent.Append(lar.XML);
                            }
                            txt.Append(layertxt);
                            txt.Append(Allcontent.ToString() + "</svg>");
                            SvgDocument document = new SvgDocument();
                            document.LoadXml(txt.ToString());
                            document.SvgdataUid = oldsid;
                            XmlNodeList xlist = document.SelectNodes("svg/polyline [@IsLead='1']");
                            for (int i = 0; i < xlist.Count; i++)
                            {
                                SvgElement gra = xlist[i] as SvgElement;
                                gra.SetAttribute("layer", tlVectorControl1.SVGDocument.SvgdataUid + "5");
                                ((IGraph)gra).Layer = tlVectorControl1.SVGDocument.CurrentLayer;
                                tlVectorControl1.SVGDocument.RootElement.AppendChild((XmlNode)gra);

                            }
                            XmlNodeList xlist2 = document.SelectNodes("svg/use");
                            for (int i = 0; i < xlist2.Count; i++)
                            {
                                SvgElement gra = xlist2[i] as SvgElement;
                                gra.SetAttribute("layer", tlVectorControl1.SVGDocument.SvgdataUid + "5");
                                ((IGraph)gra).Layer = tlVectorControl1.SVGDocument.CurrentLayer;
                                tlVectorControl1.SVGDocument.RootElement.AppendChild((XmlNode)gra);

                            }
                            tlVectorControl1.Refresh();
                            MessageBox.Show("导入数据成功。");
                        }

                        break;
                    case "m_1to2"://近期

                        //删除掉原来元素

                        deltall(tlVectorControl1.SVGDocument.SvgdataUid + "1");
                        //********
                        ArrayList sel_line1 = new ArrayList();
                        LayerGrade l1 = new LayerGrade();
                        l1.Type = "1";
                        l1.SvgDataUid = oldsid;
                        IList ttlist = Services.BaseService.GetList("SelectLayerGradeList5", l1);
                        if (ttlist.Count > 0)
                        {
                            LayerGrade n1 = (LayerGrade)ttlist[0];
                            try
                            {
                                int yy = Convert.ToInt32(n1.Name.Substring(0, 4));
                                XmlNodeList list1to2 = tlVectorControl1.SVGDocument.SelectNodes("svg/use [@layer='" + tlVectorControl1.SVGDocument.SvgdataUid + "4" + "' and @year<='" + yy + "']");
                                for (int i = 0; i < list1to2.Count; i++)
                                {
                                    SvgElement gra = list1to2[i] as SvgElement;

                                    XmlNode temp = gra.Clone();
                                    ((SvgElement)temp).SetAttribute("layer", tlVectorControl1.SVGDocument.SvgdataUid + "1");
                                    XmlNode newnode = tlVectorControl1.SVGDocument.RootElement.AppendChild((XmlNode)temp);
                                    //加入节点的名称

                                    XmlNode text = tlVectorControl1.SVGDocument.SelectSingleNode("svg/*[@ParentID='" + gra.GetAttribute("id") + "']");
                                    XmlNode textemp = text.Clone();
                                    ((SvgElement)textemp).SetAttribute("layer", tlVectorControl1.SVGDocument.SvgdataUid + "1");
                                    ((SvgElement)textemp).SetAttribute("ParentID", ((SvgElement)temp).GetAttribute("id"));
                                    tlVectorControl1.SVGDocument.RootElement.AppendChild((XmlNode)textemp);
                                    PSPDEV pspDev = new PSPDEV();
                                    pspDev.EleID = gra.ID;
                                    pspDev.SvgUID = tlVectorControl1.SVGDocument.SvgdataUid + "4";
                                    pspDev = (PSPDEV)Services.BaseService.GetObject("SelectPSPDEVBySvgUIDandEleID", pspDev);
                                    if (pspDev != null)
                                    {
                                        pspDev.SUID = Guid.NewGuid().ToString();
                                        pspDev.EleID = ((SvgElement)newnode).ID;
                                        pspDev.SvgUID = tlVectorControl1.SVGDocument.SvgdataUid + "1";
                                        Services.BaseService.Create<PSPDEV>(pspDev);
                                    }
                                }
                                XmlNodeList listline = tlVectorControl1.SVGDocument.SelectNodes("svg/polyline [@layer='" + tlVectorControl1.SVGDocument.SvgdataUid + "4']");
                                //for (int i = 0; i < list1to2.Count; i++)
                                //{
                                //    SvgElement temp = list1to2[i] as SvgElement;
                                //    RectangleF ff = ((IGraph)temp).GetBounds();
                                //    Region r = new Region(((IGraph)temp).GetBounds());
                                //    for (int j = 0; j < listline.Count;j++ )
                                //    {
                                //        Polyline pln = listline[j] as Polyline;
                                //        if (r.IsVisible(pln.Points[0]))
                                //        {
                                //            if (!sel_line1.Contains(pln))
                                //            {
                                //                sel_line1.Add(pln);
                                //            }

                                //        }
                                //    }

                                //}
                                for (int i = 0; i < listline.Count; i++)
                                {
                                    bool firstnodeflag = false; bool lastnodeflag = false;
                                    Polyline pln = listline[i] as Polyline;
                                    PSPDEV psp = new PSPDEV();
                                    psp.SvgUID = tlVectorControl1.SVGDocument.SvgdataUid + "4";
                                    psp.EleID = pln.ID;
                                    psp = (PSPDEV)Services.BaseService.GetObject("SelectPSPDEVBySvgUIDandEleID", psp);
                                    if (psp.LineStatus != "等待")
                                    {
                                        for (int j = 0; j < list1to2.Count; j++)
                                        {
                                            SvgElement temp = list1to2[j] as SvgElement;
                                            Region ff = new Region(((IGraph)temp).GetBounds());
                                            if (ff.IsVisible(pln.Points[0]))
                                            {
                                                firstnodeflag = true;
                                            }
                                            if (ff.IsVisible(pln.Points[1]))
                                            {
                                                lastnodeflag = true;
                                            }
                                        }
                                        if (firstnodeflag && lastnodeflag && !sel_line1.Contains(pln))
                                        {
                                            sel_line1.Add(pln);
                                        }

                                    }

                                }
                                for (int i = 0; i < sel_line1.Count; i++)
                                {
                                    SvgElement gra = sel_line1[i] as SvgElement;

                                    XmlNode temp = gra.Clone();
                                    ((SvgElement)temp).SetAttribute("layer", tlVectorControl1.SVGDocument.SvgdataUid + "1");
                                    XmlNode newnode = tlVectorControl1.SVGDocument.RootElement.AppendChild((XmlNode)temp);
                                    PSPDEV pspDev = new PSPDEV();
                                    pspDev.EleID = gra.ID;
                                    pspDev.SvgUID = tlVectorControl1.SVGDocument.SvgdataUid + "4";
                                    pspDev = (PSPDEV)Services.BaseService.GetObject("SelectPSPDEVBySvgUIDandEleID", pspDev);
                                    if (pspDev != null)
                                    {
                                        pspDev.SUID = Guid.NewGuid().ToString();
                                        pspDev.EleID = ((SvgElement)newnode).ID;
                                        pspDev.SvgUID = tlVectorControl1.SVGDocument.SvgdataUid + "1";
                                        Services.BaseService.Create<PSPDEV>(pspDev);
                                    }
                                }
                                MessageBox.Show("数据处理成功。");
                                Topology2();             //颜色发生变化
                            }
                            catch
                            {
                                MessageBox.Show("选择的年份前4位不是数字。");
                            }
                        }
                        break;
                    case "m_2to3"://中期
                        deltall(tlVectorControl1.SVGDocument.SvgdataUid + "2");
                        ArrayList sel_line2 = new ArrayList();
                        LayerGrade l1_2 = new LayerGrade();
                        l1_2.Type = "1";
                        l1_2.SvgDataUid = oldsid;
                        l1_2 = (LayerGrade)Services.BaseService.GetObject("SelectLayerGradeList5", l1_2);
                        LayerGrade l2_2 = new LayerGrade();
                        l2_2.Type = "2";
                        l2_2.SvgDataUid = oldsid;
                        l2_2 = (LayerGrade)Services.BaseService.GetObject("SelectLayerGradeList5", l2_2);
                        if (l1_2 != null && l2_2 != null)
                        {

                            try
                            {
                                //整体规划层里的中期数据

                                int yy1 = Convert.ToInt32(l1_2.Name.Substring(0, 4));
                                int yy2 = Convert.ToInt32(l2_2.Name.Substring(0, 4));

                                XmlNodeList list1to2 = tlVectorControl1.SVGDocument.SelectNodes("svg/use [@layer='" + tlVectorControl1.SVGDocument.SvgdataUid + "4" + "' and @year>'" + yy1 + "' and @year<='" + yy2 + "']");
                                for (int i = 0; i < list1to2.Count; i++)
                                {
                                    SvgElement gra = list1to2[i] as SvgElement;
                                    XmlNode temp = gra.Clone();
                                    ((SvgElement)temp).SetAttribute("layer", tlVectorControl1.SVGDocument.SvgdataUid + "2");
                                    XmlNode newnode = tlVectorControl1.SVGDocument.RootElement.AppendChild((XmlNode)temp);
                                    //加入节点的名称

                                    XmlNode text = tlVectorControl1.SVGDocument.SelectSingleNode("svg/*[@ParentID='" + gra.GetAttribute("id") + "']");
                                    XmlNode textemp = text.Clone();
                                    ((SvgElement)textemp).SetAttribute("layer", tlVectorControl1.SVGDocument.SvgdataUid + "2");
                                    ((SvgElement)textemp).SetAttribute("ParentID", ((SvgElement)temp).GetAttribute("id"));
                                    tlVectorControl1.SVGDocument.RootElement.AppendChild((XmlNode)textemp);
                                    PSPDEV pspDev = new PSPDEV();
                                    pspDev.EleID = gra.ID;
                                    pspDev.SvgUID = tlVectorControl1.SVGDocument.SvgdataUid + "4";
                                    pspDev = (PSPDEV)Services.BaseService.GetObject("SelectPSPDEVBySvgUIDandEleID", pspDev);
                                    if (pspDev != null)
                                    {
                                        pspDev.SUID = Guid.NewGuid().ToString();
                                        pspDev.EleID = ((SvgElement)newnode).ID;
                                        pspDev.SvgUID = tlVectorControl1.SVGDocument.SvgdataUid + "2";
                                        Services.BaseService.Create<PSPDEV>(pspDev);
                                    }
                                }

                                XmlNodeList listline2 = tlVectorControl1.SVGDocument.SelectNodes("svg/polyline [@layer='" + tlVectorControl1.SVGDocument.SvgdataUid + "4']");
                                XmlNodeList list1to1 = tlVectorControl1.SVGDocument.SelectNodes("svg/use [@layer='" + tlVectorControl1.SVGDocument.SvgdataUid + "4" + "' and @year<='" + yy1 + "']");
                                for (int i = 0; i < listline2.Count; i++)
                                {
                                    bool firstnodeflag = false; bool lastnodeflag = false; bool jinqifirstnodeflag = false; bool jinqilastnodeflag = false;
                                    Polyline pln = listline2[i] as Polyline;
                                    PSPDEV psp = new PSPDEV();
                                    psp.SvgUID = tlVectorControl1.SVGDocument.SvgdataUid + "4";
                                    psp.EleID = pln.ID;
                                    psp = (PSPDEV)Services.BaseService.GetObject("SelectPSPDEVBySvgUIDandEleID", psp);
                                    if (psp.LineStatus != "等待")
                                    {
                                        for (int j = 0; j < list1to2.Count; j++)
                                        {
                                            SvgElement temp = list1to2[j] as SvgElement;
                                            Region ff = new Region(((IGraph)temp).GetBounds());
                                            if (ff.IsVisible(pln.Points[0]))
                                            {
                                                firstnodeflag = true;
                                            }
                                            if (ff.IsVisible(pln.Points[1]))
                                            {
                                                lastnodeflag = true;
                                            }
                                        }
                                        for (int j = 0; j < list1to1.Count; j++)
                                        {
                                            SvgElement temp = list1to1[j] as SvgElement;
                                            Region ff = new Region(((IGraph)temp).GetBounds());
                                            if (ff.IsVisible(pln.Points[0]))
                                            {
                                                jinqifirstnodeflag = true;
                                            }
                                            if (ff.IsVisible(pln.Points[1]))
                                            {
                                                jinqilastnodeflag = true;
                                            }
                                        }
                                        if (firstnodeflag && lastnodeflag && !sel_line2.Contains(pln))
                                        {
                                            sel_line2.Add(pln);
                                        }
                                        if (firstnodeflag && jinqilastnodeflag && !sel_line2.Contains(pln))
                                        {
                                            sel_line2.Add(pln);
                                        }
                                        if (lastnodeflag && jinqifirstnodeflag && !sel_line2.Contains(pln))
                                        {
                                            sel_line2.Add(pln);
                                        }

                                    }

                                }
                                for (int i = 0; i < sel_line2.Count; i++)
                                {
                                    SvgElement gra = sel_line2[i] as SvgElement;

                                    XmlNode temp = gra.Clone();
                                    ((SvgElement)temp).SetAttribute("layer", tlVectorControl1.SVGDocument.SvgdataUid + "2");
                                    XmlNode newnode = tlVectorControl1.SVGDocument.RootElement.AppendChild((XmlNode)temp);
                                    PSPDEV pspDev = new PSPDEV();
                                    pspDev.EleID = gra.ID;
                                    pspDev.SvgUID = tlVectorControl1.SVGDocument.SvgdataUid + "4";
                                    pspDev = (PSPDEV)Services.BaseService.GetObject("SelectPSPDEVBySvgUIDandEleID", pspDev);
                                    if (pspDev != null)
                                    {
                                        pspDev.SUID = Guid.NewGuid().ToString();
                                        pspDev.EleID = ((SvgElement)newnode).ID;
                                        pspDev.SvgUID = tlVectorControl1.SVGDocument.SvgdataUid + "2";
                                        Services.BaseService.Create<PSPDEV>(pspDev);
                                    }
                                }
                                //近期数据
                                XmlNodeList list_1 = tlVectorControl1.SVGDocument.SelectNodes("svg/* [@layer='" + tlVectorControl1.SVGDocument.SvgdataUid + "1']");
                                for (int i = 0; i < list_1.Count; i++)
                                {
                                    SvgElement gra = list_1[i] as SvgElement;
                                    XmlNode temp = gra.Clone();
                                    ((SvgElement)temp).SetAttribute("layer", tlVectorControl1.SVGDocument.SvgdataUid + "2");
                                    XmlNode newnode = tlVectorControl1.SVGDocument.RootElement.AppendChild((XmlNode)temp);
                                    //加入节点的名称

                                    XmlNode text = tlVectorControl1.SVGDocument.SelectSingleNode("svg/*[@ParentID='" + gra.GetAttribute("id") + "']");
                                    if (text != null)
                                    {
                                        XmlNode textemp = text.Clone();
                                        ((SvgElement)textemp).SetAttribute("layer", tlVectorControl1.SVGDocument.SvgdataUid + "2");
                                        ((SvgElement)textemp).SetAttribute("ParentID", ((SvgElement)temp).GetAttribute("id"));
                                        tlVectorControl1.SVGDocument.RootElement.AppendChild((XmlNode)textemp);
                                    }

                                    PSPDEV pspDev = new PSPDEV();
                                    pspDev.EleID = gra.ID;
                                    pspDev.SvgUID = tlVectorControl1.SVGDocument.SvgdataUid + "1";
                                    pspDev = (PSPDEV)Services.BaseService.GetObject("SelectPSPDEVBySvgUIDandEleID", pspDev);
                                    if (pspDev != null)
                                    {
                                        pspDev.SUID = Guid.NewGuid().ToString();
                                        pspDev.EleID = ((SvgElement)newnode).ID;
                                        pspDev.SvgUID = tlVectorControl1.SVGDocument.SvgdataUid + "2";
                                        if (pspDev.LineStatus == "待选")
                                        {
                                            pspDev.LineStatus = "运行";
                                        }
                                        if (pspDev.LineStatus == "等待")
                                        {
                                            pspDev.LineStatus = "待选";
                                        }
                                        Services.BaseService.Create<PSPDEV>(pspDev);
                                    }
                                }
                                MessageBox.Show("数据处理成功。");
                                Topology2();             //颜色发生变化
                            }
                            catch
                            {
                                MessageBox.Show("选择的年份前4位不是数字。");
                            }
                        }
                        break;
                    case "m_3to4"://远期
                        deltall(tlVectorControl1.SVGDocument.SvgdataUid + "3");
                        ArrayList sel_line3 = new ArrayList();
                        LayerGrade l1_3 = new LayerGrade();
                        l1_3.Type = "2";
                        l1_3.SvgDataUid = oldsid;
                        l1_3 = (LayerGrade)Services.BaseService.GetObject("SelectLayerGradeList5", l1_3);
                        LayerGrade l2_3 = new LayerGrade();
                        l2_3.Type = "3";
                        l2_3.SvgDataUid = oldsid;
                        l2_3 = (LayerGrade)Services.BaseService.GetObject("SelectLayerGradeList5", l2_3);
                        if (l1_3 != null && l2_3 != null)
                        {

                            try
                            {
                                //整体规划层里的远期数据

                                int yy1 = Convert.ToInt32(l1_3.Name.Substring(0, 4));
                                int yy2 = Convert.ToInt32(l2_3.Name.Substring(0, 4));
                                XmlNodeList list1to2 = tlVectorControl1.SVGDocument.SelectNodes("svg/use [@layer='" + tlVectorControl1.SVGDocument.SvgdataUid + "4" + "' and @year>'" + yy1 + "' and @year<='" + yy2 + "']");
                                for (int i = 0; i < list1to2.Count; i++)
                                {
                                    SvgElement gra = list1to2[i] as SvgElement;
                                    XmlNode temp = gra.Clone();
                                    ((SvgElement)temp).SetAttribute("layer", tlVectorControl1.SVGDocument.SvgdataUid + "3");
                                    XmlNode newnode = tlVectorControl1.SVGDocument.RootElement.AppendChild((XmlNode)temp);
                                    XmlNode text = tlVectorControl1.SVGDocument.SelectSingleNode("svg/*[@ParentID='" + gra.GetAttribute("id") + "']");
                                    XmlNode textemp = text.Clone();
                                    ((SvgElement)textemp).SetAttribute("layer", tlVectorControl1.SVGDocument.SvgdataUid + "3");
                                    ((SvgElement)textemp).SetAttribute("ParentID", ((SvgElement)temp).GetAttribute("id"));
                                    tlVectorControl1.SVGDocument.RootElement.AppendChild((XmlNode)textemp);
                                    PSPDEV pspDev = new PSPDEV();
                                    pspDev.EleID = gra.ID;
                                    pspDev.SvgUID = tlVectorControl1.SVGDocument.SvgdataUid + "4";
                                    pspDev = (PSPDEV)Services.BaseService.GetObject("SelectPSPDEVBySvgUIDandEleID", pspDev);
                                    if (pspDev != null)
                                    {
                                        pspDev.SUID = Guid.NewGuid().ToString();
                                        pspDev.EleID = ((SvgElement)newnode).ID;
                                        pspDev.SvgUID = tlVectorControl1.SVGDocument.SvgdataUid + "3";
                                        Services.BaseService.Create<PSPDEV>(pspDev);
                                    }
                                }

                                XmlNodeList listline2 = tlVectorControl1.SVGDocument.SelectNodes("svg/polyline [@layer='" + tlVectorControl1.SVGDocument.SvgdataUid + "4']");
                                XmlNodeList list1to1 = tlVectorControl1.SVGDocument.SelectNodes("svg/use [@layer='" + tlVectorControl1.SVGDocument.SvgdataUid + "4" + "' and @year<='" + yy1 + "']");
                                for (int i = 0; i < listline2.Count; i++)
                                {
                                    bool firstnodeflag = false; bool lastnodeflag = false; bool jinqifirstnodeflag = false; bool jinqilastnodeflag = false;
                                    Polyline pln = listline2[i] as Polyline;
                                    PSPDEV psp = new PSPDEV();
                                    psp.SvgUID = tlVectorControl1.SVGDocument.SvgdataUid + "4";
                                    psp.EleID = pln.ID;
                                    psp = (PSPDEV)Services.BaseService.GetObject("SelectPSPDEVBySvgUIDandEleID", psp);
                                    if (psp.LineStatus != "等待")
                                    {
                                        for (int j = 0; j < list1to2.Count; j++)
                                        {
                                            SvgElement temp = list1to2[j] as SvgElement;
                                            Region ff = new Region(((IGraph)temp).GetBounds());
                                            if (ff.IsVisible(pln.Points[0]))
                                            {
                                                firstnodeflag = true;
                                            }
                                            if (ff.IsVisible(pln.Points[1]))
                                            {
                                                lastnodeflag = true;
                                            }
                                        }
                                        for (int j = 0; j < list1to1.Count; j++)
                                        {
                                            SvgElement temp = list1to1[j] as SvgElement;
                                            Region ff = new Region(((IGraph)temp).GetBounds());
                                            if (ff.IsVisible(pln.Points[0]))
                                            {
                                                jinqifirstnodeflag = true;
                                            }
                                            if (ff.IsVisible(pln.Points[1]))
                                            {
                                                jinqilastnodeflag = true;
                                            }
                                        }
                                        if (firstnodeflag && lastnodeflag && !sel_line3.Contains(pln))
                                        {
                                            sel_line3.Add(pln);
                                        }
                                        if (firstnodeflag && jinqilastnodeflag && !sel_line3.Contains(pln))
                                        {
                                            sel_line3.Add(pln);
                                        }
                                        if (lastnodeflag && jinqifirstnodeflag && !sel_line3.Contains(pln))
                                        {
                                            sel_line3.Add(pln);
                                        }

                                    }

                                }
                                for (int i = 0; i < sel_line3.Count; i++)
                                {
                                    SvgElement gra = sel_line3[i] as SvgElement;

                                    XmlNode temp = gra.Clone();
                                    ((SvgElement)temp).SetAttribute("layer", tlVectorControl1.SVGDocument.SvgdataUid + "3");
                                    XmlNode newnode = tlVectorControl1.SVGDocument.RootElement.AppendChild((XmlNode)temp);
                                    PSPDEV pspDev = new PSPDEV();
                                    pspDev.EleID = gra.ID;
                                    pspDev.SvgUID = tlVectorControl1.SVGDocument.SvgdataUid + "4";
                                    pspDev = (PSPDEV)Services.BaseService.GetObject("SelectPSPDEVBySvgUIDandEleID", pspDev);
                                    if (pspDev != null)
                                    {
                                        pspDev.SUID = Guid.NewGuid().ToString();
                                        pspDev.EleID = ((SvgElement)newnode).ID;
                                        pspDev.SvgUID = tlVectorControl1.SVGDocument.SvgdataUid + "3";
                                        Services.BaseService.Create<PSPDEV>(pspDev);
                                    }
                                }
                                //中期数据
                                XmlNodeList list_1 = tlVectorControl1.SVGDocument.SelectNodes("svg/* [@layer='" + tlVectorControl1.SVGDocument.SvgdataUid + "2']");
                                for (int i = 0; i < list_1.Count; i++)
                                {
                                    SvgElement gra = list_1[i] as SvgElement;
                                    XmlNode temp = gra.Clone();
                                    ((SvgElement)temp).SetAttribute("layer", tlVectorControl1.SVGDocument.SvgdataUid + "3");
                                    XmlNode newnode = tlVectorControl1.SVGDocument.RootElement.AppendChild((XmlNode)temp);
                                    //加入节点的名称

                                    XmlNode text = tlVectorControl1.SVGDocument.SelectSingleNode("svg/*[@ParentID='" + gra.GetAttribute("id") + "']");
                                    if (text != null)
                                    {
                                        XmlNode textemp = text.Clone();
                                        ((SvgElement)textemp).SetAttribute("layer", tlVectorControl1.SVGDocument.SvgdataUid + "3");
                                        ((SvgElement)textemp).SetAttribute("ParentID", ((SvgElement)temp).GetAttribute("id"));
                                        tlVectorControl1.SVGDocument.RootElement.AppendChild((XmlNode)textemp);
                                    }
                                    PSPDEV pspDev = new PSPDEV();
                                    pspDev.EleID = gra.ID;
                                    pspDev.SvgUID = tlVectorControl1.SVGDocument.SvgdataUid + "2";
                                    pspDev = (PSPDEV)Services.BaseService.GetObject("SelectPSPDEVBySvgUIDandEleID", pspDev);
                                    if (pspDev != null)
                                    {
                                        pspDev.SUID = Guid.NewGuid().ToString();
                                        pspDev.EleID = ((SvgElement)newnode).ID;
                                        pspDev.SvgUID = tlVectorControl1.SVGDocument.SvgdataUid + "3";
                                        if (pspDev.LineStatus == "待选")
                                        {
                                            pspDev.LineStatus = "运行";
                                        }
                                        if (pspDev.LineStatus == "等待")
                                        {
                                            pspDev.LineStatus = "待选";
                                        }
                                        Services.BaseService.Create<PSPDEV>(pspDev);
                                    }
                                }
                                MessageBox.Show("数据处理成功。");
                                Topology2();             //颜色发生变化
                            }
                            catch
                            {
                                MessageBox.Show("选择的年份前4位不是数字。");
                            }
                        }
                        break;
                    #endregion
                }
            }
        }
Esempio n. 15
0
		private void DisplaySmallRegion (Region region, int ox, int oy, int width, int height)
		{
			for (int y = oy ; y < height - 1; y++) {
				for (int x = ox; x < width - 1; x++) {
					if (region.IsVisible (x, y))
						Console.Write ("X");
					else
						Console.Write (".");
				}
				Console.WriteLine ();
			}
		}
        internal bool verificarSeEstaEmAreaProibida(Region regiao)
        {
            if (mListaBlobsENumeroFrame.Count > 0 && regiao != null)
            {
                int ultimoBlob = mListaBlobsENumeroFrame.Count-1;
                Point ponto = new Point(Convert.ToInt32(mListaBlobsENumeroFrame[ultimoBlob].mBlob.Center.X), 
                    Convert.ToInt32(mListaBlobsENumeroFrame[ultimoBlob].mBlob.Center.Y));

                return regiao.IsVisible(ponto);
            }
            return false;
        }
Esempio n. 17
0
		private bool CurveIntersects(RectangleF rectangle)
		{
			//Translate rectangle to local co-ordinates
			rectangle.Location = new PointF(rectangle.Location.X - Rectangle.Location.X,rectangle.Location.Y - Rectangle.Location.Y);
	
			//If the rectangle contains the whole line rectangle then return true
			if (rectangle.Contains(Rectangle)) return true;

			Region region = new Region(GetPathInternal());

			return region.IsVisible(rectangle);
		}
Esempio n. 18
0
        private void MainForm_MouseClick(object sender, MouseEventArgs e)
        {
            //this.Text = "X=" + e.X + ",Y=" + e.Y + ";" + e.Clicks;

            //左键
            //只有发牌时和该我出牌时才能相应鼠标事件
            if (((currentState.CurrentCardCommands == CardCommands.WaitingForMySending) || (currentState.CurrentCardCommands == CardCommands.WaitingForSending8Cards)) && (whoseOrder == 1))
            {

                if (e.Button == MouseButtons.Left)
                {
                    if ((e.X >= (int)myCardsLocation[0] && e.X <= ((int)myCardsLocation[myCardsLocation.Count - 1] + 71)) && (e.Y >= 355 && e.Y < 472))
                    {
                        if (calculateRegionHelper.CalculateClickedRegion(e, 1))
                        {
                            drawingFormHelper.DrawMyPlayingCards(currentPokers[0]);
                            Refresh();
                        }
                    }
                }
                else if (e.Button == MouseButtons.Right)  //右键
                {
                    int i = calculateRegionHelper.CalculateRightClickedRegion(e);
                    if (i > -1 && i < myCardIsReady.Count)
                    {
                        bool b = (bool)myCardIsReady[i];
                        int x = (int)myCardsLocation[i];
                        for (int j = 1; j <= i; j++)
                        {
                            if ((int)myCardsLocation[i - j] == (x - 13))
                            {
                                myCardIsReady[i - j] = b;
                                x = x - 13;
                            }
                            else
                            {
                                break;
                            }
                        }

                        drawingFormHelper.DrawMyPlayingCards(currentPokers[0]);
                        Refresh();

                    }


                }


                //判断是否点击了小猪*********和以上的点击不同
                Rectangle pigRect = new Rectangle(296, 300, 53, 46);
                Region region = new Region(pigRect);
                if (region.IsVisible(e.X, e.Y))
                {
                    //判断是否处在扣牌阶段
                    if ((currentState.CurrentCardCommands == CardCommands.WaitingForSending8Cards)) //如果等我扣牌
                    {

                        //扣牌,所以擦去小猪
                        Graphics g = Graphics.FromImage(bmp);
                        g.DrawImage(image, pigRect, pigRect, GraphicsUnit.Pixel);
                        g.Dispose();

                        ArrayList readyCards = new ArrayList();
                        for (int i = 0; i < myCardIsReady.Count; i++)
                        {
                            if ((bool)myCardIsReady[i])
                            {
                                readyCards.Add((int)myCardsNumber[i]);
                            }
                        }
                        
                        if (readyCards.Count == 8)
                        {
                            send8Cards = new ArrayList();
                            for (int i = 0; i < 8; i++)
                            {
                                CommonMethods.SendCards(send8Cards, currentPokers[0], pokerList[0], (int)readyCards[i]);
                            }
                            initSendedCards();
                            currentState.CurrentCardCommands = CardCommands.DrawMySortedCards;
                        }

                        

                    }
                    else if (currentState.CurrentCardCommands == CardCommands.WaitingForMySending) //如果等我发牌
                    {
                        //如果我准备出的牌合法
                        if (TractorRules.IsInvalid(this, currentSendCards, 1))
                        {
                            //出牌,所以擦去小猪
                            Graphics g = Graphics.FromImage(bmp);
                            g.DrawImage(image, pigRect, pigRect, GraphicsUnit.Pixel);
                            g.Dispose();

                            //在这里检查甩牌的检查
                            if (firstSend == 1)
                            {
                                whoIsBigger = 1;
                                ArrayList minCards = new ArrayList();
                                if (TractorRules.CheckSendCards(this, minCards,0))
                                {

                                    currentSendCards[0] = new ArrayList();
                                    for (int i = 0; i < myCardIsReady.Count; i++)
                                    {
                                        if ((bool)myCardIsReady[i])
                                        {
                                            CommonMethods.SendCards(currentSendCards[0], currentPokers[0], pokerList[0], (int)myCardsNumber[i]);
                                        }
                                    }


                                }
                                else
                                {
                                    for (int i = 0; i < minCards.Count; i++)
                                    {
                                        CommonMethods.SendCards(currentSendCards[0], currentPokers[0], pokerList[0], (int)minCards[i]);
                                    }
                                }


                            }
                            else
                            {

                                currentSendCards[0] = new ArrayList();
                                for (int i = 0; i < myCardIsReady.Count; i++)
                                {
                                    if ((bool)myCardIsReady[i])
                                    {
                                        CommonMethods.SendCards(currentSendCards[0], currentPokers[0], pokerList[0], (int)myCardsNumber[i]);
                                    }
                                }

                            }

                            drawingFormHelper.DrawMyFinishSendedCards();
                        }
                    }

                }

            }
            else if (currentState.CurrentCardCommands == CardCommands.ReadyCards)
            {
                drawingFormHelper.IsClickedRanked(e);
            }
        }
Esempio n. 19
0
 private static bool pointInPolygon(PointF point, Region myRegion)
 {
     return myRegion.IsVisible(point);
 }
Esempio n. 20
0
		public void ExcludeBug402613 ()
		{
			Region r = new Region();
			r.MakeInfinite ();
			r.Exclude (new Rectangle (387,292,189,133));
			r.Exclude (new Rectangle (387,66,189,133));
			Assert.IsTrue (r.IsVisible (new Rectangle (66,292,189,133)));
		}
Esempio n. 21
0
        public bool IsOutlineVisible(PointF pt, Pen pen, Graphics graphics)
        {
            var outlinePath = (GraphicsPath)Clone ();
            if (graphics != null)
                outlinePath.Transform (graphics.Transform);

            outlinePath.Widen (pen);
            var outlineRegion = new Region (outlinePath);
            return outlineRegion.IsVisible (pt);
        }
Esempio n. 22
0
		internal void DoubleClick(Point mouseLocation, MouseButtons button)
		{
			Region monthRgn = new Region(m_rect);

			if (monthRgn.IsVisible(mouseLocation))
			{
				for (int i = 0;i<42;i++)
				{
					if (m_days[i].HitTest(mouseLocation))
					{
						if (this.DayDoubleClick!=null)
							this.DayDoubleClick(this,new DayClickEventArgs(m_days[i].Date.ToShortDateString() ,button,
                                                mouseLocation.X - m_days[i].Rectangle.Left, mouseLocation.Y - m_days[i].Rectangle.Top,
                                                mouseLocation.X,mouseLocation.Y,m_days[i].Rectangle));
					}
				}
			}
		}
Esempio n. 23
0
 public bool IsVisible(PointF point, Graphics graphics)
 {
     var region = new Region (this);
     return region.IsVisible (point);
 }
Esempio n. 24
0
		internal void MouseClick(Point mouseLocation, MouseButtons button, mcClickMode mode)
		{
			Region leftBtnRgn = new Region(m_prevBtnRect);
			Region rightBtnRgn = new Region(m_nextBtnRect);
			Region leftYearBtnRgn = new Region(m_prevYearBtnRect);
			Region rightYearBtnRgn = new Region(m_nextYearBtnRect);
			MouseButtons selectButton;
			
			if (SystemInformation.MouseButtonsSwapped)
				selectButton = MouseButtons.Right;
			else
				selectButton = MouseButtons.Left;

			bool btnClick = false;
			
			if (m_region.IsVisible(mouseLocation))
			{
				if (button == selectButton)
				{
					if (m_monthSelector)
					{
						if ( (leftBtnRgn.IsVisible(mouseLocation)) &&  (m_prevBtnState!=mcButtonState.Inactive) &&
							(m_prevBtnState!=mcButtonState.Pushed) )
						{
							m_prevBtnState = mcButtonState.Pushed;
							if (this.PrevMonthButtonClick!=null)
								this.PrevMonthButtonClick(this,new EventArgs());			
							btnClick = true;
						}
						if ( (rightBtnRgn.IsVisible(mouseLocation)) && (m_nextBtnState!=mcButtonState.Inactive) &&
							(m_nextBtnState!=mcButtonState.Pushed) )
						{
							m_nextBtnState = mcButtonState.Pushed;
							if (this.NextMonthButtonClick!=null)
								this.NextMonthButtonClick(this,new EventArgs());
							btnClick = true;
						}
					}
					if (m_yearSelector)
					{
						if ( (leftYearBtnRgn.IsVisible(mouseLocation)) &&  (m_prevYearBtnState!=mcButtonState.Inactive) &&
							(m_prevYearBtnState!=mcButtonState.Pushed) )
						{
							m_prevYearBtnState = mcButtonState.Pushed;
							if (this.PrevYearButtonClick!=null)
								this.PrevYearButtonClick(this,new EventArgs());			
							btnClick = true;
						}
						if ( (rightYearBtnRgn.IsVisible(mouseLocation)) && (m_nextYearBtnState!=mcButtonState.Inactive) &&
							(m_nextYearBtnState!=mcButtonState.Pushed) )
						{
							m_nextYearBtnState = mcButtonState.Pushed;
							if (this.NextYearButtonClick!=null)
								this.NextYearButtonClick(this,new EventArgs());
							btnClick = true;
						}
					}
				}
				else
				{
					if (m_contextMenu)
					{
						DisplayMonthContextMenu(mouseLocation);
					}
				}
				
				if (mode == mcClickMode.Single)
				{
					if ((this.Click!=null) && (!btnClick))
						this.Click(this,new ClickEventArgs(button));
				}
				else
				{
					if ((this.DoubleClick!=null) && (!btnClick))
						this.DoubleClick(this,new ClickEventArgs(button));	
				}
			}
			
			leftBtnRgn.Dispose();
			rightBtnRgn.Dispose();
			leftYearBtnRgn.Dispose();
			rightYearBtnRgn.Dispose();
		}
Esempio n. 25
0
		internal bool ImageHitTest(Point p)
		{
			
			bool status = false;
			if ((!m_userDrawn) && (m_dayImage!=null) && (Month.EnableImageClick))
			{				  
				Region r = new Region(m_imageRect);
				if (r.IsVisible(p))
					status = true;
				else
					status = false;
				r.Dispose();
			}

			return status;

		}
Esempio n. 26
0
 public override bool IsMy(Point p)
 {
     Region bound = new Region(new Rectangle(this.Location.X, this.Location.Y, 20, 20));
     return bound.IsVisible(p);
 }
Esempio n. 27
0
		private void CompareSmallRegion (Region region, bool[] expected, int ox, int oy, int width, int height)
		{
			int p = 0;
			for (int y = oy; y < height + oy; y++) {
				for (int x = ox; x < width + ox; x++) {
					Assert.AreEqual (expected[p], region.IsVisible (x, y), String.Format ("{0},{1}", x, y));
					p++;
				}
			}
		}
Esempio n. 28
0
		public void TestIsVisible()
		{
			Bitmap bmp = new Bitmap (600, 800);
			Graphics dc = Graphics.FromImage (bmp);
			Rectangle rect1, rect2;
			Region rgn1, rgn2;
			Matrix matrix = new Matrix ();

			rect1 = new Rectangle (500, 30, 60, 80);
			rect2 = new Rectangle (520, 40, 60, 80);

			rgn1 = new Region (new RectangleF (0, 0, 10,10));
			Assert.AreEqual (false, rgn1.IsVisible (0,0,0,1));

			rgn1 = new Region (rect1);
			Assert.AreEqual (false, rgn1.IsVisible (500,29));
			Assert.AreEqual (true, rgn1.IsVisible (500,30));
			Assert.AreEqual (true, rgn1.IsVisible (rect1));
			Assert.AreEqual (true, rgn1.IsVisible (rect2));
			Assert.AreEqual (false, rgn1.IsVisible (new Rectangle (50,50,2,5)));

			Rectangle r = new Rectangle (1,1, 2,1);
			rgn2 = new Region (r);
			Assert.AreEqual (true, rgn2.IsVisible (r));
			Assert.AreEqual (true, rgn2.IsVisible (new Rectangle (1,1, 2,2)));
			Assert.AreEqual (true, rgn2.IsVisible (new Rectangle (1,1, 10,10)));
			Assert.AreEqual (true, rgn2.IsVisible (new Rectangle (1,1, 1,1)));
			Assert.AreEqual (false, rgn2.IsVisible (new Rectangle (2,2, 1,1)));
			Assert.AreEqual (false, rgn2.IsVisible (new Rectangle (0,0, 1,1)));
			Assert.AreEqual (false, rgn2.IsVisible (new Rectangle (3,3, 1,1)));

			Assert.AreEqual (false, rgn2.IsVisible (0,0));
			Assert.AreEqual (false, rgn2.IsVisible (1,0));
			Assert.AreEqual (false, rgn2.IsVisible (2,0));
			Assert.AreEqual (false, rgn2.IsVisible (3,0));
			Assert.AreEqual (false, rgn2.IsVisible (0,1));
			Assert.AreEqual (true, rgn2.IsVisible (1,1));
			Assert.AreEqual (true, rgn2.IsVisible (2,1));
			Assert.AreEqual (false, rgn2.IsVisible (3,1));
			Assert.AreEqual (false, rgn2.IsVisible (0,2));
			Assert.AreEqual (false, rgn2.IsVisible (1,2));
			Assert.AreEqual (false, rgn2.IsVisible (2,2));
			Assert.AreEqual (false, rgn2.IsVisible (3,2));


		}
Esempio n. 29
0
		/* 
			Horizontal trackbar 
		  
			Does not matter the size of the control, Win32 always draws:
				- Ticks starting from pixel 13, 8
				- Channel starting at pos 8, 19 and ends at Width - 8
				- Autosize makes always the control 45 pixels high
				- Ticks are draw at (channel.Witdh - 10) / (Maximum - Minimum)
				
		*/
		private void DrawTrackBar_Horizontal (Graphics dc, Rectangle clip_rectangle, TrackBar tb,
			ref Rectangle thumb_pos, ref Rectangle thumb_area, Brush br_thumb,
			float ticks, int value_pos, bool mouse_value) {			
			Point toptick_startpoint = new Point ();
			Point bottomtick_startpoint = new Point ();
			Point channel_startpoint = new Point ();
			float pixel_len;
			float pixels_betweenticks;
			Rectangle area = tb.ClientRectangle;
			
			GetTrackBarDrawingInfo (tb , out pixels_betweenticks, out thumb_area, out thumb_pos, out channel_startpoint, out bottomtick_startpoint, out toptick_startpoint);

			#region Track
			TrackBarDrawHorizontalTrack (dc, thumb_area, channel_startpoint, clip_rectangle);
			#endregion

			#region Thumb
			switch (tb.TickStyle) {
			case TickStyle.BottomRight:
			case TickStyle.None:
				thumb_pos.Y = channel_startpoint.Y - 8;
				TrackBarDrawHorizontalThumbBottom (dc, thumb_pos, br_thumb, clip_rectangle, tb);
				break;
			case TickStyle.TopLeft:
				thumb_pos.Y = channel_startpoint.Y - 10;
				TrackBarDrawHorizontalThumbTop (dc, thumb_pos, br_thumb, clip_rectangle, tb);
				break;
			default:
				thumb_pos.Y = area.Y + 10;
				TrackBarDrawHorizontalThumb (dc, thumb_pos, br_thumb, clip_rectangle, tb);
				break;
			}
			#endregion

			pixel_len = thumb_area.Width - 11;
			pixels_betweenticks = pixel_len / ticks;

			thumb_area.Y = thumb_pos.Y;
			thumb_area.X = channel_startpoint.X;
			thumb_area.Height = thumb_pos.Height;
			#region Ticks
			if (pixels_betweenticks <= 0)
				return;
			if (tb.TickStyle == TickStyle.None)
				return;
			Region outside = new Region (area);
			outside.Exclude (thumb_area);

			if (outside.IsVisible (clip_rectangle)) {
				ITrackBarTickPainter tick_painter = TrackBarGetHorizontalTickPainter (dc);

				if ((tb.TickStyle & TickStyle.BottomRight) == TickStyle.BottomRight) {
					float y = area.Y + bottomtick_startpoint.Y;
					for (float inc = 0; inc < pixel_len + 1; inc += pixels_betweenticks) {					
						float x = area.X + bottomtick_startpoint.X + inc;
						tick_painter.Paint (
							x, y, 
							x, y + (inc == 0 || inc + pixels_betweenticks >= pixel_len + 1 ? 3 : 2));
					}
				}

				if ((tb.TickStyle & TickStyle.TopLeft) == TickStyle.TopLeft) {
					float y = area.Y + toptick_startpoint.Y;
					for (float inc = 0; inc < pixel_len + 1; inc += pixels_betweenticks) {					
						float x = area.X + toptick_startpoint.X + inc;
						tick_painter.Paint (
							x, y - (inc == 0 || (inc + pixels_betweenticks) >= pixel_len + 1 ? 3 : 2), 
							x, y);
					}			
				}
			}
			
			outside.Dispose ();
			#endregion
		}
Esempio n. 30
0
 public override bool Intersects(RectangleF bounds)
 {
     Region ellipseRegion = new Region(shape.PathReference);
     return ellipseRegion.IsVisible(bounds);
 }
Esempio n. 31
0
		internal void MouseMove(Point mouseLocation)
		{
			Region prevBtnRgn = new Region(m_prevBtnRect);
			Region nextBtnRgn = new Region(m_nextBtnRect);
			Region prevYearBtnRgn = new Region(m_prevYearBtnRect);
			Region nextYearBtnRgn = new Region(m_nextYearBtnRect);
            mcButtonState oldPrevMonthState = m_prevBtnState;
            mcButtonState oldNextMonthState = m_nextBtnState;
            mcButtonState oldPrevYearState = m_prevYearBtnState;
            mcButtonState oldNextYearState = m_nextYearBtnState;


			if (m_monthSelector)
			{
				// If not within left scroll button, make sure its not pushed
                if (!prevBtnRgn.IsVisible(mouseLocation))
                {
                    if (m_prevBtnState != mcButtonState.Inactive) m_prevBtnState = mcButtonState.Normal;
                }
                else if (m_prevBtnState != mcButtonState.Inactive)
                    m_prevBtnState = mcButtonState.Hot;

                if (oldPrevMonthState != m_prevBtnState)
                    DrawButton(m_calendar.CreateGraphics(),m_prevBtnState,mcHeaderButtons.PreviousMonth,m_prevBtnRect); 
                // If not within right scroll button, make sure its not pushed
                if (!nextBtnRgn.IsVisible(mouseLocation))
                {
                    if (m_nextBtnState != mcButtonState.Inactive) m_nextBtnState = mcButtonState.Normal;
                }
                else if (m_nextBtnState != mcButtonState.Inactive) 
                    m_nextBtnState = mcButtonState.Hot; 
			
                if (oldNextMonthState != m_nextBtnState)
                    DrawButton(m_calendar.CreateGraphics(), m_nextBtnState, mcHeaderButtons.NextMonth, m_nextBtnRect); 
            }
			if (m_yearSelector)
			{
				// If not within left scroll button, make sure its not pushed
                if (!prevYearBtnRgn.IsVisible(mouseLocation))
                {
                    if (m_prevYearBtnState != mcButtonState.Inactive) m_prevYearBtnState = mcButtonState.Normal;
                }
                else if (m_prevYearBtnState != mcButtonState.Inactive) 
                    m_prevYearBtnState = mcButtonState.Hot;

                if (oldPrevYearState != m_prevYearBtnState)
                    DrawButton(m_calendar.CreateGraphics(), m_prevYearBtnState, mcHeaderButtons.PreviousYear, m_prevYearBtnRect); 
          
						
				// If not within right scroll button, make sure its not pushed
                if (!nextYearBtnRgn.IsVisible(mouseLocation))
                {
                    if (m_nextYearBtnState != mcButtonState.Inactive) m_nextYearBtnState = mcButtonState.Normal;
                }
                else if (m_nextYearBtnState != mcButtonState.Inactive) 
                    m_nextYearBtnState = mcButtonState.Hot;

                if (oldNextYearState != m_nextYearBtnState)
                    DrawButton(m_calendar.CreateGraphics(), m_nextYearBtnState, mcHeaderButtons.NextYear, m_nextYearBtnRect); 
          
            }

			if (m_region.IsVisible(mouseLocation))
				m_calendar.ActiveRegion = mcCalendarRegion.Header;  
			
			
			prevBtnRgn.Dispose();
			nextBtnRgn.Dispose();
			prevYearBtnRgn.Dispose();
			nextYearBtnRgn.Dispose();

        }
		private int IsMouseOverPointer(int X, int Y)
		{

			if (MiddlePointers != null) {
				for (int I = 1; I <= MiddlePointers.Count; I++) {
					//Convert to Region.
					using (Region PointerRegion = new Region(BuildPointer(GetpX(((cblPointer)MiddlePointers[I]).pPos)))) {
						//Is the point inside the region.
						if (PointerRegion.IsVisible(X, Y))
							return I;
					}
				}
				return -1;
			}
			return -1;
		}