Exemple #1
0
        public void idleUpdate(object sender, Autodesk.Revit.UI.Events.IdlingEventArgs e)
        {
            e.SetRaiseWithoutDelay();

              UIApplication uiapp = sender as UIApplication;
              Document doc = uiapp.ActiveUIDocument.Document;
              UIDocument uidoc = uiapp.ActiveUIDocument;

              while (COVER.Instance.messageQueue.Count > 0)
              {
              COVERMessage m = COVER.Instance.messageQueue.Dequeue();

              if ((MessageTypes)m.messageType == MessageTypes.AvatarPosition || (MessageTypes)m.messageType == MessageTypes.SetView || (MessageTypes)m.messageType == MessageTypes.Resend)//read only messages
              {
                  COVER.Instance.handleMessage(m.message, m.messageType, doc, uidoc,uiapp);
              }
              else
              {
                  Transaction transaction = new Transaction(doc);

                  FailureHandlingOptions failOpt = transaction.GetFailureHandlingOptions();

                  failOpt.SetClearAfterRollback(true);
                  failOpt.SetFailuresPreprocessor(new NoWarningsAndErrors());
                  transaction.SetFailureHandlingOptions(failOpt);

                  if (transaction.Start("changeParameters") == TransactionStatus.Started)
                  {
                      COVER.Instance.handleMessage(m.message, m.messageType, doc, uidoc,uiapp);
                      if (TransactionStatus.Committed != transaction.Commit())
                      {
                          // Autodesk.Revit.UI.TaskDialog.Show("Failure", "Transaction could not be committed");
                          //an error occured end resolution was cancled thus this change can't be committed.
                          // just ignore it and dont bug the user
                      }
                  }

              }
              }
        }