/// <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); }
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)); }
/// <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); } }
/// <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); }
/// <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); } }
// 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; }
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); }
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); }
/// <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; }
/// <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; }
// 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(); }
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 } } }
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; }
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); }
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); } }
private static bool pointInPolygon(PointF point, Region myRegion) { return myRegion.IsVisible(point); }
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))); }
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); }
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)); } } } }
public bool IsVisible(PointF point, Graphics graphics) { var region = new Region (this); return region.IsVisible (point); }
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(); }
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; }
public override bool IsMy(Point p) { Region bound = new Region(new Rectangle(this.Location.X, this.Location.Y, 20, 20)); return bound.IsVisible(p); }
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++; } } }
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)); }
/* 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 }
public override bool Intersects(RectangleF bounds) { Region ellipseRegion = new Region(shape.PathReference); return ellipseRegion.IsVisible(bounds); }
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; }