Beispiel #1
0
        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);
        }