Пример #1
0
        /// <summary>
        /// Add event data
        /// </summary>
        /// <param name="progressEvent"></param>
        /// <returns></returns>
        public ProgressItem AddEventData(Autodesk.Revit.DB.Events.ProgressChangedEventArgs progressEvent)
        {
            ProgressItem currentProgressItem = null;


            switch (progressEvent.Stage)
            {
            case ProgressStage.Started:
            {
                ProgressItem pi = new ProgressItem(progressEvent.Caption, progressEvent.LowerRange, progressEvent.UpperRange, progressEvent.Position, progressEvent.Stage);
                m_itemStack.Push(pi);
                currentProgressItem = pi;
                break;
            }

            case ProgressStage.PositionChanged:
            {
                ProgressItem pi = m_itemStack.Peek();
                if (pi.Name != progressEvent.Caption)
                {
                    Debug.WriteLine("Name not matching?");
                }
                pi.Position         = progressEvent.Position;
                pi.Stage            = progressEvent.Stage;
                currentProgressItem = pi;
                break;
            }

            case ProgressStage.RangeChanged:
            {
                ProgressItem pi = m_itemStack.Peek();
                pi.Upper            = progressEvent.UpperRange;
                pi.Stage            = progressEvent.Stage;
                currentProgressItem = pi;
                break;
            }

            case ProgressStage.Finished:
            {
                ProgressItem pi = m_itemStack.Pop();
                pi.IsDone           = true;
                pi.Stage            = progressEvent.Stage;
                currentProgressItem = pi;
                break;
            }

            case ProgressStage.CaptionChanged:
            {
                ProgressItem pi = m_itemStack.Peek();
                pi.Name  = progressEvent.Caption;
                pi.Stage = progressEvent.Stage;
                Debug.WriteLine("Caption Change at top.");
                currentProgressItem = pi;
                break;
            }

            case ProgressStage.Unchanged:
            {
                Debug.WriteLine("Idle.");
                currentProgressItem = new ProgressItem(progressEvent.Caption, progressEvent.LowerRange, progressEvent.UpperRange, progressEvent.Position, progressEvent.Stage);
                break;
            }


            default:
                throw new Exception("Unknown stage.");
            }


            if (m_itemStack.Count == 0)
            {
                Debug.WriteLine("Stack empty");
            }
            else
            {
                Debug.WriteLine(this.ToString());
            }

            return(currentProgressItem);
        }
Пример #2
0
        void RevitApp_ProgressChanged(object sender, Autodesk.Revit.DB.Events.ProgressChangedEventArgs e)
        {
            if ((e.Stage == Autodesk.Revit.DB.Events.ProgressStage.Unchanged) || ((e.Stage == Autodesk.Revit.DB.Events.ProgressStage.PositionChanged) && e.Cancellable))
            {
                this.button_Cancel.IsEnabled = true;
            }
            else
            {
                this.button_Cancel.IsEnabled = false;
            }

            System.Windows.Forms.Application.DoEvents();

            if (m_cancel)
            {
                bool shouldCancel = e.Cancellable;
                if (e.IsCancelled())
                {
                    textBox_log.Text += "!! We are already canceled!" + Environment.NewLine;
                }

                try
                {
                    e.Cancel();
                    m_cancel = false;
                }
                catch (Exception ex)
                {
                    textBox_log.Text += ("Exception: " + ex.ToString() + Environment.NewLine + "'  Cancelable' value: " + shouldCancel + Environment.NewLine);
                }
            }


            ProgressItem itemReturn = m_progressStack.AddEventData(e);

            this.stackPanel_ProgressData.Children.Clear();
            List <string> progressItems = m_progressStack.ToStringList(6);

            foreach (string progressItem in progressItems)
            {
                TextBox tbProgressItem = new TextBox();
                tbProgressItem.Text = progressItem;
                if (tbProgressItem.Text.Contains("<None>"))
                {
                    tbProgressItem.Foreground = Brushes.LightSlateGray;
                }
                this.stackPanel_ProgressData.Children.Add(tbProgressItem);
            }


            if ((itemReturn.Stage == Autodesk.Revit.DB.Events.ProgressStage.RangeChanged) || (itemReturn.Stage == Autodesk.Revit.DB.Events.ProgressStage.Unchanged))
            {
                string previousEventData = "null";
                if (m_previousEvent != null)
                {
                    previousEventData = m_previousEvent.ToString();
                }

                //   textBox_log.Text += "Previous: "+  previousEventData + Environment.NewLine + "Current: " + itemReturn.ToString() + Environment.NewLine;
            }

            System.Windows.Forms.Application.DoEvents();

            m_previousEvent = itemReturn;
        }