149 lines
5.0 KiB
C#
149 lines
5.0 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using CommunityToolkit.Mvvm.ComponentModel;
|
|
using CommunityToolkit.Mvvm.Input;
|
|
using Sai.Database.Shared;
|
|
using Sai.RvKits.Operation;
|
|
using SZBIM.StandardTools;
|
|
using SZBIM.StandardTools.ParameterManager;
|
|
|
|
namespace Sai.Common.Shared.ParameterManager
|
|
{
|
|
public partial class MetroProjectInfoParamsViewModel : ObservableObject
|
|
{
|
|
public MetroProjectInfoParamsViewModel(MetroParamsManagerWin parentWindow)
|
|
{
|
|
ParentWindow = parentWindow;
|
|
dapperUtil = parentWindow.DapperUtil;
|
|
var projectParams = GetMetroProjectProperties();
|
|
MetroSharedParams = GetMetroSharedParams();
|
|
GenerateMetroProjectPropTree(projectParams);
|
|
}
|
|
|
|
public static IntPtr RevitwindowPtr = Autodesk.Windows.ComponentManager.ApplicationWindow;
|
|
private readonly DapperUtil dapperUtil;
|
|
|
|
|
|
public List<SharedParamModel> MetroSharedParams { get; set; }
|
|
|
|
public List<TreeModel> Models { get; } = new();
|
|
public MetroParamsManagerWin ParentWindow { get; set; }
|
|
|
|
[RelayCommand(CanExecute = nameof(IsProjectDocument))]
|
|
private void AddParameters(object obj)
|
|
{
|
|
WinIntPtr.SetForegroundWindow(RevitwindowPtr);
|
|
KeyPress.keybd_event(0x1B, 0, 0, 0);
|
|
KeyPress.keybd_event(0x1B, 0, 2, 0);
|
|
var paramToAdd = new List<ParamModel>();
|
|
if (obj is List<ParamModel>)
|
|
{
|
|
var li = obj as List<ParamModel>;
|
|
if (li.Count > 0)
|
|
{
|
|
var paramters = obj as List<ParamModel>;
|
|
foreach (var param in paramters)
|
|
{
|
|
if (param.IsChecked == true)
|
|
{
|
|
paramToAdd.Add(param);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
ParentWindow.AddProjectInfoParameterEventHandler.IsOnlyProjectCategory = true;
|
|
ParentWindow.AddProjectInfoParameterEventHandler.ParameterList = paramToAdd;
|
|
ParentWindow.AddProjectInfoParameterEventHandler.SharedParameters = MetroSharedParams;
|
|
ParentWindow.AddParameterEvent.Raise();
|
|
}
|
|
|
|
[RelayCommand]
|
|
private void CheckedAll(object obj)
|
|
{
|
|
if (obj is List<ParamModel>)
|
|
{
|
|
var paramters = obj as List<ParamModel>;
|
|
foreach (var param in paramters)
|
|
{
|
|
param.IsChecked = true;
|
|
}
|
|
}
|
|
}
|
|
|
|
private void GenerateMetroProjectPropTree(IList<ParamModel> paramsData)
|
|
{
|
|
var projects = paramsData.GroupBy(param => param.Project);
|
|
foreach (var project in projects)
|
|
{
|
|
//项目
|
|
List<TreeModel> projectChildren = new List<TreeModel>();
|
|
TreeModel projectTreeModel = new TreeModel
|
|
{
|
|
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 List<TreeModel>();
|
|
TreeModel majorTreeModel = new TreeModel
|
|
{
|
|
Name = major.Key,
|
|
Icon = null,
|
|
IsChecked = false,
|
|
IsExpanded = false,
|
|
Children = majorChildren,
|
|
Tag = major.ToList()
|
|
};
|
|
projectChildren.Add(majorTreeModel);
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// 轨交项目属性
|
|
/// </summary>
|
|
private List<ParamModel> GetMetroProjectProperties()
|
|
{
|
|
return dapperUtil.LoadModel<ParamModel>("METRO_PROJECT_PROPERTIES");
|
|
}
|
|
|
|
/// <summary>
|
|
/// 轨交共享参数
|
|
/// </summary>
|
|
private List<SharedParamModel> GetMetroSharedParams()
|
|
{
|
|
return dapperUtil.LoadModel<SharedParamModel>("METRO_SHARED_PARAMS");
|
|
}
|
|
|
|
private bool IsProjectDocument()
|
|
{
|
|
var uidoc = ParentWindow.UiApplication.ActiveUIDocument;
|
|
var doc = uidoc.Document;
|
|
return !doc.IsFamilyDocument;
|
|
}
|
|
|
|
[RelayCommand]
|
|
private void UnCheckedAll(object obj)
|
|
{
|
|
if (obj is List<ParamModel>)
|
|
{
|
|
var paramters = obj as List<ParamModel>;
|
|
foreach (var param in paramters)
|
|
{
|
|
param.IsChecked = false;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} |