Beispiel #1
0
        /*-------------------------------------------------------------*/
        private void btnLdStackConfig_Click(object sender, EventArgs e)
        {
            try
            {
                using (OpenFileDialog openDialog = new OpenFileDialog())
                {
                    openDialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
                    openDialog.Filter           = "csv files (.CSV)|*.csv|Text Files (.txt)|*.txt|All Files (*.*)|*.*";
                    openDialog.Title            = "Please select a pnp machine file...";
                    if (openDialog.ShowDialog() == DialogResult.OK)
                    {
                        //HOW IT WORKS:
                        //1)get the reel list of the displayed layer
                        StackList   oldStackList  = (StackList)tcPhaseDisplayer.SelectedTab.Controls["stackList"];
                        List <Reel> stackReelList = oldStackList.GetTotalList();

                        //2) Make a new phase
                        string[] stackConfig = pnpMachine.LoadStackConfiguration(openDialog.FileName);
                        //StackList newStackList = new StackList(pnpMachine, openDialog.FileName, stackReelList);
                        StackList newStackList = new StackList(pnpMachine, stackConfig, stackReelList);
                        newStackList.Name = "stackList";
                        newStackList.updateAllListsEvent += UpdateAllListsEvent;
                        stacklisters.Add(newStackList);

                        //3) Try to add all components to the new stackList
                        foreach (Reel stackReel in stackReelList)
                        {
                            newStackList.AddReelWithUpdate(stackReel);
                        }
                        //4)
                        int phaseCounter = 0;
                        tcPhaseDisplayer.TabPages.Clear();
                        stacklisters = stacklisters.OrderBy(stacklist_ => stacklist_.Layer).ToList();
                        //http://stackoverflow.com/questions/3309188/how-to-sort-a-listt-by-a-property-in-the-object

                        while (phaseCounter < stacklisters.Count)
                        {
                            StackList curStackList = stacklisters[phaseCounter];
                            if (curStackList.ContainsReels)
                            {
                                phaseCounter++;
                                curStackList.PhaseNumber = phaseCounter;
                                GenerateTabPage(curStackList);
                            }
                            else
                            {
                                curStackList.updateAllListsEvent -= UpdateAllListsEvent;
                                stacklisters.Remove(curStackList);
                                curStackList.Dispose();
                            }
                        }
                    }
                }
            }
            catch (Exception exc)
            {
                MessageBox.Show(exc.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
Beispiel #2
0
        /// <summary>
        /// Checks all reels and fill the stacks automatic with the good reels
        /// </summary>
        /// <param name="showWarnings">True if warnings are shown, else false</param>
        private void AssignReels(bool showWarnings)
        {
            //1) Filter the reels
            List <Reel> acceptedReels = new List <Reel>();

            acceptedReels = reelsToPlace.FindAll(curReel => pnpMachine.ReelCanBePlaced(curReel));
            if (showWarnings)
            {
                //Show warnings to the user
                if (acceptedReels.Count == 0)
                {
                    MessageBox.Show("No reels accepted", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    return;
                }
                int numberRejected = reelsToPlace.Count - acceptedReels.Count;
                //Not all components are accepted
                if ((numberRejected != 0) &&
                    (MessageBox.Show(numberRejected.ToString() + " rejected" + Environment.NewLine + "Do you want to continue?",
                                     "Warning", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No))
                {
                    return;
                }
            }
            //2) clear the old tabPages
            ClearPhases();

            //3) split the list: top and bottom
            List <Reel> topReels, bottomReels;

            Reel.SplitReelList(acceptedReels, out topReels, out bottomReels);
            FillStackListers(topReels);
            FillStackListers(bottomReels);


            int index = 0;

            while (index < stacklisters.Count)
            {
                if (stacklisters[index].Layer == ReelLayer.Top)
                {
                    stacklisters[index].SetTotalList(topReels);
                }
                else if (stacklisters[index].Layer == ReelLayer.Bottom)
                {
                    stacklisters[index].SetTotalList(bottomReels);
                }
                else if (!stacklisters[index].ContainsReels)
                {
                    //Stacklayer == both -> empty stacklist
                    //if, for some reasen (reasen = bug), the layer is both and it contains reels, it should not be removed
                    StackList removedStackList = stacklisters[index]; //need pointer to control for dispose
                    removedStackList.updateAllListsEvent -= UpdateAllListsEvent;
                    stacklisters.RemoveAt(index);
                    removedStackList.Dispose();
                    continue;
                }
                GenerateTabPage(stacklisters[index]);
                index++; //index > 0
            }
            if (index != 0)
            {
                this.pnlExportButtons.Enabled = true;
            }
        }