コード例 #1
0
ファイル: GrBoundary.cs プロジェクト: jimnash/GraphLib
        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();
        }
コード例 #2
0
ファイル: GrBoundary.cs プロジェクト: jimnash/GraphLib
        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);
            }
        }
コード例 #3
0
ファイル: GrBoundary.cs プロジェクト: jimnash/GraphLib
        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);
        }
コード例 #4
0
ファイル: GrBoundary.cs プロジェクト: jimnash/GraphLib
        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
            {
            }
        }