1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- using System.Collections.Generic;
- using Autodesk.Revit.DB;
- namespace SAGA.RevitUtils.Extends
- {
- public static class TransactionExtend
- {
- /// <summary>
- /// 提交事务时删除所有警告信息
- /// </summary>
- /// <param name="trans"></param>
- /// <param name="deleteWarning"></param>
- public static void CommitTransaction(this Transaction trans, bool deleteWarning)
- {
- if (deleteWarning)
- {
- trans.CommitTransaction(null);
- }
- else trans.Commit();
- }
- /// <summary>
- /// 提交事务并删除所有警告
- /// </summary>
- /// <param name="trans"></param>
- /// <param name="failureIdList">所要删除警告集合</param>
- public static void CommitTransaction(this Transaction trans, List<FailureDefinitionId> failureIdList = null)
- {
- FailuresPreprocessor failuresPreprocessor = null;
- if (failureIdList == null)
- {
- failuresPreprocessor = new FailuresPreprocessor();
- }
- else
- {
- failuresPreprocessor = new FailuresPreprocessor(failureIdList);
- }
- FailureHandlingOptions failureOptions = trans.GetFailureHandlingOptions();
- failureOptions.SetFailuresPreprocessor(failuresPreprocessor);
- trans.SetFailureHandlingOptions(failureOptions);
- trans.Commit(failureOptions);
- }
- }
- public class FailuresPreprocessor : IFailuresPreprocessor
- {
- private List<FailureDefinitionId> _failureIdList = new List<FailureDefinitionId>();
- public FailuresPreprocessor()
- {
- }
- public FailuresPreprocessor(FailureDefinitionId id)
- {
- _failureIdList.Add(id);
- }
- public FailuresPreprocessor(List<FailureDefinitionId> idList)
- {
- this._failureIdList = idList;
- }
- FailureProcessingResult IFailuresPreprocessor.PreprocessFailures(FailuresAccessor failuresAccessor)
- {
- IList<FailureMessageAccessor> failList = new List<FailureMessageAccessor>();
- failList = failuresAccessor.GetFailureMessages();
- if (_failureIdList.Count == 0)
- {
- failuresAccessor.DeleteAllWarnings();//删除所有警告信息
- }
- else
- {
- //删除部分警告信息
- foreach (FailureMessageAccessor failure in failList)
- {
- FailureDefinitionId failId = failure.GetFailureDefinitionId();
- if (_failureIdList.Exists(p => p == failId))
- {
- failuresAccessor.DeleteWarning(failure);
- }
- }
- }
- return FailureProcessingResult.Continue;
- }
- }
- }
|