MbiExport.cs 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. /*-------------------------------------------------------------------------
  2. * 功能描述:TestExport
  3. * 作者:xulisong
  4. * 创建时间: 2019/6/18 15:43:54
  5. * 版本号:v1.0
  6. * -------------------------------------------------------------------------*/
  7. using System;
  8. using System.Collections.Generic;
  9. using System.IO;
  10. using Autodesk.Revit.DB;
  11. using MBIRevitBase.Services;
  12. using MBIRevitBase.Tools;
  13. using Newtonsoft.Json;
  14. using RevitExport.Export;
  15. using RevitToJBim.ComponentParse;
  16. using RevitToJBim.JsonConverter;
  17. using RevitToJBim.MBI;
  18. using ServiceRevitLib.Mode;
  19. namespace RevitToJBim
  20. {
  21. public class MbiExport
  22. {
  23. public static string Export(Document document, string param)
  24. {
  25. string result = null;
  26. //导出类
  27. try
  28. {
  29. var wrappers = ExportDataBuilder.CreateExportData(document);
  30. ExportInstance report = new ExportInstance(wrappers);
  31. //解析类
  32. JBimParseContext context = new JBimParseContext(ParseCore.GetUseParsers());
  33. context.Parser.Parse(report);
  34. //构建需要结果
  35. var mbiDocument = MBIDocument.CreateDocument(document, param);
  36. mbiDocument.AttachElements(context.GetResultDocument());
  37. /*
  38. * 序列化的变化封装在这里,增加MBIDocument传输数据对象,
  39. * 增加一些和JBIM无关,又和当前业务逻辑相关的属性
  40. */
  41. var json = BimJsonUtil.Serializer(mbiDocument);
  42. #if DEBUG
  43. //保存到本地
  44. string fileName = DateTime.Now.ToString("yyyyMMddHHmmss");
  45. string path = Path.Combine($"{document.PathName}_{fileName}.json");
  46. File.WriteAllText(path, json.ToString());
  47. #endif
  48. var resultResponse = UploadService.UploadExportFile(json);
  49. result = BimJsonUtil.Serializer((ResultBase)resultResponse);
  50. }
  51. catch (Exception ex)
  52. {
  53. result = BimJsonUtil.Serializer(ResultBase.Exception(ex.Message + ex.StackTrace));
  54. }
  55. return result;
  56. }
  57. }
  58. }