Globals.cs 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187
  1. using System;
  2. using System.IO;
  3. using Autodesk.Revit.DB.Events;
  4. using Autodesk.Revit.UI;
  5. using Autodesk.Revit.UI.Events;
  6. using SAGY.DotNetUtils;
  7. using SAGY.RevitMenu.Configuration;
  8. using SAGY.RevitUtils;
  9. using SAGY.RevitUtils.Extends;
  10. using TSZ.RevitMenu;
  11. using TSZ.RevitMenu.Configuration;
  12. namespace SAGY.RevitMenu
  13. {
  14. public class Globals : IRegisterDockpaneApp
  15. {
  16. private static ScreenMenu _dockMenu = null;
  17. private static bool _mIsHide;
  18. public const string ApplicationName = "屏幕菜单";
  19. public const string DiagnosticsPanelName = "屏幕菜单";
  20. public static ExternalCommandData ExtCmdData = null;
  21. public static DockablePaneId MLeftDockablePanelId = new DockablePaneId(new Guid("7EB1ED3F-0993-4540-B291-D17FF539F5B9"));
  22. public const string ScreenMenuState = "TSZ.ScreenMenu.State";
  23. public static UIControlledApplication UiApp = null;
  24. private void application_ApplicationClosing(object sender, ApplicationClosingEventArgs e)
  25. {
  26. _mIsHide = false;
  27. if (GetState())
  28. {
  29. PressHelper.KeyPress("HIDMENU");
  30. _mIsHide = true;
  31. }
  32. SaveState(_mIsHide);
  33. }
  34. private void ControlledApplication_DocumentCreated(object sender, DocumentCreatedEventArgs e)
  35. {
  36. if (!e.Document.IsFamilyDocument)
  37. {
  38. _mIsHide = GetState();
  39. IntPtr mainWindowHandle = RevitProcess.GetMainWindowHandle();
  40. if (_mIsHide)
  41. {
  42. PressHelper.KeyPress(mainWindowHandle, "SHOMENU");
  43. }
  44. else
  45. {
  46. PressHelper.KeyPress(mainWindowHandle, "HIDMENU");
  47. }
  48. }
  49. }
  50. private void ControlledApplication_DocumentOpened(object sender, DocumentOpenedEventArgs e)
  51. {
  52. if (!e.Document.IsFamilyDocument)
  53. {
  54. IntPtr mainWindowHandle = RevitProcess.GetMainWindowHandle();
  55. _mIsHide = GetState();
  56. if (_mIsHide)
  57. {
  58. PressHelper.KeyPress(mainWindowHandle, "SHOMENU");
  59. }
  60. else
  61. {
  62. PressHelper.KeyPress("HIDMENU");
  63. }
  64. AppRegister.RegisterStructRebarCount(e.Document);
  65. }
  66. }
  67. public static bool GetState()
  68. {
  69. try
  70. {
  71. IniFileOperate operate = new IniFileOperate(Path.Combine(AppBaseInfo.AppTempFilePath, "TSZ.ScreenMenu.State.ini"));
  72. return operate.ReadValue("RevitMenu", "TSZ.ScreenMenu.State").ToBool();
  73. }
  74. catch (Exception exception)
  75. {
  76. MessageShow.Show(exception, true, "");
  77. }
  78. return true;
  79. }
  80. public static void HidePanels(ExternalCommandData cmdData)
  81. {
  82. SetWindowVisibility(cmdData, MLeftDockablePanelId, false);
  83. }
  84. public static void HidePanels(UIControlledApplication application)
  85. {
  86. SetWindowVisibility(application, MLeftDockablePanelId, false);
  87. }
  88. public bool RegisterApp(UIControlledApplication application)
  89. {
  90. try
  91. {
  92. UiApp = application;
  93. _dockMenu = new ScreenMenu();
  94. _dockMenu.SetInitialDockingParameters(0, 150, 0, 700, DockPosition.Bottom, Guid.Empty);
  95. application.RegisterDockablePane(MLeftDockablePanelId, "屏幕菜单", _dockMenu);
  96. application.ControlledApplication.DocumentCreated += new EventHandler<DocumentCreatedEventArgs>(this.ControlledApplication_DocumentCreated);
  97. application.ControlledApplication.DocumentOpened += new EventHandler<DocumentOpenedEventArgs>(this.ControlledApplication_DocumentOpened);
  98. application.ApplicationClosing += new EventHandler<ApplicationClosingEventArgs>(this.application_ApplicationClosing);
  99. }
  100. catch (Exception exception)
  101. {
  102. MessageShow.Show(exception, false, "");
  103. return false;
  104. }
  105. return true;
  106. }
  107. public static void SaveState(bool state)
  108. {
  109. try
  110. {
  111. new IniFileOperate(Path.Combine(AppBaseInfo.AppTempFilePath, "TSZ.ScreenMenu.State.ini")).WriteValue("RevitMenu", "TSZ.ScreenMenu.State", state.ToString());
  112. }
  113. catch (Exception exception)
  114. {
  115. MessageShow.Show(exception, true, "");
  116. }
  117. }
  118. private static void SetWindowVisibility(ExternalCommandData cmdData, DockablePaneId dockablePaneId, bool state)
  119. {
  120. try
  121. {
  122. DockablePane dockablePane = cmdData.Application.GetDockablePane(dockablePaneId);
  123. if (dockablePane != null)
  124. {
  125. if (state)
  126. {
  127. _dockMenu.SetCmdData(cmdData);
  128. dockablePane.Show();
  129. }
  130. else
  131. {
  132. _dockMenu.SetCmdData(cmdData);
  133. dockablePane.Hide();
  134. }
  135. }
  136. }
  137. catch (Exception exception)
  138. {
  139. MessageShow.Show(exception, false, "");
  140. }
  141. }
  142. private static void SetWindowVisibility(UIControlledApplication application, DockablePaneId dockablePaneId, bool state)
  143. {
  144. try
  145. {
  146. DockablePane dockablePane = application.GetDockablePane(dockablePaneId);
  147. if (dockablePane != null)
  148. {
  149. if (state)
  150. {
  151. dockablePane.Show();
  152. }
  153. else
  154. {
  155. dockablePane.Hide();
  156. }
  157. }
  158. }
  159. catch (Exception exception)
  160. {
  161. MessageShow.Show(exception, false, "");
  162. }
  163. }
  164. public static void ShowPanels(ExternalCommandData cmdData)
  165. {
  166. SetWindowVisibility(cmdData, MLeftDockablePanelId, true);
  167. }
  168. public static void ShowPanels(UIControlledApplication application)
  169. {
  170. SetWindowVisibility(application, MLeftDockablePanelId, true);
  171. }
  172. }
  173. }