Program.cs 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177
  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:\导出测试\系统图修改编码版\给排水系统图模型第一版V1129.rvt";
  42. path = @"C:\Users\SAGACLOUD\Desktop\新建文件夹\b1-2172005.rvt";
  43. path = @"C:\Users\SAGACLOUD\Desktop\a1.json";
  44. JObject jObject = new JObject();
  45. jObject.Add("ResultFileName", @"C:\Users\SAGACLOUD\AppData\Local\RevitService\Result_e26be2fd-2097-462b-bdd0-a2a86b616928.txt");
  46. param = jObject.ToString();
  47. //path= @"E:\导出测试\延庆园-B1.rvt";
  48. //path = @"E:\导出测试\testR18.rvt";
  49. //path = @"E:\导出测试\testR16.rvt";
  50. }
  51. #endif
  52. if (string.IsNullOrEmpty(command))
  53. {
  54. Log4Net.Debug("命令参数错误");
  55. }
  56. File.AppendAllText(@"D:\log.txt", path + "\r\n");
  57. Log4Net.Info(command);
  58. Log4Net.Info(path);
  59. if (File.Exists(path) && Enum.TryParse(command, out CommandType commandType))
  60. {
  61. var app = RevitCoreContext.Instance.Application;
  62. string result = null;
  63. Console.WriteLine("Task StartTime:" + DateTime.Now);
  64. try
  65. {
  66. var doc = app.OpenDocumentFile(path);
  67. switch (commandType)
  68. {
  69. case CommandType.DataCheck:
  70. result = Check(doc, param);
  71. break;
  72. case CommandType.DataExport:
  73. result = Export(doc, param);
  74. break;
  75. }
  76. }
  77. catch (Exception e)
  78. {
  79. JObject errorJObject = new JObject();
  80. errorJObject.Add("ResultMsg", e.Message);
  81. errorJObject.Add("Result", "Failure");
  82. result = errorJObject.ToString();
  83. }
  84. SaveResult(param, result);
  85. Console.WriteLine("Task EndTime:" + DateTime.Now);
  86. RevitCoreContext.Instance.Stop();
  87. }
  88. //强制退出
  89. Environment.Exit(0);
  90. }
  91. /// <summary>
  92. /// 保存检查或导出的结果
  93. /// </summary>
  94. /// <param name="param"></param>
  95. /// <param name="result"></param>
  96. /// <returns></returns>
  97. private static void SaveResult(string param, string result)
  98. {
  99. File.AppendAllText(@"D:\log.txt", param+"\r\n");
  100. File.AppendAllText(@"D:\log.txt", result + "\r\n");
  101. Console.WriteLine(param);
  102. Log4Net.Debug(param);
  103. Log4Net.Debug(result);
  104. try
  105. {
  106. JObject jObject = JObject.Parse(param);
  107. string key = "ResultFileName";
  108. string path = jObject[key].ToString();
  109. if (path.IsNotNullEmpty())
  110. {
  111. Console.WriteLine(path);
  112. var dir = Directory.GetParent(path);
  113. if (!dir.Exists)
  114. dir.Create();
  115. File.AppendAllText(path, result);
  116. }
  117. }
  118. catch (Exception e)
  119. {
  120. Log4Net.Debug(e.StackTrace);
  121. }
  122. }
  123. enum CommandType
  124. {
  125. None = 0,
  126. DataCheck,
  127. DataExport
  128. }
  129. public static string Export(Document doc, string param)
  130. {
  131. string result = null;
  132. try
  133. {
  134. Console.WriteLine("Start Export");
  135. result = RevitToJBim.MbiExport.Export(doc, param);
  136. Console.WriteLine("End Export");
  137. }
  138. catch (Exception e)
  139. {
  140. Console.WriteLine("导出失败");
  141. Console.WriteLine(e.StackTrace);
  142. }
  143. return result;
  144. }
  145. public static string Check(Document doc, string param)
  146. {
  147. string result = null;
  148. try
  149. {
  150. Console.WriteLine("Start DataCheck");
  151. result = ServiceDataCheckTest.Check(doc);
  152. Console.WriteLine("End DataCheck");
  153. }
  154. catch (Exception e)
  155. {
  156. Console.WriteLine("导出失败");
  157. Console.WriteLine(e.StackTrace);
  158. }
  159. return result;
  160. }
  161. }
  162. }