214 lines
7.2 KiB
C#
214 lines
7.2 KiB
C#
|
|
|
|||
|
|
using System.Linq;
|
|||
|
|
|
|||
|
|
using Autodesk.Revit.UI;
|
|||
|
|
|
|||
|
|
using Nice3point.Revit.Toolkit.External.Handlers;
|
|||
|
|
|
|||
|
|
using Szmedi.RvKits.Assists;
|
|||
|
|
using Szmedi.RvKits.InfoManager.Delivery;
|
|||
|
|
using Szmedi.RvKits.Models;
|
|||
|
|
|
|||
|
|
namespace Szmedi.RvKits.InfoManager
|
|||
|
|
{
|
|||
|
|
public partial class MetroProjectParamManagerViewModel : ObservableObject
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
private readonly DapperUtil dapperUtil;
|
|||
|
|
private readonly ActionEventHandler handler;
|
|||
|
|
private readonly UIApplication uiapp;
|
|||
|
|
[ObservableProperty]
|
|||
|
|
[NotifyCanExecuteChangedFor(nameof(AddParametersCommand))]
|
|||
|
|
private bool canAdd;
|
|||
|
|
public readonly List<ParamData> paramsToAdd = new List<ParamData>();
|
|||
|
|
|
|||
|
|
//private RelayCommand<object> addParameters;
|
|||
|
|
|
|||
|
|
//private RelayCommand<object> checkAll;
|
|||
|
|
//private RelayCommand<object> unCheckAll;
|
|||
|
|
|
|||
|
|
//public ICommand CheckAll
|
|||
|
|
//{
|
|||
|
|
// get
|
|||
|
|
// {
|
|||
|
|
// checkAll ??= new RelayCommand<object>(PerformCheckedAll);
|
|||
|
|
|
|||
|
|
// return checkAll;
|
|||
|
|
// }
|
|||
|
|
//}
|
|||
|
|
|
|||
|
|
//public ICommand UnCheckAll
|
|||
|
|
//{
|
|||
|
|
// get
|
|||
|
|
// {
|
|||
|
|
// unCheckAll ??= new RelayCommand<object>(PerformUnCheckedAll);
|
|||
|
|
|
|||
|
|
// return unCheckAll;
|
|||
|
|
// }
|
|||
|
|
//}
|
|||
|
|
|
|||
|
|
//public ICommand AddParameters
|
|||
|
|
//{
|
|||
|
|
// get
|
|||
|
|
// {
|
|||
|
|
// if (addParameters == null)
|
|||
|
|
// {
|
|||
|
|
// var uidoc = ParentWindow.UiApplication.ActiveUIDocument;
|
|||
|
|
// var doc = uidoc.doc;
|
|||
|
|
// addParameters = new RelayCommand<object>(PerformAddParameters, p => !doc.IsFamilyDocument);
|
|||
|
|
// }
|
|||
|
|
|
|||
|
|
// return addParameters;
|
|||
|
|
// }
|
|||
|
|
//}
|
|||
|
|
|
|||
|
|
public List<SharedParameterData> MetroSharedParams { get; set; }
|
|||
|
|
|
|||
|
|
public List<TreeModel> Models { get; } = new List<TreeModel>();
|
|||
|
|
//public ParamManagerWin ParentWindow { get; set; }
|
|||
|
|
|
|||
|
|
//public MetroProjectParamManagerViewModel(ParamManagerWin parentWindow)
|
|||
|
|
//{
|
|||
|
|
// ParentWindow = parentWindow;
|
|||
|
|
// dapperUtil = parentWindow.DapperUtil;
|
|||
|
|
// var projectParams = GetMetroProjectProperties();
|
|||
|
|
// MetroSharedParams = GetMetroSharedParams();
|
|||
|
|
// GenerateMetroProjectPropTree(projectParams);
|
|||
|
|
// CanAdd = paramsToAdd.Any() && !ParentWindow.UiApplication.ActiveUIDocument.Document.IsFamilyDocument;
|
|||
|
|
//}
|
|||
|
|
public MetroProjectParamManagerViewModel(UIApplication uiapp, DapperUtil dapperUtil, ActionEventHandler handler)
|
|||
|
|
{
|
|||
|
|
this.dapperUtil = dapperUtil;
|
|||
|
|
this.handler = handler;
|
|||
|
|
this.uiapp = uiapp;
|
|||
|
|
var projectParams = GetMetroProjectProperties();
|
|||
|
|
MetroSharedParams = GetMetroSharedParams();
|
|||
|
|
GenerateMetroProjectPropTree(projectParams);
|
|||
|
|
CanAdd = paramsToAdd.Any() && !uiapp.ActiveUIDocument.Document.IsFamilyDocument;
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// 轨交项目属性
|
|||
|
|
/// </summary>
|
|||
|
|
private List<MetroProjectParamData> GetMetroProjectProperties()
|
|||
|
|
{
|
|||
|
|
return dapperUtil.LoadModel<MetroProjectParamData>("metro_project_properties");
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// 轨交共享参数
|
|||
|
|
/// </summary>
|
|||
|
|
private List<SharedParameterData> GetMetroSharedParams()
|
|||
|
|
{
|
|||
|
|
return dapperUtil.LoadModel<SharedParameterData>("metro_shared_params");
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// 生成属性树
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="paramsData"></param>
|
|||
|
|
private void GenerateMetroProjectPropTree(IList<MetroProjectParamData> paramsData)
|
|||
|
|
{
|
|||
|
|
var projects = paramsData.GroupBy(param => param.Project);
|
|||
|
|
foreach (var project in projects)
|
|||
|
|
{
|
|||
|
|
//项目
|
|||
|
|
List<TreeModel> projectChildren = new();
|
|||
|
|
TreeModel projectTreeModel =
|
|||
|
|
new()
|
|||
|
|
{
|
|||
|
|
Name = project.Key,
|
|||
|
|
Icon = null,
|
|||
|
|
IsChecked = false,
|
|||
|
|
IsExpanded = true,
|
|||
|
|
Parent = null,
|
|||
|
|
Children = projectChildren,
|
|||
|
|
Tag = null
|
|||
|
|
};
|
|||
|
|
Models.Add(projectTreeModel);
|
|||
|
|
//专业
|
|||
|
|
var majors = project.GroupBy(p => p.Major);
|
|||
|
|
foreach (var major in majors)
|
|||
|
|
{
|
|||
|
|
List<TreeModel> majorChildren = new();
|
|||
|
|
TreeModel majorTreeModel =
|
|||
|
|
new()
|
|||
|
|
{
|
|||
|
|
Name = major.Key,
|
|||
|
|
Icon = null,
|
|||
|
|
IsChecked = false,
|
|||
|
|
IsExpanded = false,
|
|||
|
|
Children = majorChildren,
|
|||
|
|
Tag = major.ToList()
|
|||
|
|
};
|
|||
|
|
projectChildren.Add(majorTreeModel);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
[RelayCommand(CanExecute = nameof(CanAdd))]
|
|||
|
|
private void AddParameters()
|
|||
|
|
{
|
|||
|
|
CommandAssists.ExitCurrentCommand();
|
|||
|
|
//if (li.Any())
|
|||
|
|
//{
|
|||
|
|
// foreach (var param in li)
|
|||
|
|
// {
|
|||
|
|
// if (param.IsChecked == true)
|
|||
|
|
// {
|
|||
|
|
// paramsToAdd.Add(param);
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
//}
|
|||
|
|
handler.Raise(
|
|||
|
|
uiapp =>
|
|||
|
|
{
|
|||
|
|
var filePath = Path.Combine(GlobalVariables.DirAssembly, $"TempSharedParameters.txt");
|
|||
|
|
var doc = uiapp.ActiveUIDocument.Document;
|
|||
|
|
ParameterHelpers.AddProjectParameters(doc, paramsToAdd, MetroSharedParams, filePath);
|
|||
|
|
});
|
|||
|
|
//ParentWindow.AddParameterEventHandler.IsOnlyProjectCategory = true;
|
|||
|
|
//ParentWindow.AddParameterEventHandler.ParametersToAdded = paramsToAdd;
|
|||
|
|
//ParentWindow.AddParameterEventHandler.SharedParameters = MetroSharedParams;
|
|||
|
|
//ParentWindow.AddParameterEvent.Raise();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
[RelayCommand]
|
|||
|
|
private void TreeItemChanged(object obj)
|
|||
|
|
{
|
|||
|
|
if (obj is List<MetroProjectParamData> paramters)
|
|||
|
|
{
|
|||
|
|
paramsToAdd.Clear();
|
|||
|
|
if (paramters.Any())
|
|||
|
|
{
|
|||
|
|
paramsToAdd.AddRange(paramters.Where(param => param.IsChecked == true));
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
CanAdd = paramsToAdd.Any() && !uiapp.ActiveUIDocument.Document.IsFamilyDocument;
|
|||
|
|
}
|
|||
|
|
//private void PerformCheckedAll(object obj)
|
|||
|
|
//{
|
|||
|
|
// if (obj is List<ParamData>)
|
|||
|
|
// {
|
|||
|
|
// var paramters = obj as List<ParamData>;
|
|||
|
|
// foreach (var param in paramters)
|
|||
|
|
// {
|
|||
|
|
// param.IsChecked = true;
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
//}
|
|||
|
|
|
|||
|
|
//private void PerformUnCheckedAll(object obj)
|
|||
|
|
//{
|
|||
|
|
// if (obj is List<ParamData>)
|
|||
|
|
// {
|
|||
|
|
// var paramters = obj as List<ParamData>;
|
|||
|
|
// foreach (var param in paramters)
|
|||
|
|
// {
|
|||
|
|
// param.IsChecked = false;
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
//}
|
|||
|
|
}
|
|||
|
|
}
|