RevitCmdExecutor.cs 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. /* ==============================================================================
  2. * 功能描述:RevitCmdExecutor
  3. * 创 建 者:Garrett
  4. * 创建日期:2019/4/16 11:46:37
  5. * ==============================================================================*/
  6. using System;
  7. using System.Collections.Generic;
  8. using System.Diagnostics;
  9. using System.IO;
  10. using System.Linq;
  11. using System.Windows.Forms;
  12. namespace Client.Start
  13. {
  14. /// <summary>
  15. /// RevitCmdExecutor
  16. /// </summary>
  17. public class RevitCmdExecutor : IRevitCommandExcutor
  18. {
  19. public string ExecuteCmd(string revitCmd, string param, HashSet<string> filePathList)
  20. {
  21. //由revitCmd生成实体类
  22. //实体类传入参数、参考楼层列表
  23. //执行方法,返回执行结果
  24. Console.WriteLine(DateTime.Now+" 准备执行命令:"+revitCmd);
  25. string fullPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "ExportStart.exe");
  26. Process process = new Process();//AppDomain.CurrentDomain.BaseDirectory +
  27. process.StartInfo.FileName = fullPath;//执行的exe路径
  28. process.StartInfo.UseShellExecute = false;//不显示shell
  29. process.StartInfo.CreateNoWindow = true;//不创建窗口
  30. process.StartInfo.RedirectStandardInput = true;//打开流输入
  31. process.StartInfo.RedirectStandardOutput = true;//打开流输出
  32. process.StartInfo.RedirectStandardError = true;//打开错误流
  33. process.StartInfo.Arguments = "" + revitCmd + " \"" + filePathList.First() + "\"";//输入参数,多个参数使用空间分割,如果一个参数包含空格,使用""包括此参数
  34. process.Start();//执行
  35. string msg = process.StandardOutput.ReadToEnd();//读取输出
  36. process.WaitForExit();//等待执行完成
  37. process.Close();//结束
  38. Console.WriteLine(DateTime.Now + " 命令执行完成:" + revitCmd);
  39. return msg;
  40. }
  41. }
  42. }