WinModeInfoMaintenanceForSpace.xaml.cs 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Collections.ObjectModel;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. using System.Windows;
  8. using System.Windows.Controls;
  9. using System.Windows.Data;
  10. using System.Windows.Documents;
  11. using System.Windows.Input;
  12. using System.Windows.Media;
  13. using System.Windows.Media.Imaging;
  14. using System.Windows.Navigation;
  15. using System.Windows.Shapes;
  16. using Autodesk.Revit.UI;
  17. using SAGA.MBI.Model;
  18. using SAGA.RevitUtils.Extends;
  19. using SAGA.RevitUtils.Windows;
  20. using WPG.Data;
  21. using Visibility = System.Windows.Visibility;
  22. namespace SAGA.MBI.WinView.ModeInfoMaintenance
  23. {
  24. /// <summary>
  25. /// WinModeInfoMaintenance.xaml 的交互逻辑
  26. /// </summary>
  27. public partial class WinModeInfoMaintenanceForSpace:WinBase
  28. {
  29. private WinModeInfoMaintenanceForSpace()
  30. {
  31. InitializeComponent();
  32. this.Loaded += WinModeInfoMaintenance_Loaded;
  33. this.Closing += WinModeInfoMaintenance_Closing;
  34. }
  35. private void WinModeInfoMaintenance_Loaded(object sender, RoutedEventArgs e)
  36. {
  37. SwitchGridVisible();
  38. }
  39. /// <summary>
  40. /// 关闭窗体时,取消Idling事件
  41. /// </summary>
  42. /// <param name="sender"></param>
  43. /// <param name="e"></param>
  44. private void WinModeInfoMaintenance_Closing(object sender, System.ComponentModel.CancelEventArgs e)
  45. {
  46. this.Hide() ;
  47. e.Cancel = true;
  48. EquipmentInfo?.StopWatch();
  49. }
  50. private static WinModeInfoMaintenanceForSpace curWindow;
  51. public static WinModeInfoMaintenanceForSpace GetWindow()
  52. {
  53. //WinModeInfoMaintenanceForSpace mw = null;
  54. //foreach (Window w in Application.Current.Windows)
  55. //{
  56. // if (w is WinModeInfoMaintenanceForSpace space)
  57. // {
  58. // mw = space;
  59. // }
  60. //}
  61. //if (mw == null)
  62. //{
  63. // mw = new WinModeInfoMaintenanceForSpace();
  64. // mw.Show();
  65. //}
  66. //else
  67. //{
  68. // mw.Visibility = System.Windows.Visibility.Visible;
  69. //}
  70. return curWindow ?? (curWindow = curWindow ?? (curWindow = new WinModeInfoMaintenanceForSpace()));
  71. }
  72. public MRevitEquipBase EquipmentInfo { get; set; }
  73. public new void Show(MRevitEquipBase equipmentInfo)
  74. {
  75. EquipmentInfo?.StopWatch();
  76. EquipmentInfo = equipmentInfo;
  77. this.DataContext = EquipmentInfo;
  78. WindowShow();
  79. }
  80. /// <summary>
  81. /// 切换显示的界面
  82. /// </summary>
  83. private void SwitchGridVisible()
  84. {
  85. SetAllCollapsed();
  86. if (null != EquipmentInfo?.Id) {
  87. GridHas.Visibility = Visibility.Visible;
  88. LoadHasData();
  89. }
  90. else if (EquipmentInfo is MBeacon beacon) {
  91. beacon.Name = "信标";
  92. GridNone.Visibility = Visibility.Visible;
  93. CompositeItem item = NullPWGInstace.GetUnknownBeaconItems(EquipmentInfo);
  94. myWPG.Instance = item;
  95. }
  96. else if (EquipmentInfo is MISpace space) {
  97. space.Name = "元空间";
  98. GridNone.Visibility = Visibility.Visible;
  99. CompositeItem item = NullPWGInstace.GetUnknownSpaceItems(EquipmentInfo?.BimID);
  100. myWPG.Instance = item;
  101. }
  102. else if (EquipmentInfo is MEquipment equip) {
  103. equip.Name = equip.Family.EquipmentTypes[0].Name;
  104. //部件和设备
  105. GridNone.Visibility = Visibility.Visible;
  106. LoadNoneData();
  107. }
  108. else if (EquipmentInfo is MEquipmentPart part) {
  109. part.Name = part.Family.EquipmentTypes[0].Name;
  110. //部件和设备
  111. GridNone.Visibility = Visibility.Visible;
  112. LoadNoneData();
  113. }
  114. else {
  115. //无法识别的模型
  116. GridNull.Visibility = Visibility.Visible;
  117. CompositeItem item = NullPWGInstace.GetUnknowItems(EquipmentInfo?.BimID);
  118. myWPGNull.Instance = item;
  119. }
  120. }
  121. /// <summary>
  122. /// 设置所有不可见
  123. /// </summary>
  124. private void SetAllCollapsed()
  125. {
  126. GridNull.Visibility = Visibility.Collapsed;
  127. GridNone.Visibility = Visibility.Collapsed;
  128. GridHas.Visibility = Visibility.Collapsed;
  129. }
  130. /// <summary>
  131. /// 显示窗体
  132. /// </summary>
  133. private void WindowShow()
  134. {
  135. if (this.Visibility != Visibility.Visible)
  136. {
  137. base.Show();
  138. // ExecuteCmd.ExecuteCommandOnce(
  139. // () =>
  140. // {
  141. // ExternalDataWrapper.Current.UiApp.Idling += IdlingEditInstance.EditInstance_Idling;
  142. // return Result.Succeeded;
  143. // }
  144. // , () => { return Result.Succeeded; });
  145. }
  146. SwitchGridVisible();
  147. EquipmentInfo.BeginWatch();
  148. }
  149. /// <summary>
  150. /// 加载没有数据的项
  151. /// </summary>
  152. private void LoadNoneData()
  153. {
  154. CompositeItem item = NullPWGInstace.GetItems(EquipmentInfo?.BimID);
  155. myWPG.Instance = item;
  156. }
  157. /// <summary>
  158. /// 加载数据的项
  159. /// </summary>
  160. private void LoadHasData()
  161. {
  162. EquipmentInfo.SetPropertyGridValue();
  163. myWPGHas.Instance = EquipmentInfo.CompositeItem;
  164. }
  165. public void Hide()
  166. {
  167. base.Hide();
  168. this.Visibility = Visibility.Collapsed;
  169. }
  170. }
  171. }