添加项目文件。
This commit is contained in:
170
Szmedi.RvKits/InfoManager/Delivery/ArchiParamManagerViewModel.cs
Normal file
170
Szmedi.RvKits/InfoManager/Delivery/ArchiParamManagerViewModel.cs
Normal file
@@ -0,0 +1,170 @@
|
||||
|
||||
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 ArchiParamManagerViewModel : ObservableObject
|
||||
{
|
||||
private readonly DapperUtil dapperUtil;
|
||||
private readonly ActionEventHandler handler;
|
||||
private readonly UIApplication uiapp;
|
||||
private readonly List<ParamData> paramsToAdd = new();
|
||||
|
||||
[ObservableProperty]
|
||||
[NotifyCanExecuteChangedFor(nameof(AddParametersCommand))]
|
||||
private bool canAdd;
|
||||
/// <summary>
|
||||
/// 族参数
|
||||
/// </summary>
|
||||
[ObservableProperty]
|
||||
private bool isFamilyParam;
|
||||
/// <summary>
|
||||
/// 族参数(共享参数)
|
||||
/// </summary>
|
||||
[ObservableProperty]
|
||||
private bool isSharedFamilyParam;
|
||||
|
||||
/// <summary>
|
||||
/// 共享参数绑定类别
|
||||
/// </summary>
|
||||
[ObservableProperty]
|
||||
private bool isSharedProjectParam = true;
|
||||
|
||||
public List<SharedParameterData> ArchiSharedParams { get; set; }
|
||||
|
||||
public List<TreeModel> Models { get; } = new List<TreeModel>();
|
||||
|
||||
//public ParamManagerWin ParentWindow { get; set; }
|
||||
|
||||
//public ArchiParamManagerViewModel(ParamManagerWin parentWindow)
|
||||
//{
|
||||
// ParentWindow = parentWindow;
|
||||
// dapperUtil = parentWindow.DapperUtil;
|
||||
// var archiProperties = GetArchiProperties();
|
||||
// ArchiSharedParams = GetArchiSharedParams();
|
||||
// GenerateArchiTree(archiProperties);
|
||||
// CanAdd = paramsToAdd.Any() && !ParentWindow.UiApplication.ActiveUIDocument.Document.IsFamilyDocument;
|
||||
//}
|
||||
public ArchiParamManagerViewModel(UIApplication uiapp, DapperUtil dapperUtil, ActionEventHandler handler)
|
||||
{
|
||||
this.dapperUtil = dapperUtil;
|
||||
this.handler = handler;
|
||||
this.uiapp = uiapp;
|
||||
var archiProperties = GetArchiProperties();
|
||||
ArchiSharedParams = GetArchiSharedParams();
|
||||
GenerateArchiTree(archiProperties);
|
||||
CanAdd = paramsToAdd.Any() && !uiapp.ActiveUIDocument.Document.IsFamilyDocument;
|
||||
}
|
||||
/// <summary>
|
||||
/// 建筑所有的属性
|
||||
/// </summary>
|
||||
private List<ArchiParamData> GetArchiProperties()
|
||||
{
|
||||
return dapperUtil.LoadModel<ArchiParamData>("archi_properties");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 建筑共享参数
|
||||
/// </summary>
|
||||
private List<SharedParameterData> GetArchiSharedParams()
|
||||
{
|
||||
return dapperUtil.LoadModel<SharedParameterData>("archi_shared_params");
|
||||
}
|
||||
|
||||
private void GenerateArchiTree(IList<ArchiParamData> paramsData)
|
||||
{
|
||||
var majors = paramsData.GroupBy(param => param.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 = null
|
||||
};
|
||||
Models.Add(majorTreeModel);
|
||||
//构件
|
||||
var components = major.GroupBy(p => p.Component);
|
||||
foreach (IGrouping<string, ArchiParamData> component in components)
|
||||
{
|
||||
TreeModel componentTreeModel =
|
||||
new()
|
||||
{
|
||||
Id = null,
|
||||
Name = component.Key,
|
||||
Icon = null,
|
||||
IsExpanded = false,
|
||||
Parent = null,
|
||||
Children = null,
|
||||
Tag = component.ToList()
|
||||
};
|
||||
majorChildren.Add(componentTreeModel);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[RelayCommand(CanExecute = nameof(CanAdd))]
|
||||
private void AddParameters()
|
||||
{
|
||||
//ExternalEventRequest x = ExternalEventRequest.Denied;
|
||||
//KeyPressHelpers.SetFocusRVT();
|
||||
//KeyPressHelpers.keybd_event(0x1B, 0, 0, 0);
|
||||
//KeyPressHelpers.keybd_event(0x1B, 0, 2, 0);
|
||||
CommandAssists.ExitCurrentCommand();
|
||||
handler.Raise(
|
||||
uiapp =>
|
||||
{
|
||||
if (paramsToAdd.Any())
|
||||
{
|
||||
var uidoc = uiapp.ActiveUIDocument;
|
||||
var filePath = Path.Combine(GlobalVariables.DirAssembly, $"TempSharedParameters.txt");
|
||||
if (IsSharedProjectParam)
|
||||
{
|
||||
ParameterHelpers.AddParameterElementsBinding(uidoc, paramsToAdd, ArchiSharedParams, filePath);
|
||||
}
|
||||
else
|
||||
{
|
||||
ParameterHelpers.AddFamilyParameters(uidoc, paramsToAdd, ArchiSharedParams, IsFamilyParam, filePath);
|
||||
}
|
||||
}
|
||||
});
|
||||
//ParentWindow.AddParameterEventHandler.IsSharedProjectParam = IsSharedProjectParam;
|
||||
//ParentWindow.AddParameterEventHandler.IsFamilyParam = IsFamilyParam;
|
||||
//ParentWindow.AddParameterEventHandler.IsSharedFamilyParam = IsSharedFamilyParam;
|
||||
//ParentWindow.AddParameterEventHandler.ParametersToAdded = paramsToAdd;
|
||||
//ParentWindow.AddParameterEventHandler.SharedParameters = ArchiSharedParams;
|
||||
//ParentWindow.AddParameterEvent.Raise();
|
||||
|
||||
//CanAdd = x != ExternalEventRequest.Accepted;
|
||||
}
|
||||
|
||||
[RelayCommand]
|
||||
private void TreeItemChanged(object obj)
|
||||
{
|
||||
if (obj is List<ArchiParamData> paramters)
|
||||
{
|
||||
paramsToAdd.Clear();
|
||||
if (paramters.Any())
|
||||
{
|
||||
paramsToAdd.AddRange(paramters.Where(param => param.IsChecked == true));
|
||||
}
|
||||
}
|
||||
|
||||
CanAdd = paramsToAdd.Any() && !uiapp.ActiveUIDocument.Document.IsFamilyDocument;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user