ParameterIntegrityCheck.cs 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. /* ==============================================================================
  2. * 功能描述:SagaCheck
  3. * 创 建 者:Garrett
  4. * 创建日期:2019/6/11 16:09:09
  5. * ==============================================================================*/
  6. using System;
  7. using System.Collections.Generic;
  8. using System.Linq;
  9. using System.Text.RegularExpressions;
  10. using Autodesk.Revit.DB;
  11. using SAGA.DotNetUtils.Extend;
  12. using ServiceRevitLib.Common;
  13. using SAGA.RevitUtils.Extends;
  14. using ServiceRevitLib.Extend;
  15. namespace ServiceRevitLib.Mode
  16. {
  17. /// <summary>
  18. /// SagaCheck
  19. /// </summary>
  20. class ParameterIntegrityCheck : CheckBase
  21. {
  22. public override void Check()
  23. {
  24. try
  25. {
  26. base.Check();
  27. #region
  28. var doc = m_Doc;
  29. var instances = doc.GetEqEcElements();
  30. var familyGroups = instances.GroupBy(t => t.GetFamilyName());
  31. foreach (IGrouping<string, Element> familyGroup in familyGroups)
  32. {
  33. Element fi = familyGroup.FirstOrDefault();
  34. if (fi == null) continue;
  35. var result = GetCheckResult(fi);
  36. if (result == null) continue;
  37. result.FamilyName = familyGroup.Key;
  38. Content.Add(result);
  39. }
  40. #endregion
  41. }
  42. catch (Exception e)
  43. {
  44. Result = ResultState.Failure;
  45. ResultMsg = $"{e.Message}\r\n{e.StackTrace}";
  46. }
  47. }
  48. /// <summary>
  49. /// 获取检测结果
  50. /// </summary>
  51. /// <param name="fi"></param>
  52. /// <returns></returns>
  53. private ParameterIntegrityCheckResult GetCheckResult(Element fi)
  54. {
  55. //检查项
  56. var checkParamNames = new List<string>() { MBIConst.EquipLocalName, MBIConst.EquipLocalID };
  57. var result = new ParameterIntegrityCheckResult();
  58. List<string> list = new List<string>();
  59. foreach (var paramName in checkParamNames)
  60. {
  61. var parameter = fi.GetParameter(paramName);
  62. if (parameter == null)
  63. list.Add(paramName);
  64. }
  65. if (list.Any())
  66. {
  67. result.Result = ResultState.Failure;
  68. result.ResultMsg = $"缺失的参数为:{string.Join("、", list)}";
  69. }
  70. else
  71. {
  72. result.Result = ResultState.Success;
  73. }
  74. return result;
  75. }
  76. }
  77. }