SystemComputerContext.cs 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. /*-------------------------------------------------------------------------
  2. * 功能描述:SystemComputerContext
  3. * 作者:xulisong
  4. * 创建时间: 2019/1/4 17:52:22
  5. * 版本号:v1.0
  6. * -------------------------------------------------------------------------*/
  7. using System;
  8. using System.Collections.Generic;
  9. using Autodesk.Revit.DB.Mechanical;
  10. using SAGA.DotNetUtils.Cache;
  11. using SAGA.Models;
  12. using SAGA.RevitUtils;
  13. using MBIEquipItem = SAGA.Models.EquipmentItem;
  14. namespace SAGA.GplotRelationComputerManage
  15. {
  16. public class SystemComputerContext
  17. {
  18. public SystemComputerContext()
  19. {
  20. #region 初始化
  21. FloorItems = SystemCalcUtil.CreateFloorItems();
  22. Rooms = SystemCalcUtil.CreateRoomItems();
  23. RelationShells = SystemCalcUtil.CreateRelationShellItems();
  24. EquipmentItems = SystemCalcUtil.CreateEquipmentItems();
  25. VerticalPipes = new List<VerticalPipe>();
  26. Levels = new List<LevelData>();
  27. Relations = new List<string>();
  28. DrawRecords = new List<FloorDrawRecord>();
  29. RelationRecords = new List<FloorRelationRecord>();
  30. #endregion
  31. }
  32. #region 计算缓存对象
  33. /// <summary>
  34. /// 缓存空间对象
  35. /// </summary>
  36. public CacheItems<string, RoomItem> Rooms { get; private set; }
  37. /// <summary>
  38. /// 楼层系统数据缓存
  39. /// </summary>
  40. public CacheItems<string, FloorSystemItem> FloorItems { get; private set; }
  41. public CacheItems<string, MBIEquipItem> EquipmentItems { get; private set; }
  42. #endregion
  43. #region 一些上下文相关的方法
  44. private const string UnKnowSpace = "未知空间:BIMID编码";
  45. private const string SiSpace = "空间本地名称:BIMID编码";
  46. private const string ModelSpace = "空间模型名称:BIMID编码";
  47. /// <summary>
  48. /// 获取空间描述信息,立管使用
  49. /// </summary>
  50. /// <param name="space"></param>
  51. /// <param name="tip"></param>
  52. /// <returns></returns>
  53. public string GetSpaceDisplay(Space space, out string tip)
  54. {
  55. tip = string.Empty;
  56. if (space == null)
  57. {
  58. tip = UnKnowSpace;
  59. return "未知";
  60. }
  61. string bimId = space.GetBimId();
  62. var room = Rooms.GetItem(bimId);
  63. string useName = space.Name;
  64. tip = ModelSpace;
  65. if (room != null && !string.IsNullOrWhiteSpace(room.LocalName))
  66. {
  67. tip = SiSpace;
  68. useName = room.LocalName;
  69. }
  70. return useName;
  71. }
  72. #endregion
  73. #region 计算结果存储类
  74. /*
  75. *计算数据存储在Context中,FloorSystemItem尽量只跟解析算法相关
  76. */
  77. public List<VerticalPipe> VerticalPipes { get; private set; }
  78. public List<LevelData> Levels { get; private set; }
  79. public List<FloorDrawRecord> DrawRecords { get; private set; }
  80. public List<FloorRelationRecord> RelationRecords { get; private set; }
  81. #endregion
  82. #region 需要计算的系统相关
  83. /// <summary>
  84. /// 缓存关系计算壳对象
  85. /// </summary>
  86. public CacheItems<string, RelationTypeShell> RelationShells { get; private set; }
  87. /// <summary>
  88. /// 需要计算的关系类型
  89. /// </summary>
  90. public List<string> Relations { get;private set; }
  91. #endregion
  92. }
  93. }