public void MoveBoundary(PanelControl pan, int gid, int pid, int x) { var ok = false; if (gid == -1 || pid == -1) { return; } if (_graphTabPanel.Cst.Graphs == null) { return; } var newX = (x + pan.XOffset) / pan.XScale; var found = false; for (var i = 0; i < _graphTabPanel.Cst.Graphs.Length; i++) { if (_graphTabPanel.Cst.Graphs[i].TagId != gid) { continue; } gid = i; found = true; break; } if (!found) { return; } if (_graphTabPanel.Cst.Graphs[gid].ObjectTag == null) { return; } if (_graphTabPanel.Cst.Graphs[gid].ObjectTag.TypeId == GraphManipulationType.WbWaferStartStop) { ok = MoveBowWafer(gid, newX); } else { _graphTabPanel.Cst.Graphs[gid].DPts[pid].X = (float)newX; } if (ok && BoundaryCallback != null) { var ev = new BoundaryEventArgs { BoundarySetId = _graphTabPanel.Cst.Graphs[gid].ObjectTag.MyId }; BoundaryCallback(this, ev); } _graphPanel.RedrawAll(); }
internal void SetStartStopAngle(object sender, EventArgs e) { if (_inputBox == null) { _inputBox = new InputBox(); } for (var i = 0; i < _graphTabPanel.Cst.Graphs.Length; i++) { if (_graphTabPanel.Cst.Graphs[i].ObjectTag == null) { continue; } if (_graphTabPanel.Cst.Graphs[i].ObjectTag.TypeId != GraphManipulationType.WbWaferStartStop) { continue; } if (!(Math.Abs(_graphTabPanel.Cst.Graphs[i].DPts[0].X - _graphParameters.LastXPosition) < 3.0) && !(Math.Abs(_graphTabPanel.Cst.Graphs[i].DPts[1].X - _graphParameters.LastXPosition) < 3.0)) { continue; } _inputBox.Start(_graphTabPanel.Cst.Graphs[i].DPts[0].X, _graphTabPanel.Cst.Graphs[i].DPts[1].X); if (!CheckMoveIsOk(i, (float)_inputBox.TheStartAngle, (float)_inputBox.TheStopAngle)) { return; } _graphTabPanel.Cst.Graphs[i].DPts[0].X = (float)_inputBox.TheStartAngle; _graphTabPanel.Cst.Graphs[i].DPts[1].X = (float)_inputBox.TheStopAngle; SortAngleNames(GraphManipulationType.WbWaferStartStop, "Zone: "); _graphParameters.BoundaryChangeCallback?.Invoke(); if (BoundaryCallback == null) { continue; } var ev = new BoundaryEventArgs { BoundarySetId = _graphTabPanel.Cst.Graphs[i].ObjectTag.MyId }; BoundaryCallback(this, ev); } }
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); }
internal void RemoveBoundaryClick(object sender, EventArgs e) { var id = -1; var cnt = 0; if (_graphTabPanel.Cst.Graphs == null) { return; } var len = _graphTabPanel.Cst.Graphs.Length; foreach (var t in _graphTabPanel.Cst.Graphs) { if (t.ObjectTag.TypeId == GraphManipulationType.WbWaferStartStop) { ++cnt; } } if (cnt == 1) { MessageBox.Show(@"You Can't Remove The Last Zone There Has To Be At Least One"); return; } for (var i = 0; i < len; i++) { if (_graphTabPanel.Cst.Graphs[i].TagId != _graphParameters.LastBoundaryMoveId) { continue; } id = i; break; } if (id < 0 || id >= len) { return; } if (_graphTabPanel.Cst.Graphs[id].ObjectTag == null) { return; } _graphPanel.RemoveGraph(_graphTabPanel.Cst.Graphs[id].TagId); _graphPanel.RedrawAll(); _graphParameters.BoundaryChangeCallback?.Invoke(); if (BoundaryCallback == null) { return; } try { var ev = new BoundaryEventArgs { BoundarySetId = -1 }; BoundaryCallback(this, ev); } // ReSharper disable once EmptyGeneralCatchClause catch { } }