RoomDataToSpaceCommand.cs 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. /*-------------------------------------------------------------------------
  2. * 功能描述:RoomDataToSpace
  3. * 作者:xulisong
  4. * 创建时间: 2019/7/26 10:14:55
  5. * 版本号:v1.0
  6. * -------------------------------------------------------------------------*/
  7. using System;
  8. using System.Collections.Generic;
  9. using System.Diagnostics;
  10. using System.IO;
  11. using System.Linq;
  12. using System.Text;
  13. using System.Threading.Tasks;
  14. using System.Windows;
  15. using Autodesk.Revit.Attributes;
  16. using Autodesk.Revit.DB;
  17. using Autodesk.Revit.UI;
  18. using SAGA.RevitUtils.Extends;
  19. namespace ToolCommand
  20. {
  21. [Transaction(TransactionMode.Manual)]
  22. [Regeneration(RegenerationOption.Manual)]
  23. //[Button(ButtonName = "房间数据\r\n赋值到空间")]
  24. public class RoomDataToSpaceCommand : ExternalCommand
  25. {
  26. public override Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
  27. {
  28. var document = commandData.Application.ActiveUIDocument.Document;
  29. var view = document.ActiveView;
  30. if (view is View3D)
  31. {
  32. MessageBox.Show("指定导出平面视图");
  33. return Result.Succeeded;
  34. }
  35. using (Transaction tran = new Transaction(document, "创建空间"))
  36. {
  37. try
  38. {
  39. tran.Start();
  40. var list = RoomToSpaceUtils.RoomDataToSpace(view);
  41. if (list.All(r => r.IsSuccess))
  42. {
  43. MessageBox.Show("赋值成功");
  44. }
  45. else
  46. {
  47. MessageBox.Show("部分赋值成功");
  48. var text = RoomToSpaceUtils.CreateResult(list).ToString();
  49. string path = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData), "result.txt");
  50. File.WriteAllText(path, text);
  51. Process.Start("notepad.exe", path);
  52. }
  53. tran.Commit();
  54. }
  55. catch (Exception e)
  56. {
  57. tran.RollBack();
  58. throw;
  59. }
  60. }
  61. return Result.Succeeded;
  62. }
  63. }
  64. }