ColumnCheck.cs 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. /* ==============================================================================
  2. * 功能描述:结构柱边界检查
  3. * 创 建 者:Garrett
  4. * 创建日期:2018/10/23 15:08:55
  5. * ==============================================================================*/
  6. using System;
  7. using System.Linq;
  8. using Autodesk.Revit.DB;
  9. using NPOI.SS.UserModel;
  10. using SAGA.DotNetUtils.Others;
  11. using SAGA.RevitUtils.Extends;
  12. namespace Saga.PlugIn.ModelCheck
  13. {
  14. /// <summary>
  15. /// UnitCheck
  16. /// </summary>
  17. class ColumnCheck : ModeCheckBase
  18. {
  19. public ColumnCheck()
  20. {
  21. Name = "柱边界检查";
  22. }
  23. public override bool Check()
  24. {
  25. if (!RBase.IsRight)
  26. {
  27. IsRight = RBase.IsRight;
  28. return IsRight;
  29. }
  30. IsRight = GetCheckResult();
  31. return IsRight;
  32. }
  33. private bool GetCheckResult()
  34. {
  35. bool unitResult = true;
  36. foreach (SagaSignCheckResult signResult in RBase.Results)
  37. {
  38. var document = signResult.RDocument;
  39. var elements = document.GetElements<FamilyInstance>(BuiltInCategory.OST_StructuralColumns);
  40. foreach (FamilyInstance fi in elements)
  41. {
  42. var result = GetCheckResult(fi);
  43. result.RBase = signResult;
  44. Results.Add(result);
  45. }
  46. }
  47. return Results.All(t => t.IsRight);
  48. }
  49. /// <summary>
  50. /// 获取检测结果
  51. /// </summary>
  52. /// <param name="fi"></param>
  53. /// <returns></returns>
  54. private ModeCheckResultBase GetCheckResult(FamilyInstance fi)
  55. {
  56. var result = new ColumnCheckResult();
  57. result.FamilyName = fi.GetFamilyName();
  58. result.Id = fi.Id.ToString();
  59. var roomBoundaries = fi.GetParameterInteger(BuiltInParameter.WALL_ATTR_ROOM_BOUNDING);
  60. if (roomBoundaries ==1)
  61. {
  62. result.IsRight = true;
  63. }
  64. else
  65. {
  66. result.IsRight = false;
  67. result.RMessage = "柱的房间边界属性 未勾选";
  68. }
  69. return result;
  70. }
  71. //[DataCheckProcessAspect]
  72. public override void Export()
  73. {
  74. try
  75. {
  76. IWorkbook book = DCRExport.GetWorkbook();
  77. //ISheet sheet = book.CreateSheet(Name);
  78. ISheet sheet = book.GetSheet(Name);
  79. #region 添加数据
  80. int index = 3;
  81. //添加 共检查XXX条数据,未通过检查的如下 提示
  82. IRow rowTip = sheet.CreateRow(index - 1);
  83. rowTip.AddCell(0, $"总检查{Results.Count}条数据,未通过检查的如下", DataCheckNPOIStyle.Title);
  84. foreach (ColumnCheckResult result in Results)
  85. {
  86. SagaSignCheckResult rbase = result.RBase as SagaSignCheckResult;
  87. if (rbase == null)
  88. continue;
  89. if(result.IsRight)continue;
  90. index++;
  91. IRow rowN = sheet.CreateRow(index);
  92. DataCheckNPOIStyle style = result.IsRight ? DataCheckNPOIStyle.Content : DataCheckNPOIStyle.Error;
  93. int j = -1;
  94. rowN.AddCell(++j, result.FamilyName, style);
  95. rowN.AddCell(++j, result.Id, style);
  96. string rowN4 = result.IsRight ? "通过" : "不通过";
  97. rowN.AddCell(++j, rowN4, style);
  98. rowN.AddCell(++j, result.RMessage, style);
  99. }
  100. #endregion
  101. }
  102. catch (Exception e)
  103. {
  104. MessageShowBase.Show(e);
  105. }
  106. }
  107. }
  108. class ColumnCheckResult : ModeCheckResultBase
  109. {
  110. public string FamilyName { get; set; }
  111. public string Id { get; set; }
  112. }
  113. }