using Autodesk.Revit.DB; using Autodesk.Revit.DB.Architecture; using Autodesk.Revit.UI; using Autodesk.Revit.UI.Selection; using System; using System.Collections.ObjectModel; using System.Windows; using System.Windows.Input; namespace Szmedi.RvKits.Civil.RoomReinforcement { /// /// RoomNamingWin.xaml 的交互逻辑 /// public partial class RoomNamingWin { private readonly UIApplication uiapp; public RoomNamingWin(UIApplication uiapp) { this.uiapp = uiapp; RoomNames = new ObservableCollection(); ReadSettings(); DataContext = this; InitializeComponent(); } public ObservableCollection RoomNames { get; set; } private void BtnAddItem_Click(object sender, RoutedEventArgs e) { if (!string.IsNullOrEmpty(TbRoomName.Text)) { RoomNames.Add(TbRoomName.Text); Properties.Settings.Default.RoomNames.Add(TbRoomName.Text); Properties.Settings.Default.Save(); } } private void BtnDeleteItem_Click(object sender, RoutedEventArgs e) { if (LbRoomNames.SelectedItem != null & LbRoomNames.SelectedIndex != -1) { var name = LbRoomNames.SelectedItem.ToString(); RoomNames.Remove(name); Properties.Settings.Default.RoomNames.Remove(name); Properties.Settings.Default.Save(); } } private void ReadSettings() { foreach (var name in Properties.Settings.Default.RoomNames) { RoomNames.Add(name); } } private void BtnPlace_Click(object sender, RoutedEventArgs e) { OnRenameRoom(); } private void OnRenameRoom() { Hide(); var uidoc = uiapp.ActiveUIDocument; var doc = uidoc.Document; try { while (true) { var refer = uidoc.Selection.PickObject(ObjectType.Element, new GenericFilter()); var room = doc.GetElement(refer) as Room; doc.Invoke(ts => { room.get_Parameter(BuiltInParameter.ROOM_NAME).Set(LbRoomNames.SelectedItem.ToString()); }); } } catch (Autodesk.Revit.Exceptions.OperationCanceledException) { } catch (Exception exception) { Console.WriteLine(exception); throw; } ShowDialog(); } private void LbRoomNames_MouseDoubleClick(object sender, MouseButtonEventArgs e) { OnRenameRoom(); } private void BtnClearItems_Click(object sender, RoutedEventArgs e) { var result = MessageBox.Show(this, "确定清空房间列表吗?", "警告", MessageBoxButton.OKCancel); if (result == MessageBoxResult.OK) { RoomNames.Clear(); } } } }