Program.cs 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  1. using Autodesk.Revit.DB;
  2. using ServiceRevitLib;
  3. using System;
  4. using System.IO;
  5. using Newtonsoft.Json.Linq;
  6. using SAGA.DotNetUtils.Extend;
  7. //using RevitToJBim.Common;
  8. namespace ExportStart
  9. {
  10. class Program
  11. {
  12. static Program()
  13. {
  14. RevitCoreContext.Instance.Run();
  15. }
  16. [STAThread]
  17. static void Main(string[] args)
  18. {
  19. string command = null;
  20. string param = null;
  21. string path = null;
  22. if (args.Length > 0)
  23. {
  24. command = args[0];
  25. }
  26. if (args.Length > 1)
  27. {
  28. param = args[1];
  29. }
  30. if (args.Length > 2)
  31. {
  32. path = args[2];
  33. }
  34. #if DEBUG
  35. if (string.IsNullOrWhiteSpace(command))
  36. {
  37. command = "DataExport";
  38. path = @"E:\导出测试\testR17.rvt";
  39. path = @"E:\导出测试\延庆园-B1.rvt";
  40. path = @"E:\导出测试\366.rvt";
  41. JObject jObject=new JObject();
  42. jObject.Add("ResultFileName", @"C:\Users\SAGACLOUD\AppData\Local\RevitService\Result_e26be2fd-2097-462b-bdd0-a2a86b616928.txt");
  43. param = jObject.ToString();
  44. //path= @"E:\导出测试\延庆园-B1.rvt";
  45. //path = @"E:\导出测试\testR18.rvt";
  46. //path = @"E:\导出测试\testR16.rvt";
  47. }
  48. #endif
  49. if (string.IsNullOrEmpty(command))
  50. {
  51. Console.WriteLine("命令参数错误");
  52. }
  53. Console.WriteLine(command);
  54. Console.WriteLine(path);
  55. if (File.Exists(path) && Enum.TryParse(command, out CommandType commandType))
  56. {
  57. var app = RevitCoreContext.Instance.Application;
  58. var doc = app.OpenDocumentFile(path);
  59. string result = null;
  60. switch (commandType)
  61. {
  62. case CommandType.DataCheck:
  63. result=Check(doc,param);
  64. break;
  65. case CommandType.DataExport:
  66. result=Export(doc,param);
  67. break;
  68. }
  69. File.AppendAllText(@"D:\log.txt", "log:"+result);
  70. SaveResult(param, result);
  71. RevitCoreContext.Instance.Stop();
  72. }
  73. Console.WriteLine("ExportStart End");
  74. }
  75. /// <summary>
  76. /// 保存检查或导出的结果
  77. /// </summary>
  78. /// <param name="param"></param>
  79. /// <param name="result"></param>
  80. /// <returns></returns>
  81. private static void SaveResult(string param, string result)
  82. {
  83. Console.WriteLine(param);
  84. try
  85. {
  86. JObject jObject = JObject.Parse(param);
  87. string key = "ResultFileName";
  88. string path = jObject[key].ToString();
  89. File.AppendAllText(@"D:\log.txt",path);
  90. if (path.IsNotNullEmpty())
  91. {
  92. File.AppendAllText(@"D:\log.txt", result);
  93. Console.WriteLine(path);
  94. var dir = Directory.GetParent(path);
  95. if(!dir.Exists)
  96. dir.Create();
  97. File.AppendAllText(path, result);
  98. }
  99. }
  100. catch (Exception e)
  101. {
  102. File.AppendAllText(@"D:\log.txt", e.StackTrace);
  103. Console.WriteLine(e);
  104. }
  105. }
  106. enum CommandType
  107. {
  108. None = 0,
  109. DataCheck,
  110. DataExport
  111. }
  112. public static string Export(Document doc,string param)
  113. {
  114. string result = null;
  115. try
  116. {
  117. Console.WriteLine("Start Export");
  118. result=RevitToJBim.MbiExport.Export(doc,param);
  119. Console.WriteLine("End Export");
  120. }
  121. catch (Exception e)
  122. {
  123. Console.WriteLine("导出失败");
  124. Console.WriteLine(e.StackTrace);
  125. }
  126. return result;
  127. }
  128. public static string Check(Document doc,string param)
  129. {
  130. string result = null;
  131. try
  132. {
  133. Console.WriteLine("Start DataCheck");
  134. result=ServiceDataCheckTest.Check(doc);
  135. Console.WriteLine("End DataCheck");
  136. }
  137. catch (Exception e)
  138. {
  139. Console.WriteLine("导出失败");
  140. Console.WriteLine(e.StackTrace);
  141. }
  142. return result;
  143. }
  144. }
  145. }