CorrectPropertyReadFromRevitHandler.cs 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. /* ==============================================================================
  2. * 功能描述:修正岗位从模型中读取的数据
  3. * 创 建 者:Garrett
  4. * 创建日期:2018/7/12 14:25:17
  5. * ==============================================================================*/
  6. using Autodesk.Revit.DB;
  7. using SAGA.DotNetUtils;
  8. using SAGA.DotNetUtils.Logger;
  9. using SAGA.DotNetUtils.Others;
  10. using SAGA.MBI.Calc;
  11. using SAGA.MBI.DataArrange;
  12. using SAGA.MBI.Model;
  13. using SAGA.MBI.Tools;
  14. using SAGA.MBI.WinView.Upload;
  15. using SAGA.RevitUtils.Extends;
  16. using System;
  17. using System.Collections.Generic;
  18. using SAGA.MBI.Common;
  19. namespace SAGA.MBI.ToolsData
  20. {
  21. /// <summary>
  22. /// CheckEquipCategory
  23. /// </summary>
  24. public class CorrectPropertyReadFromRevitHandler
  25. {
  26. /// <summary>
  27. /// 检查并处理所有楼层
  28. /// </summary>
  29. public static void OperateAll()
  30. {
  31. var floors = DalUploadFloor.GetHasFileFloors();
  32. foreach (UploadFloor floor in floors)
  33. {
  34. Operate(floor.MFloor);
  35. }
  36. }
  37. /// <summary>
  38. /// 只处理当前楼层
  39. /// </summary>
  40. public static void OperateCurFloor()
  41. {
  42. MFloor floor = ExternalDataWrapper.Current.Doc.GetCurMFloor();
  43. if (floor != null)
  44. Operate(floor);
  45. }
  46. /// <summary>
  47. /// 检查并处理
  48. /// </summary>
  49. /// <param name="floor"></param>
  50. /// <returns></returns>
  51. private static void Operate(MFloor floor)
  52. {
  53. try
  54. {
  55. var context = Check(floor);
  56. RebuildCloudData(context);
  57. }
  58. catch (Exception e)
  59. {
  60. MessageShowBase.Show(e);
  61. }
  62. }
  63. /// <summary>
  64. /// 检查设备,部件
  65. /// </summary>
  66. /// <param name="baseContext"></param>
  67. /// <param name="delcontext"></param>
  68. /// <param name="addContext"></param>
  69. private static CalcContext Check(MFloor floor)
  70. {
  71. var context = new CalcContext(floor);
  72. context.OpenDocument();
  73. var doc = context.RevitDoc;
  74. try
  75. {
  76. var modes = DalCommon.DownLoadCouldData(floor.Id);
  77. foreach (MRevitEquipBase mode in modes)
  78. {
  79. string cBimId = mode.BimID;
  80. if (cBimId.IsNullOrEmpty()) continue;
  81. int bimid = cBimId.GetBIMID();
  82. Element elem = doc.GetElement(bimid);
  83. if (elem == null) continue;
  84. mode.Operator = DocumentChangedOperator.Modified;
  85. mode.ReadRevitParamter(elem);
  86. context.Add(mode);
  87. }
  88. }
  89. catch (Exception v)
  90. {
  91. throw;
  92. }
  93. finally
  94. {
  95. doc.CloseDoc();
  96. }
  97. return context;
  98. }
  99. /// <summary>
  100. /// 重建物理世界有问题的数据
  101. /// </summary>
  102. private static void RebuildCloudData(CalcContext context)
  103. {
  104. context.Upload();
  105. }
  106. }
  107. }