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