using Autodesk.Revit.DB; using Autodesk.Revit.UI; using HStation.RevitDev.Model.ModelEnum; using HStation.RevitDev.RevitDataExport.Common; using HStation.RevitDev.RevitDataExport.Entity; using HStation.RevitDev.RevitDataExport.Service; using HStation.RevitDev.RevitDataExport.Utility; using System; using System.Linq; using System.Windows; using System.Windows.Controls; using DataGrid = System.Windows.Controls.DataGrid; namespace HStation.RevitDev.RevitDataExport.Forms { /// /// WPF_FamilyPanel.xaml 的交互逻辑 /// public partial class Wpf_InstancePanel : Page, IDockablePaneProvider { public Wpf_InstancePanel() { InitializeComponent(); InitializeControlsData(); } private void InitializeControlsData() { var values = Enum.GetValues(typeof(RevitType)); this.tabControl.Items.Clear(); foreach (var value in values) { var revitType = (RevitType)value; if (revitType.IsRequired()) { TabItem tabItem = CreateTabItem(revitType); this.tabControl.Items.Add(tabItem); } } } private TabItem CreateTabItem(RevitType revitType) { var tabItem = new TabItem(); tabItem.Tag = revitType; tabItem.Height = 30; tabItem.Header = revitType.GetDescription(); DataGrid dataGrid = CreateDataGrid(revitType); tabItem.Content = dataGrid; return tabItem; } private DataGrid CreateDataGrid(RevitType revitType) { var dataGrid = new DataGrid(); dataGrid.RowHeight = 20; dataGrid.IsReadOnly = true; dataGrid.LoadingRow += DataGrid_LoadingRow; dataGrid.SelectionUnit = DataGridSelectionUnit.Cell; dataGrid.MouseDoubleClick += DataGrid_MouseDoubleClick; dataGrid.CanUserAddRows = false; CreateRows(dataGrid, revitType); return dataGrid; } private static void DataGrid_LoadingRow(object sender, DataGridRowEventArgs e) { e.Row.Header = e.Row.GetIndex() + 1; } private void DataGrid_MouseDoubleClick(object sender, System.Windows.Input.MouseButtonEventArgs e) { try { DataGrid dataGrid = sender as DataGrid; var selectCells = dataGrid.SelectedCells; if (selectCells.Count == 0) { return; } var selectCell = selectCells[0]; if (selectCell.Column.Header.ToString() == "编号") { string id = (selectCell.Item as ElementModel).编号; UIDocumentUtils.ShowElement(id); } else if (selectCell.Column.Header.ToString() == "连接构件") { string ids = (selectCell.Item as ElementModel).连接构件; UIDocumentUtils.ShowLinkedElements(ids); } } catch (Exception ex) { TaskDialog.Show("错误", ex.Message); } } private void DataGrid_PreviewMouseLeftButtonDown(object sender, System.Windows.Input.MouseButtonEventArgs e) { try { DataGrid dataGrid = sender as DataGrid; var selectCells = dataGrid.SelectedCells; string ids = (selectCells[0].Item as ElementModel).连接构件; var idArray = ids.Split(','); var idList = idArray.Select(x => new ElementId(int.Parse(x)))?.ToList(); GlobalResource.CurrentUIDocument.Selection.SetElementIds(idList); } catch (Exception ex) { TaskDialog.Show("错误", ex.Message); } } private void CreateRows(DataGrid dataGrid, RevitType revitType) { var models = RevitMepElementService.GetElementModels(revitType); WpfBindingUtils.Binding2(dataGrid, revitType, models); //WpfBindingUtils.Binding(dataGrid, revitType, models); } public void SetupDockablePane(DockablePaneProviderData data) { data.FrameworkElement = this; data.InitialState = new DockablePaneState { DockPosition = DockPosition.Bottom, MinimumHeight = 200 }; } private void reflesh_Click(object sender, RoutedEventArgs e) { DocumentUtil.AddUnhandledElements(); UpdateForm(); } public void UpdateForm() { InitializeControlsData(); } } }