ExportDb.cs 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using Newtonsoft.Json;
  7. using Newtonsoft.Json.Linq;
  8. using SAGA.MBI.JsonConvert;
  9. namespace SAGA.MBI.RevitExport
  10. {
  11. /// <summary>
  12. /// 导出数据库
  13. /// </summary>
  14. public class ExportDb
  15. {
  16. private readonly Dictionary<string,List<MbiElement>> m_DataSource=new Dictionary<string, List<MbiElement>>();
  17. /// <summary>
  18. /// 清理数据
  19. /// </summary>
  20. public void ClaerData()
  21. {
  22. m_DataSource.Clear();
  23. }
  24. /// <summary>
  25. /// 增加导出关联数据
  26. /// </summary>
  27. /// <param name="flag"></param>
  28. /// <param name="element"></param>
  29. public void AddObject(string flag, MbiElement element)
  30. {
  31. List<MbiElement> dataSource = null;
  32. if (!m_DataSource.TryGetValue(flag, out dataSource))
  33. {
  34. dataSource= new List<MbiElement>();
  35. m_DataSource.Add(flag, dataSource);
  36. }
  37. if (dataSource == null)
  38. {
  39. dataSource = new List<MbiElement>();
  40. m_DataSource.Add(flag, dataSource);
  41. }
  42. dataSource.Add(element);
  43. }
  44. /// <summary>
  45. /// 生成json字符串
  46. /// </summary>
  47. /// <returns></returns>
  48. public string ToJsonString()
  49. {
  50. string result = string.Empty;
  51. JObject jobject= ToJsonObject();
  52. result = jobject.ToString();
  53. return result;
  54. }
  55. /// <summary>
  56. /// 转化成Json对象
  57. /// </summary>
  58. /// <returns></returns>
  59. public JObject ToJsonObject()
  60. {
  61. JsonSerializerSettings jsetting = new JsonSerializerSettings();
  62. jsetting.Converters.Add(new XYZConvert());
  63. var serializer = JsonSerializer.Create(jsetting);
  64. JObject jobject = new JObject();
  65. foreach (var collection in m_DataSource)
  66. {
  67. jobject.Add(collection.Key, JArray.FromObject(collection.Value, serializer));
  68. }
  69. return jobject;
  70. }
  71. public void AddWall(MbiWall mbiWall)
  72. {
  73. AddObject("WallList", mbiWall);
  74. }
  75. public void AddVirtualWall(MbiVirtualWall mbiVirtaulWall)
  76. {
  77. AddObject("VirtualWallList", mbiVirtaulWall);
  78. }
  79. public void AddColumn(MbiColumn mbiColumn)
  80. {
  81. AddObject("ColumnList", mbiColumn);
  82. }
  83. public void AddSpace(MbiSpace mbiSpace)
  84. {
  85. AddObject("SpaceList", mbiSpace);
  86. }
  87. public void AddEquipment(MbiEquipment mbiEquipment)
  88. {
  89. AddObject("EquipmentList", mbiEquipment);
  90. }
  91. }
  92. }