UnitCheck.cs 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  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. namespace Saga.PlugIn.ModelCheck
  12. {
  13. /// <summary>
  14. /// UnitCheck
  15. /// </summary>
  16. class UnitCheck : ModeCheckBase
  17. {
  18. public UnitCheck()
  19. {
  20. Name = "项目长度单位检查";
  21. }
  22. public override bool Check()
  23. {
  24. if (!RBase.IsRight)
  25. {
  26. IsRight = RBase.IsRight;
  27. return IsRight;
  28. }
  29. bool unitResult = true;
  30. foreach (SagaSignCheckResult signResult in RBase.Results)
  31. {
  32. var ismmUnit = IsLengthMMUnit(signResult.RDocument);
  33. var unitItem = new UnitCheckResult() { RBase = signResult };
  34. Results.Add(unitItem);
  35. unitItem.IsRight = ismmUnit;
  36. if (!ismmUnit)
  37. {
  38. unitItem.RMessage = "单位异常,请修改长度单位为毫米(mm)";
  39. unitResult = ismmUnit;
  40. }
  41. }
  42. IsRight = Results.All(t => t.IsRight); ;
  43. return IsRight;
  44. }
  45. /// <summary>
  46. /// 判断长度单位是否为毫米
  47. /// </summary>
  48. /// <returns></returns>
  49. public static bool IsLengthMMUnit(Document doc)
  50. {
  51. var units = doc.GetUnits();
  52. var formatOptions = units.GetFormatOptions(UnitType.UT_Length);
  53. return formatOptions.DisplayUnits == DisplayUnitType.DUT_MILLIMETERS;
  54. }
  55. //[DataCheckProcessAspect]
  56. public override void Export()
  57. {
  58. IWorkbook book = DCRExport.GetWorkbook();
  59. try
  60. {
  61. //ISheet sheet = book.CreateSheet(Name);
  62. ISheet sheet = book.GetSheet(Name);
  63. #region 添加数据
  64. int index = 3;
  65. IRow rowF = null;
  66. foreach (var result in Results)
  67. {
  68. index++;
  69. DataCheckNPOIStyle style = result.IsRight ? DataCheckNPOIStyle.Content : DataCheckNPOIStyle.Error;
  70. IRow rowN = sheet.CreateRow(index);
  71. SagaSignCheckResult rbase = result.RBase as SagaSignCheckResult;
  72. if (rbase == null)
  73. continue;
  74. int j = -1;
  75. string rowN4 = result.IsRight ? "通过" : "不通过";
  76. rowN.AddCell(++j, rowN4, style);
  77. rowN.AddCell(++j, result.RMessage, style);
  78. }
  79. #endregion
  80. }
  81. catch (Exception e)
  82. {
  83. MessageShowBase.Show(e);
  84. }
  85. }
  86. }
  87. /// <summary>
  88. /// UnitCheckResult
  89. /// </summary>
  90. class UnitCheckResult : ModeCheckResultBase
  91. {
  92. }
  93. }