示例#1
0
        private void FailureProcessor(object sender, FailuresProcessingEventArgs e)
        {
            FailuresAccessor fas = e.GetFailuresAccessor();

            List <FailureMessageAccessor> fma = fas.GetFailureMessages().ToList();

            foreach (FailureMessageAccessor fa in fma)
            {
                //TODO
            }
        }
示例#2
0
        public FailureProcessingResult PreprocessFailures(FailuresAccessor failuresAccessor)
        {
            IList <FailureMessageAccessor> failureMessageAccessors = failuresAccessor.GetFailureMessages();

            foreach (FailureMessageAccessor failureMessageAccessor in failureMessageAccessors)
            {
                failuresAccessor.DeleteWarning(failureMessageAccessor);
            }

            return(FailureProcessingResult.Continue);
        }
示例#3
0
            public FailureProcessingResult PreprocessFailures(FailuresAccessor failuresAccessor)
            {
                var failList = failuresAccessor.GetFailureMessages();

                foreach (FailureMessageAccessor failure in failList)
                {
                    failuresAccessor.DeleteWarning(failure);
                }

                return(FailureProcessingResult.Continue);
            }
示例#4
0
        public FailureProcessingResult ProcessFailures(FailuresAccessor data)
        {
            switch (data.GetSeverity())
            {
            case FailureSeverity.Warning:
                data.ResolveFailures(data.GetFailureMessages());
                return(FailureProcessingResult.ProceedWithCommit);

            default:
                return(FailureProcessingResult.ProceedWithRollBack);
            }
        }
示例#5
0
 public FailureProcessingResult PreprocessFailures(FailuresAccessor failuresAccessor)
 {
     foreach (FailureMessageAccessor failure in failuresAccessor.GetFailureMessages())
     {
         FailureDefinitionId failID = failure.GetFailureDefinitionId();
         if (failureDefinitionIdList.Exists(e => e.Guid.ToString() == failID.Guid.ToString()))
         {
             failuresAccessor.DeleteWarning(failure);
         }
     }
     return(FailureProcessingResult.Continue);
 }
示例#6
0
        /// <summary>
        /// Log the failures coming from shape creation.
        /// </summary>
        /// <param name="failuresAccessor">The failure messages</param>
        /// <returns>The result of processing the failures.</returns>
        /// <remarks>This is in no way intended to be final code, as it doesn't actual handle failures,
        /// just logs them.</remarks>
        public FailureProcessingResult PreprocessFailures(FailuresAccessor failuresAccessor)
        {
            if (LoggingEnabled && m_LogFile != null)
            {
                int currentlyProcessedEntityId          = (CurrentlyProcessedEntity != null) ? CurrentlyProcessedEntity.Id : 0;
                IList <FailureMessageAccessor> failList = failuresAccessor.GetFailureMessages();
                foreach (FailureMessageAccessor failure in failList)
                {
                    if (currentlyProcessedEntityId != 0)
                    {
                        Write("#" + currentlyProcessedEntityId + ": ");
                    }
                    else
                    {
                        Write("GENERIC ");
                    }

                    switch (failure.GetSeverity())
                    {
                    case FailureSeverity.Warning:
                        Write("WARNING: ");
                        break;

                    default:
                        Write("ERROR: ");
                        break;
                    }

                    ICollection <ElementId> failureIds = failure.GetFailingElementIds();
                    int numFailureIds = (failureIds == null) ? 0 : failureIds.Count;
                    if (numFailureIds > 0)
                    {
                        Write("(Revit Element Id");
                        if (numFailureIds > 1)
                        {
                            Write("s");
                        }
                        Write(": ");
                        foreach (ElementId failureId in failureIds)
                        {
                            Write(failureId + " ");
                        }
                        Write("): ");
                    }

                    WriteLine(failure.GetDescriptionText());
                }

                // Only remove the warnings if logging is on.
                failuresAccessor.DeleteAllWarnings();
            }
            return(FailureProcessingResult.Continue);
        }
示例#7
0
 public FailureProcessingResult PreprocessFailures(FailuresAccessor failuresAccessor)
 {
     // if there are any failures, rollback the transaction
     if (failuresAccessor.GetFailureMessages().Count > 0)
     {
         return(FailureProcessingResult.ProceedWithRollBack);
     }
     else
     {
         return(FailureProcessingResult.Continue);
     }
 }
示例#8
0
        public FailureProcessingResult PreprocessFailures(FailuresAccessor accessor)
        {
            var failures = accessor.GetFailureMessages();

            foreach (var failure in failures)
            {
                //var id = failure.GetFailureDefinitionId();
                //if (BuiltInFailures.GeneralFailures.ErrorInFamilyResolved == id)
                accessor.DeleteWarning(failure);
            }
            return(FailureProcessingResult.Continue);
        }
        public FailureProcessingResult PreprocessFailures(FailuresAccessor failuresAccessor)
        {
            // inside event handler, get all warnings

            IList <FailureMessageAccessor> fmas = failuresAccessor.GetFailureMessages();

            if (fmas.Count == 0)
            {
                return(FailureProcessingResult.Continue);
            }

            foreach (FailureMessageAccessor fma in fmas)
            {
                FailureSeverity s = fma.GetSeverity();
                if (s == FailureSeverity.Warning)
                {
                    failuresAccessor.DeleteWarning(fma);
                }
                else if (s == FailureSeverity.Error)
                {
                    //FailureDefinitionId id = fma.GetFailureDefinitionId();

                    //if (id == BuiltInFailures.JoinElementsFailures.)
                    //{
                    // only default option being choosen,
                    // not good enough!
                    //failuresAccessor.ResolveFailure(fma);
                    //}
                    //return FailureProcessingResult.ProceedWithRollBack;
                }

                /*
                 * switch (s)
                 * {
                 *  // Slightly off axis error gets ignored
                 *  case "Element is slightly off axis and may cause inaccuracies.":
                 *
                 *      break;
                 *
                 *  case "Beam or Brace is slightly off axis and may cause inaccuracies.":
                 *      break;
                 *
                 *  default:
                 *
                 *      //GlobalVariables.WarningList.Add(new WarningEntry(a.GetTransactionName(), f.GetDescriptionText(), f.GetFailingElementIds()));
                 *      break;
                 * }
                 * a.DeleteWarning(f);
                 */
            }
            return(FailureProcessingResult.Continue);
        }
示例#10
0
        private void OnFailuresProcessing(object sender, FailuresProcessingEventArgs e)
        {
            FailuresAccessor failuresAccessor = e.GetFailuresAccessor();
            //string transactionName = failuresAccessor.GetTransactionName();

            IList <FailureMessageAccessor> fmas = failuresAccessor.GetFailureMessages();

            if (fmas.Count > 0)
            {
                List <FailureMessageInfo> failureMessageInfoList = new List <FailureMessageInfo>();
                foreach (FailureMessageAccessor fma in fmas)
                {
                    FailureMessageInfo messageInfo = new FailureMessageInfo();
                    try
                    {
                        messageInfo.ErrorMessage      = fma.GetDescriptionText();
                        messageInfo.ErrorSeverity     = fma.GetSeverity().ToString();
                        messageInfo.FailingElementIds = fma.GetFailingElementIds().ToList();
                    }
                    catch { messageInfo.ErrorMessage = "Unknown Error"; }
                    failureMessageInfoList.Add(messageInfo);

                    //add log message
                    FailureDefinitionId definitionId = fma.GetFailureDefinitionId();
                    Guid defGuid = definitionId.Guid;
                    if (!FailureDefinitionIds.Contains(defGuid))
                    {
                        LogFileManager.AppendLog(messageInfo);
                        FailureDefinitionIds.Add(defGuid);
                    }

                    if (FailureSeverity.Warning == fma.GetSeverity())
                    {
                        failuresAccessor.DeleteWarning(fma);
                    }
                    else if (FailureSeverity.Error == fma.GetSeverity())
                    {
                        e.SetProcessingResult(FailureProcessingResult.ProceedWithRollBack);
                        return;
                    }
                }

                if (failuresAccessor.IsFailureResolutionPermitted())
                {
                    failuresAccessor.ResolveFailures(fmas);
                }

                e.SetProcessingResult(FailureProcessingResult.ProceedWithCommit);
                return;
            }
            e.SetProcessingResult(FailureProcessingResult.Continue);
        }
        /// <summary>
        /// Will dismiss all warnings
        /// </summary>
        private void DismissAllWarnings(object o, FailuresProcessingEventArgs e)
        {
            FailuresAccessor fa = e.GetFailuresAccessor();
            IList <FailureMessageAccessor> failList = fa.GetFailureMessages();

            // Inside event handler, get all warnings
//			warningsNum += failList.Count;
            foreach (FailureMessageAccessor failure in failList)
            {
                fa.DeleteWarning(failure);
                warningsNum += 1;
            }
        }
示例#12
0
        public FailureProcessingResult PreprocessFailures(FailuresAccessor failuresAccessor)
        {
            IList <FailureMessageAccessor> failList = new List <FailureMessageAccessor>();

            // Inside event handler, get all warnings
            failList = failuresAccessor.GetFailureMessages();
            foreach (FailureMessageAccessor failure in failList)
            {
                failuresAccessor.DeleteWarning(failure);
            }

            return(FailureProcessingResult.Continue);
        }
示例#13
0
        public FailureProcessingResult PreprocessFailures(FailuresAccessor failuresAccessor)
        {
            //IList<FailureMessageAccessor> failureMessages = failuresAccessor.GetFailureMessages();

            //foreach (FailureMessageAccessor currenMessageAcessor in failureMessages)
            //{
            //    failuresAccessor.ResolveFailure(currenMessageAcessor);
            //}

            failuresAccessor.DeleteAllWarnings();

            return(FailureProcessingResult.Continue);
        }
        public FailureProcessingResult PreprocessFailures(FailuresAccessor a)
        {
            IList <FailureMessageAccessor> failures = a.GetFailureMessages();

            foreach (FailureMessageAccessor f in failures)
            {
                if (f.GetSeverity().ToString() == "Warning")
                {
                    a.DeleteWarning(f);
                }
            }
            return(FailureProcessingResult.Continue);
        }
示例#15
0
        private void FailureProcessor(object sender, FailuresProcessingEventArgs e)
        {
            FailuresAccessor fas = e.GetFailuresAccessor();

            List <FailureMessageAccessor> fma = fas.GetFailureMessages().ToList();

            foreach (FailureMessageAccessor fa in fma)
            {
                string failuremessage = fa.GetDescriptionText();

                fas.DeleteWarning(fa);
            }
        }
        FailureProcessingResult IFailuresPreprocessor.PreprocessFailures(FailuresAccessor failuresAccessor)
        {
            if (!failuresAccessor.IsTransactionBeingCommitted())
            {
                return(FailureProcessingResult.Continue);
            }

            if (failuresAccessor.GetSeverity() >= FailureSeverity.DocumentCorruption)
            {
                return(FailureProcessingResult.ProceedWithRollBack);
            }

            if (failuresAccessor.GetSeverity() >= FailureSeverity.Error)
            {
                // Handled failures in order
                {
                    var failureDefinitionIdsToFix = FailureDefinitionIdsToFix;
                    if (failureDefinitionIdsToFix != null)
                    {
                        var result = FixFailures(failuresAccessor, failureDefinitionIdsToFix);
                        if (result != FailureProcessingResult.Continue)
                        {
                            return(result);
                        }
                    }
                }

                // Unhandled failures in incomming order
                {
                    var failureDefinitionIdsToFix = failuresAccessor.GetFailureMessages().GroupBy(x => x.GetFailureDefinitionId()).Select(x => x.Key);
                    var result = FixFailures(failuresAccessor, failureDefinitionIdsToFix);
                    if (result != FailureProcessingResult.Continue)
                    {
                        return(result);
                    }
                }
            }

            if (failuresAccessor.GetSeverity() >= FailureSeverity.Warning)
            {
                // Unsolved failures or warnings
                foreach (var error in failuresAccessor.GetFailureMessages().OrderBy(error => error.GetSeverity()))
                {
                    AddRuntimeMessage(error, false);
                }

                failuresAccessor.DeleteAllWarnings();
            }

            return(FailureProcessingResult.Continue);
        }
    public FailureProcessingResult PreprocessFailures(FailuresAccessor a)
    {
        var failures = a.GetFailureMessages();

        foreach (var f in failures)
        {
            var id = f.GetFailureDefinitionId();
            if (BuiltInFailures.GeneralFailures.DuplicateValue == id)
            {
                a.DeleteWarning(f);
            }
        }
        return(FailureProcessingResult.Continue);
    }
示例#18
0
        public FailureProcessingResult PreprocessFailures(FailuresAccessor failuresAccessor)
        {
            foreach (FailureMessageAccessor fMA in failuresAccessor.GetFailureMessages())
            {
                FailureList.Add(fMA.GetDescriptionText());
                FailureDefinitionId FailDefID
                    = fMA.GetFailureDefinitionId();

                //if (FailDefID == BuiltInFailures
                //  .GeneralFailures.DuplicateValue)
                //    failuresAccessor.DeleteWarning(fMA);
            }
            return(FailureProcessingResult.Continue);
        }
示例#19
0
        public FailureProcessingResult PreprocessFailures(FailuresAccessor failuresAccessor)
        {
            var failList = failuresAccessor.GetFailureMessages();

            foreach (var item in failList)
            {
                var failureId = item.GetFailureDefinitionId();
                if (failureId == BuiltInFailures.InaccurateFailures.InaccurateBeamOrBrace)
                {
                    failuresAccessor.DeleteWarning(item);
                }
            }
            return(FailureProcessingResult.Continue);
        }
        /// <summary>
        /// Implementation of the IFailuresPreprocessor.
        /// </summary>
        /// <param name="failuresAccessor"></param>
        /// <returns></returns>
        public FailureProcessingResult PreprocessFailures(FailuresAccessor failuresAccessor)
        {
            foreach (FailureMessageAccessor failure in failuresAccessor.GetFailureMessages())
            {
                // Delete any "Can't paste duplicate types.  Only non duplicate types will be pasted." warnings
                if (failure.GetFailureDefinitionId() == BuiltInFailures.CopyPasteFailures.CannotCopyDuplicates)
                {
                    failuresAccessor.DeleteWarning(failure);
                }
            }

            // Handle any other errors interactively
            return(FailureProcessingResult.Continue);
        }
示例#21
0
        private static void OnFailuresProcessing(object sender, Autodesk.Revit.DB.Events.FailuresProcessingEventArgs e)
        {
            FailuresAccessor failuresAccessor = e.GetFailuresAccessor();
            IEnumerable <FailureMessageAccessor> failureMessages = failuresAccessor.GetFailureMessages();

            foreach (FailureMessageAccessor failureMessage in failureMessages)
            {
                if (failureMessage.GetSeverity() == FailureSeverity.Warning)
                {
                    failuresAccessor.DeleteWarning(failureMessage);
                }
            }
            e.SetProcessingResult(FailureProcessingResult.Continue);
        }
示例#22
0
        public FailureProcessingResult PreprocessFailures(FailuresAccessor failuresAccessor)
        {
            IList <FailureMessageAccessor> Failures = failuresAccessor.GetFailureMessages();

            foreach (FailureMessageAccessor failure in Failures)
            {
                if (failure.GetSeverity().ToString().Contains("Warning"))
                {
                    FailureDefinitionId Id = failure.GetFailureDefinitionId();
                    failuresAccessor.DeleteAllWarnings();
                }
            }
            return(FailureProcessingResult.Continue);
        }
示例#23
0
            public FailureProcessingResult PreprocessFailures(
                FailuresAccessor failuresAccessor)
            {
                IList <FailureMessageAccessor> failureMessages
                    = failuresAccessor.GetFailureMessages();

                foreach (FailureMessageAccessor
                         failureMessageAccessor in failureMessages)
                {
                    // We're just deleting all of the warning level
                    // failures and rolling back any others

                    FailureDefinitionId id = failureMessageAccessor
                                             .GetFailureDefinitionId();

                    try
                    {
                        ErrorMessage = failureMessageAccessor
                                       .GetDescriptionText();
                    }
                    catch
                    {
                        ErrorMessage = "Unknown Error";
                    }

                    try
                    {
                        FailureSeverity failureSeverity
                            = failureMessageAccessor.GetSeverity();

                        ErrorSeverity = failureSeverity.ToString();

                        if (failureSeverity == FailureSeverity.Warning)
                        {
                            failuresAccessor.DeleteWarning(
                                failureMessageAccessor);
                        }
                        else
                        {
                            return(FailureProcessingResult
                                   .ProceedWithRollBack);
                        }
                    }
                    catch
                    {
                    }
                }
                return(FailureProcessingResult.Continue);
            }
        private void Application_FailuresProcessing(object sender, FailuresProcessingEventArgs e)
        {
            FailuresAccessor failuresAccessor = e.GetFailuresAccessor();

            failuresAccessor.DeleteAllWarnings();

            IList <FailureMessageAccessor> fmas = failuresAccessor.GetFailureMessages();

            var options = failuresAccessor.GetFailureHandlingOptions();

            options.SetClearAfterRollback(true);
            options.SetForcedModalHandling(false);

            failuresAccessor.SetFailureHandlingOptions(options);
        }
        public FailureProcessingResult PreprocessFailures(FailuresAccessor failuresAccessor)
        {
            foreach (FailureMessageAccessor failure in failuresAccessor.GetFailureMessages())
            {
                FailureDefinitionId defId = failure.GetFailureDefinitionId();

                //delete warning "Elevation View Delete"
                if (failure.GetSeverity() == FailureSeverity.Warning)
                {
                    failuresAccessor.DeleteWarning(failure);
                }
            }

            return(FailureProcessingResult.Continue);
        }
示例#26
0
        public FailureProcessingResult PreprocessFailures(FailuresAccessor fa)
        {
            var failures = fa.GetFailureMessages();

            foreach (var f in failures)
            {
                var failId = f.GetFailureDefinitionId();
                if (failId == BuiltInFailures.OverlapFailures.DuplicateInstances ||
                    failId == BuiltInFailures.GeneralFailures.DuplicateValue)
                {
                    fa.DeleteWarning(f);
                }
            }
            return(FailureProcessingResult.Continue);
        }
示例#27
0
        public FailureProcessingResult PreprocessFailures(FailuresAccessor failuresAccessor)
        {
            IList <FailureMessageAccessor> FailureList = new List <FailureMessageAccessor>();

            FailureList = failuresAccessor.GetFailureMessages();
            foreach (FailureMessageAccessor failure in FailureList)
            {
                FailureDefinitionId failID = failure.GetFailureDefinitionId();
                if (failID == BuiltInFailures.GroupFailures.AtomViolationWhenOnePlaceInstance)
                {
                    failuresAccessor.DeleteWarning(failure);
                }
            }
            return(FailureProcessingResult.Continue);
        }
示例#28
0
        private void TransactionManager_FailuresRaised(FailuresAccessor failuresAccessor)
        {
            IList <FailureMessageAccessor> failList = failuresAccessor.GetFailureMessages();

            IEnumerable <FailureMessageAccessor> query =
                from fail in failList
                where fail.GetSeverity() == FailureSeverity.Warning
                select fail;

            foreach (FailureMessageAccessor fail in query)
            {
                Logger.Log("!! Warning: " + fail.GetDescriptionText());
                failuresAccessor.DeleteWarning(fail);
            }
        }
        /// <summary>
        /// This method is called when there have been failures found at the end of a transaction and Revit is about to start processing them.
        /// </summary>
        /// <param name="failuresAccessor"></param>
        /// <returns></returns>
        public FailureProcessingResult PreprocessFailures(FailuresAccessor failuresAccessor)
        {
            // 在事务结束时,Revit即将处理这些错误之前调用

            IList <FailureMessageAccessor> fmas = failuresAccessor.GetFailureMessages();

            if (fmas.Count == 0)
            {
                return(FailureProcessingResult.Continue);
            }

            String transactionName = failuresAccessor.GetTransactionName();

            // 用事件名称区分是否是要处理的错误信息
            if (transactionName.Equals("Warning_FailurePreproccessor"))
            {
                foreach (FailureMessageAccessor fma in fmas)
                {
                    FailureDefinitionId id = fma.GetFailureDefinitionId();
                    if (id == Command.m_idWarning)
                    {
                        // 删除警告
                        failuresAccessor.DeleteWarning(fma);
                    }
                }

                return(FailureProcessingResult.ProceedWithCommit);
            }
            else if (transactionName.Equals("Warning_FailurePreproccessor_OverlappedWall"))
            {
                foreach (FailureMessageAccessor fma in fmas)
                {
                    FailureDefinitionId id = fma.GetFailureDefinitionId();
                    if (id == BuiltInFailures.OverlapFailures.WallsOverlap)
                    {
                        // 删除错误
                        failuresAccessor.DeleteWarning(fma);
                    }
                }

                return(FailureProcessingResult.ProceedWithCommit);
            }
            else
            {
                // 不做处理
                return(FailureProcessingResult.Continue);
            }
        }
示例#30
0
        public FailureProcessingResult PreprocessFailures(FailuresAccessor failuresAccessor)
        {
            IList <FailureMessageAccessor> failList = new List <FailureMessageAccessor>();
            var criticalFails  = 0;
            var failedElements = new List <ElementId>();

            // Inside event handler, get all warnings
            failList = failuresAccessor.GetFailureMessages();
            foreach (FailureMessageAccessor failure in failList)
            {
                // check FailureDefinitionIds against ones that you want to dismiss,
                //FailureDefinitionId failID = failure.GetFailureDefinitionId();
                // prevent Revit from showing Unenclosed room warnings
                //if (failID == BuiltInFailures.RoomFailures.RoomNotEnclosed)
                //{
                var t = failure.GetDescriptionText();
                _converter.ConversionErrors.Add(new Exception(t));

                var s = failure.GetSeverity();
                if (s == FailureSeverity.Warning)
                {
                    continue;
                }
                try
                {
                    failuresAccessor.ResolveFailure(failure);
                }
                catch (Exception e)
                {
                    // currently, the whole commit is rolled back. this should be investigated further at a later date
                    // to properly proceed with commit
                    failedElements.AddRange(failure.GetFailingElementIds());
                    _converter.ConversionErrors.Clear();
                    _converter.ConversionErrors.Add(new Exception(
                                                        "Objects failed to bake due to a fatal error!\n" +
                                                        "This is likely due to scaling issues - please ensure you've set the correct units on your objects or remove any invalid objects.\n\n" +
                                                        "Revit error: " + t));
                    // logging the error
                    var exception =
                        new Speckle.Core.Logging.SpeckleException("Revit commit failed: " + t, e,
                                                                  level: Sentry.SentryLevel.Warning);
                    return(FailureProcessingResult.ProceedWithCommit);
                }
            }

            failuresAccessor.DeleteAllWarnings();
            return(FailureProcessingResult.Continue);
        }
示例#31
0
        public FailureProcessingResult PreprocessFailures(
          FailuresAccessor a)
        {
            // inside event handler, get all warnings

            IList<FailureMessageAccessor> failures
              = a.GetFailureMessages();

            foreach (FailureMessageAccessor f in failures)
            {
                // check failure definition ids
                // against ones to dismiss:

                FailureDefinitionId id
                  = f.GetFailureDefinitionId();

                //BuiltInFailures.JoinElementsFailures.CannotKeepJoined == id ||
                //    BuiltInFailures.JoinElementsFailures.CannotJoinElementsError == id ||
                //    BuiltInFailures.JoinElementsFailures.CannotJoinElementsStructural == id ||
                //    BuiltInFailures.JoinElementsFailures.CannotJoinElementsStructuralError == id ||
                //    BuiltInFailures.JoinElementsFailures.CannotJoinElementsWarn == id

                if (BuiltInFailures.InaccurateFailures.InaccurateLine == id ||
                    BuiltInFailures.OverlapFailures.DuplicateInstances == id ||
                    BuiltInFailures.InaccurateFailures.InaccurateCurveBasedFamily == id ||
                    BuiltInFailures.InaccurateFailures.InaccurateBeamOrBrace == id
                    )
                {
                    a.DeleteWarning(f);
                }
                //else if(BuiltInFailures.CurveFailures.LineTooShortError == id ||
                //    BuiltInFailures.CurveFailures.LineTooShortWarning == id
                //    )
                //{
                //    a.RollBackPendingTransaction();
                //}
                else
                {
                    a.RollBackPendingTransaction();
                }

            }
            return FailureProcessingResult.Continue;
        }
        FailureProcessingResult PreprocessFailures(
            FailuresAccessor a)
        {
            IList<FailureMessageAccessor> failures
              = a.GetFailureMessages();

              foreach( FailureMessageAccessor f in failures )
              {
            FailureSeverity fseverity = a.GetSeverity();

            if( fseverity == FailureSeverity.Warning )
            {
              a.DeleteWarning( f );
            }
            else
            {
              a.ResolveFailure( f );
              return FailureProcessingResult.ProceedWithCommit;
            }
              }
              return FailureProcessingResult.Continue;
        }
示例#33
0
 public FailureProcessingResult PreprocessFailures(FailuresAccessor failuresAccessor)
 {
     tm.ProcessFailures(failuresAccessor);
     return FailureProcessingResult.Continue;
 }
示例#34
0
文件: Command.cs 项目: AMEE/revit
        /// <summary>
        /// Method that Revit will invoke to process failures at the end of transaction. 
        /// </summary>
        /// <param name="failuresAccessor">Provides all necessary data to perform the resolution of failures.</param>
        /// <returns></returns>
        public FailureProcessingResult ProcessFailures(FailuresAccessor failuresAccessor)
        {
            IList<FailureMessageAccessor> fmas = failuresAccessor.GetFailureMessages();
            if (fmas.Count == 0)
            {
                return FailureProcessingResult.Continue;
            }

            String transactionName = failuresAccessor.GetTransactionName();
            if (transactionName.Equals("Error_FailuresProcessor"))
            {
                foreach (FailureMessageAccessor fma in fmas)
                {
                    FailureDefinitionId id = fma.GetFailureDefinitionId();
                    if (id == Command.m_idError)
                    {
                        failuresAccessor.ResolveFailure(fma);
                    }
                }
                return FailureProcessingResult.ProceedWithCommit;
            }
            else
            {
                return FailureProcessingResult.Continue;
            }
        }
示例#35
0
    public FailureProcessingResult PreprocessFailures(FailuresAccessor failuresAccessor)
    {
        foreach (FailureMessageAccessor failure in failuresAccessor.GetFailureMessages())
                {
                    // Delete any "Can't paste duplicate types.  Only non duplicate types will be pasted." warnings
                    //if (failure.GetFailureDefinitionId() == BuiltInFailures.CopyPasteFailures.CannotCopyDuplicates)
                    if (failure.GetFailureDefinitionId() == BuiltInFailures.CopyPasteFailures.CannotCopyDuplicates)
                    {
                        failuresAccessor.DeleteWarning(failure);
                        //failuresAccessor.GetType();
                    }
                    //List<ElementId> delete = new List<ElementId>();
                    //failuresAccessor.DeleteElements(delete);
                }

                // Handle any other errors interactively
                return FailureProcessingResult.Continue;
    }
示例#36
0
        public FailureProcessingResult PreprocessFailures(FailuresAccessor failuresAccessor)
        {
            var failList = failuresAccessor.GetFailureMessages();

            var query = from fail in failList
                        let severity = fail.GetSeverity()
                        where severity == FailureSeverity.Warning
                        select fail;

            foreach (var fail in query)
            {
                DynamoLogger.Instance.Log(
                    "!! Warning: " + fail.GetDescriptionText());
                failuresAccessor.DeleteWarning(fail);
            }

            return FailureProcessingResult.Continue;
        }
示例#37
0
        private static void TransactionManager_FailuresRaised(FailuresAccessor failuresAccessor)
        {
            IList<FailureMessageAccessor> failList = failuresAccessor.GetFailureMessages();

            IEnumerable<FailureMessageAccessor> query = 
                from fail in failList
                where fail.GetSeverity() == FailureSeverity.Warning
                select fail;

            foreach (FailureMessageAccessor fail in query)
            {
                dynSettings.DynamoLogger.Log("!! Warning: " + fail.GetDescriptionText());
                failuresAccessor.DeleteWarning(fail);
            }
        }
示例#38
0
文件: Command.cs 项目: AMEE/revit
        /// <summary>
        /// This method is called when there have been failures found at the end of a transaction and Revit is about to start processing them. 
        /// </summary>
        /// <param name="failuresAccessor">The Interface class that provides access to the failure information. </param>
        /// <returns></returns>
        public FailureProcessingResult PreprocessFailures(FailuresAccessor failuresAccessor)
        {
            IList<FailureMessageAccessor> fmas = failuresAccessor.GetFailureMessages();
            if (fmas.Count == 0)
            {
                return FailureProcessingResult.Continue;
            }

            String transactionName = failuresAccessor.GetTransactionName();
            if (transactionName.Equals("Warning_FailurePreproccessor"))
            {
                foreach (FailureMessageAccessor fma in fmas)
                {
                    FailureDefinitionId id = fma.GetFailureDefinitionId();
                    if (id == Command.m_idWarning)
                    {
                        failuresAccessor.DeleteWarning(fma);
                    }
                }

                return FailureProcessingResult.ProceedWithCommit;
            }
            else if (transactionName.Equals("Warning_FailurePreproccessor_OverlappedWall"))
            {
                foreach (FailureMessageAccessor fma in fmas)
                {
                    FailureDefinitionId id = fma.GetFailureDefinitionId();
                    if (id == BuiltInFailures.OverlapFailures.WallsOverlap)
                    {
                        failuresAccessor.DeleteWarning(fma);
                    }
                }

                return FailureProcessingResult.ProceedWithCommit;
            }
            else
            {
                return FailureProcessingResult.Continue;
            }
        }
            public FailureProcessingResult PreprocessFailures(
                FailuresAccessor a)
            {
                // inside event handler, get all warnings

                IList<FailureMessageAccessor> failures
                  = a.GetFailureMessages();

                foreach( FailureMessageAccessor f in failures )
                {
                  // check failure definition ids
                  // against ones to dismiss:

                  FailureDefinitionId id
                = f.GetFailureDefinitionId();

                  if( BuiltInFailures.RoomFailures.RoomNotEnclosed
                == id )
                  {
                a.DeleteWarning( f );
                  }
                }
                return FailureProcessingResult.Continue;
            }
示例#40
0
        private void ProcessFailures(FailuresAccessor failures)
        {
            if (FailuresRaised == null)
                return;

            FailuresRaised(failures);
        }
      /// <summary>
      /// Log the failures coming from shape creation.
      /// </summary>
      /// <param name="failuresAccessor">The failure messages</param>
      /// <returns>The result of processing the failures.</returns>
      /// <remarks>This is in no way intended to be final code, as it doesn't actual handle failures,
      /// just logs them.</remarks>
      public FailureProcessingResult PreprocessFailures(FailuresAccessor failuresAccessor)
      {
         int currentlyProcessedEntityId = (CurrentlyProcessedEntity != null) ? CurrentlyProcessedEntity.Id : 0;
         IList<FailureMessageAccessor> failList = failuresAccessor.GetFailureMessages();
         foreach (FailureMessageAccessor failure in failList)
         {
            if (currentlyProcessedEntityId != 0)
               Write("#" + currentlyProcessedEntityId + ": ");
            else
               Write("GENERIC ");

            switch (failure.GetSeverity())
            {
               case FailureSeverity.Warning:
                  Write("WARNING: ");
                  break;
               default:
                  Write("ERROR: ");
                  break;
            }

            ICollection<ElementId> failureIds = failure.GetFailingElementIds();
            int numFailureIds = (failureIds == null) ? 0 : failureIds.Count;
            if (numFailureIds > 0)
            {
               Write("(Revit Element Id");
               if (numFailureIds > 1)
                  Write("s");
               Write(": ");
               foreach (ElementId failureId in failureIds)
                  Write(failureId + " ");
               Write("): ");
            }

            WriteLine(failure.GetDescriptionText());
         }

         // Only remove the warnings if logging is on.
         failuresAccessor.DeleteAllWarnings();

         return FailureProcessingResult.Continue;
      }
 public FailureProcessingResult PreprocessFailures(FailuresAccessor failuresAccessor)
 {
     // Use default failure processing
     return FailureProcessingResult.Continue;
 }