/// <summary> /// /// </summary> /// <param name="pts"></param> /// <param name="title"></param> /// <param name="source"></param> /// <param name="gType"></param> /// <param name="tag"></param> /// <returns></returns> public int AddNewGraph(DPoint[] pts, string title, string source, GraphType gType, GraphManipulationTag tag) { if (tag == null) { tag = new GraphManipulationTag(); } if (_graphPanel.InvokeRequired) { var d = new AddNewGraphCallback(AddTNewGraph); _graphPanel.Invoke(d, pts, title, source, gType, tag); } else { AddTNewGraph(pts, title, source, gType, tag); } if (_useOffsetTag) { return(_offsetTagValue - 1); } return(AbsoluteGraphTag - 1); }
private int AddGeneralMarker(double tim, string value, GraphType gType) { var tagId = 0; var bPoints = new double[1]; var tag = new GraphManipulationTag { TypeId = GraphManipulationType.GeneralMarker }; if (_graphTabPanel.Cst.MainPan.TagList != null) { foreach (var t in _graphTabPanel.Cst.MainPan.TagList) { var gs = _graphPanel.GetGraphSurfaceFromTag(t.Tag); if (gs.ObjectTag.TypeId != GraphManipulationType.GeneralMarker) { continue; } if (gs.ObjectTag.MyId > tagId) { tagId = gs.ObjectTag.MyId; } } } tag.MyId = tagId + 1; tag.Pts = new double[1]; tag.Pts[0] = 0.0; bPoints[0] = tim; var lab = "(M" + tag.MyId + ")"; if (value != null) { lab = "(" + value + ")"; } tagId = _graphPanel.Gdata.AddNewGraph(bPoints, lab, "TAG", gType, tag); _graphPanel.SetGraphColour(tagId, GraphColour.Brown); _graphParameters.DontAddToContextMenu(true); ForceMarkersOnPan(); _graphParameters.DontAddToContextMenu(false); return(tagId); }
/// <summary> /// /// </summary> /// <param name="bPoints"></param> /// <param name="title"></param> /// <param name="source"></param> /// <param name="gType"></param> /// <param name="tag"></param> /// <returns></returns> public int AddNewGraph(double[] bPoints, string title, string source, GraphType gType, GraphManipulationTag tag) { var pts = new DPoint[bPoints.Length]; for (var i = 0; i < bPoints.Length; i++) { pts[i].X = (float)bPoints[i]; pts[i].Y = 0; pts[i].StartPt = false; } pts[0].StartPt = true; if (tag == null) { tag = new GraphManipulationTag(); } return(AddNewGraph(pts, title, source, gType, tag)); }
/// <summary> /// /// </summary> /// <param name="pts"></param> /// <param name="title"></param> /// <param name="source"></param> /// <param name="gType"></param> /// <param name="objectTag"></param> private void AddTNewGraph(DPoint[] pts, string title, string source, GraphType gType, GraphManipulationTag objectTag) { var tid = 0; var id = 0; var remTag = 0; if (_graphTabPanel.Cst.MainPan.TagList != null) { tid = _graphTabPanel.Cst.MainPan.TagList.Length; } if (_useOffsetTag) { remTag = AbsoluteGraphTag; AbsoluteGraphTag = _offsetTagValue; } Array.Resize(ref _graphTabPanel.Cst.MainPan.TagList, tid + 1); _graphTabPanel.Cst.MainPan.TagList[tid] = new GraphControl(AbsoluteGraphTag, _presetColours[tid % _presetColours.Length]) { Visible = _graphParameters.InitiallyVisible, CanBeVisible = _graphParameters.InitiallyVisible, Master = false }; if (_graphTabPanel.Cst.Graphs != null) { id = _graphTabPanel.Cst.Graphs.Length; } objectTag.GraphTag = AbsoluteGraphTag; Array.Resize(ref _graphTabPanel.Cst.Graphs, id + 1); _graphTabPanel.Cst.Graphs[id] = new GraphSurface { PtCount = 0, DyScale = 1.0, MaxPtCount = Math.Max(pts.Length, InitialAllocation), GType = gType, ObjectTag = objectTag, Name = title, Source = source, TagId = AbsoluteGraphTag, GxAxisTitle = _graphTabPanel.Cst.MainPan.XAxisTitle, GyAxisTitle = _graphTabPanel.Cst.MainPan.YAxisTitle, }; _graphTabPanel.Cst.Graphs[id].DPts = new DPoint[_graphTabPanel.Cst.Graphs[id].MaxPtCount]; for (var i = 0; i < pts.Length; i++) { _graphTabPanel.Cst.Graphs[id].DPts[i] = pts[i]; } _graphTabPanel.Cst.Graphs[id].DPts[0].StartPt = true; _graphTabPanel.Cst.Graphs[id].PtCount = pts.Length; if (_graphParameters.ResetPointCount) { _graphTabPanel.Cst.Graphs[id].PtCount = 0; } double max = pts[0].Y; var min = 0.0; if (max < min) { min = max; } if (GrBoundary.IsAnyMarkerOrBoundary(gType)) { max = 1.0; } else { switch (_graphTabPanel.Cst.MainPan.YAxisType) { case YAxisType.Free: for (var i = 1; i < pts.Length; i++) { if (pts[i].Y > max) { max = pts[i].Y; } if (pts[i].Y < min) { min = pts[i].Y; } } break; case YAxisType.MinMax: min = _graphTabPanel.Cst.MainPan.YAxisMin; max = _graphTabPanel.Cst.MainPan.YAxisMax; break; default: max = _graphPanel.GetMaxOnTab(1, _graphTabPanel.Cst.MainPan); min = _graphPanel.GetMinOnTab(1, _graphTabPanel.Cst.MainPan); break; } } if ((max - min) < 1E-06) { max = min + 1.0; } _graphTabPanel.Cst.Graphs[id].MaxD = max; _graphTabPanel.Cst.Graphs[id].MinD = min; if (!GrBoundary.IsAnyMarkerOrBoundary(gType)) { SetMasterGraph(ref _graphTabPanel.Cst.MainPan, 0); SetMasterGraph(ref _graphTabPanel.Cst.MainPan, id); } _graphParameters.ContextMenu.UpdateContextMenu(gType, title); _graphParameters.ContextMenu.SetGraphMenuColourTick(AbsoluteGraphTag, _graphTabPanel.Cst.MainPan.TagList[tid].Colour); for (var i = 0; i <= tid; i++) { _graphTabPanel.Cst.MainPan.TagList[i].Master = false; } for (var i = 0; i <= tid; i++) { if (!_graphTabPanel.Cst.MainPan.TagList[i].Visible) { continue; } GpContextMenu.SetMaster(_graphTabPanel.Cst.MainPan.ConMenu, _graphTabPanel.Cst.MainPan.TagList[i].Tag); _graphTabPanel.Cst.MainPan.TagList[i].Master = true; _graphParameters.MasterCallBack(); break; } if (_useOffsetTag) { AbsoluteGraphTag = remTag; _offsetTagValue += 1; } else { AbsoluteGraphTag += 1; } }
public GraphManipulationTag[] GetBoundaryData() { double maxA = 0; var cnt = _graphTabPanel.Cst.Graphs.Count(t => t.ObjectTag != null); if (cnt == 0) { return(null); } var gmt = new GraphManipulationTag[cnt]; cnt = -1; foreach (var t in _graphTabPanel.Cst.Graphs.Where(t => t.ObjectTag != null)) { ++cnt; gmt[cnt] = new GraphManipulationTag { GroupId = t.ObjectTag.GroupId, MyId = t.ObjectTag.MyId, TypeId = t.ObjectTag.TypeId, GraphTag = t.ObjectTag.GraphTag, Pts = null }; switch (gmt[cnt].TypeId) { case GraphManipulationType.GeneralMarker: gmt[cnt].Pts = new double[2]; gmt[cnt].Pts[0] = t.DPts[0].X; gmt[cnt].Pts[1] = t.DPts[0].Y; break; case GraphManipulationType.MeasurementMarker: gmt[cnt].Pts = new double[1]; gmt[cnt].Pts[0] = t.DPts[0].X; if (t.ObjectTag.Values != null) { // ReSharper disable once CompareOfFloatsByEqualityOperator if (maxA == 0) { maxA = t.ObjectTag.Values[0]; } else { // ReSharper disable once CompareOfFloatsByEqualityOperator if (t.ObjectTag.Values[0] == 0) { t.ObjectTag.Values[0] = maxA; } } } break; case GraphManipulationType.WbWaferStartStop: gmt[cnt].Pts = new double[2]; gmt[cnt].Pts[0] = t.DPts[0].X; gmt[cnt].Pts[1] = t.DPts[1].X; gmt[cnt].GraphTag = t.TagId; break; } } return(gmt); }
internal void AddWaferBoundaryClick(object sender, EventArgs e) { var myId = 0; var pts1 = new double[2]; var error = false; var gid = -1; pts1[0] = 0.0; if (_graphTabPanel.Cst.Graphs == null) { return; } foreach (var t in _graphTabPanel.Cst.Graphs.Where(t => t.ObjectTag != null)) { if (t.ObjectTag.GroupId > gid) { gid = t.ObjectTag.GroupId; } if (t.ObjectTag.TypeId != GraphManipulationType.WbWaferStartStop) { continue; } if (Math.Abs(_graphParameters.LastXPosition - t.DPts[0].X) < 3.0) { pts1[0] = _graphParameters.LastXPosition - 15.0; pts1[1] = pts1[0] + 10.0; myId = t.ObjectTag.MyId; break; } if (Math.Abs(_graphParameters.LastXPosition - t.DPts[1].X) < 3.0) { pts1[0] = _graphParameters.LastXPosition + 5.0; pts1[1] = pts1[0] + 10.0; myId = t.ObjectTag.MyId; break; } gid = -1; } if (gid == -1) { return; } foreach (var t in _graphTabPanel.Cst.Graphs.Where(t => t.ObjectTag != null).Where(t => t.ObjectTag.TypeId == GraphManipulationType.WbWaferStartStop)) { if (pts1[0] > t.DPts[0].X && pts1[0] < t.DPts[1].X) { error = true; } else if (pts1[1] > t.DPts[0].X && pts1[1] < t.DPts[1].X) { error = true; } if (!error) { continue; } MessageBox.Show(@"Not Enough Space To Add A Zone At This Point"); return; } _graphParameters.DontAddToContextMenu(true); var objectTag = new GraphManipulationTag { GroupId = -1, MyId = myId, TypeId = GraphManipulationType.WbWaferStartStop }; var id = _graphPanel.Gdata.AddNewGraph(pts1, "Zone: Start/Stop ", "BOU", GraphType.Boundary, objectTag); _graphPanel.SetGraphColour(id, GraphColour.Red); _graphParameters.DontAddToContextMenu(false); _graphPanel.RedrawAll(); ForceBoundariesOnPan(); SortAngleNames(GraphManipulationType.WbWaferStartStop, "Zone: "); _graphParameters.BoundaryChangeCallback?.Invoke(); if (BoundaryCallback == null) { return; } var ev = new BoundaryEventArgs { BoundarySetId = myId }; BoundaryCallback(this, ev); }