Esempio n. 1
0
        /// <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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        /// <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));
        }
Esempio n. 4
0
        /// <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;
            }
        }
Esempio n. 5
0
        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);
        }
Esempio n. 6
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);
        }