添加项目文件。
This commit is contained in:
@@ -0,0 +1,213 @@
|
||||
|
||||
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;
|
||||
// }
|
||||
// }
|
||||
//}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user