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
|
{
|
/// <summary>
|
/// WPF_FamilyPanel.xaml 的交互逻辑
|
/// </summary>
|
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();
|
}
|
}
|
}
|