Program.cs 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175
  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 SAGA.DotNetUtils.Logger;
  8. //using RevitToJBim.Common;
  9. namespace ExportStart
  10. {
  11. class Program
  12. {
  13. static Program()
  14. {
  15. RevitCoreContext.Instance.Run();
  16. }
  17. [STAThread]
  18. static void Main(string[] args)
  19. {
  20. string command = null;
  21. string param = null;
  22. string path = null;
  23. if (args.Length > 0)
  24. {
  25. command = args[0];
  26. }
  27. if (args.Length > 1)
  28. {
  29. param = args[1];
  30. }
  31. if (args.Length > 2)
  32. {
  33. path = args[2];
  34. }
  35. #if DEBUG
  36. if (string.IsNullOrWhiteSpace(command))
  37. {
  38. command = "DataExport";
  39. command = "DataCheck";
  40. path = @"E:\导出测试\testSpace.rvt";
  41. path = @"E:\导出测试\系统图修改编码版\消防系统图模型第一版V1219.rvt";
  42. path = @"E:\导出测试\无锡系统图1225\热源系统图模型第一版V1225.rvt";
  43. path = @"D:\给排水系统图模型第一版V1225.rvt";
  44. path = @"E:\1245.rvt";
  45. path = @"C:\Users\SAGACLOUD\Desktop\海天中心项目_AM_T1_25F.rvt";
  46. //path = @"D:\安装包\CAD\测试模型\F4测试.rvt";
  47. JObject jObject = new JObject();
  48. jObject.Add("ResultFileName", @"C:\Users\SAGACLOUD\AppData\Local\RevitService\Result_e26be2fd-2097-462b-bdd0-a2a86b616928.txt");
  49. param = jObject.ToString();
  50. //path= @"E:\导出测试\延庆园-B1.rvt";
  51. //path = @"E:\导出测试\testR18.rvt";
  52. //path = @"E:\导出测试\testR16.rvt";
  53. }
  54. #endif
  55. if (string.IsNullOrEmpty(command))
  56. {
  57. Log4Net.Debug("命令参数错误");
  58. }
  59. Log4Net.Info(command);
  60. Log4Net.Info(path);
  61. if (File.Exists(path) && Enum.TryParse(command, out CommandType commandType))
  62. {
  63. var app = RevitCoreContext.Instance.Application;
  64. string result = null;
  65. Console.WriteLine("Task StartTime:" + DateTime.Now);
  66. try
  67. {
  68. var doc = app.OpenDocumentFile(path);
  69. switch (commandType)
  70. {
  71. case CommandType.DataCheck:
  72. result = Check(doc, param);
  73. break;
  74. case CommandType.DataExport:
  75. result = Export(doc, param);
  76. break;
  77. }
  78. }
  79. catch (Exception e)
  80. {
  81. JObject errorJObject = new JObject();
  82. errorJObject.Add("ResultMsg", e.Message);
  83. errorJObject.Add("Result", "Failure");
  84. result = errorJObject.ToString();
  85. }
  86. SaveResult(param, result);
  87. Console.WriteLine("Task EndTime:" + DateTime.Now);
  88. RevitCoreContext.Instance.Stop();
  89. }
  90. //强制退出
  91. Environment.Exit(0);
  92. }
  93. /// <summary>
  94. /// 保存检查或导出的结果
  95. /// </summary>
  96. /// <param name="param"></param>
  97. /// <param name="result"></param>
  98. /// <returns></returns>
  99. private static void SaveResult(string param, string result)
  100. {
  101. try
  102. {
  103. JObject jObject = JObject.Parse(param);
  104. string key = "ResultFileName";
  105. string path = jObject[key].ToString();
  106. if (path.IsNotNullEmpty())
  107. {
  108. var dir = Directory.GetParent(path);
  109. if (!dir.Exists)
  110. dir.Create();
  111. File.AppendAllText(path, result);
  112. }
  113. }
  114. catch (Exception e)
  115. {
  116. Log4Net.Debug(e.StackTrace);
  117. }
  118. }
  119. enum CommandType
  120. {
  121. None = 0,
  122. DataCheck,
  123. DataExport
  124. }
  125. public static string Export(Document doc, string param)
  126. {
  127. string result = null;
  128. try
  129. {
  130. Console.WriteLine("Start Export");
  131. result = RevitToJBim.MbiExport.Export(doc, param);
  132. Console.WriteLine("End Export");
  133. }
  134. catch (Exception e)
  135. {
  136. Console.WriteLine("导出失败");
  137. Console.WriteLine(e.StackTrace);
  138. }
  139. return result;
  140. }
  141. public static string Check(Document doc, string param)
  142. {
  143. string result = null;
  144. try
  145. {
  146. Console.WriteLine("Start DataCheck");
  147. result = ServiceDataCheckTest.Check(doc);
  148. Console.WriteLine("End DataCheck");
  149. }
  150. catch (Exception e)
  151. {
  152. Console.WriteLine("导出失败");
  153. Console.WriteLine(e.StackTrace);
  154. }
  155. return result;
  156. }
  157. }
  158. }