ColumnCheck.cs 4.9 KB

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