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 MetroSharedParams { get; set; } public List 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(); if (obj is List) { var li = obj as List; if (li.Count > 0) { var paramters = obj as List; 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) { var paramters = obj as List; foreach (var param in paramters) { param.IsChecked = true; } } } private void GenerateMetroProjectPropTree(IList paramsData) { var projects = paramsData.GroupBy(param => param.Project); foreach (var project in projects) { //项目 List projectChildren = new List(); 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 majorChildren = new List(); TreeModel majorTreeModel = new TreeModel { Name = major.Key, Icon = null, IsChecked = false, IsExpanded = false, Children = majorChildren, Tag = major.ToList() }; projectChildren.Add(majorTreeModel); } } } /// /// 轨交项目属性 /// private List GetMetroProjectProperties() { return dapperUtil.LoadModel("METRO_PROJECT_PROPERTIES"); } /// /// 轨交共享参数 /// private List GetMetroSharedParams() { return dapperUtil.LoadModel("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) { var paramters = obj as List; foreach (var param in paramters) { param.IsChecked = false; } } } } }