Files
RevitArchive/RevitKits/WBSCoder/ProjectCodeAddedCheckerViewModel.cs

75 lines
2.1 KiB
C#
Raw Normal View History

2026-02-23 14:58:05 +08:00
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using Autodesk.Revit.DB;
using Autodesk.Revit.UI;
using CommunityToolkit.Mvvm.ComponentModel;
using CommunityToolkit.Mvvm.Input;
namespace Sai.Common.Shared.WBSCoder
{
public partial class ProjectCodeAddedCheckerViewModel : ObservableObject
{
public ProjectCodeAddedCheckerViewModel(CheckCodeViewModel viewModel)
{
allElements = viewModel.AllElements;
LastTaskItems = viewModel.LastTaskItems;
handler = new CodingEventHandler();
codingEvent = ExternalEvent.Create(handler);
}
private readonly IList<Element> allElements;
private readonly ExternalEvent codingEvent;
private readonly CodingEventHandler handler;
public ObservableCollection<TaskItem> LastTaskItems { get; set; }
/// <summary>
/// 添加WBS编码
/// </summary>
/// <param name="obj"></param>
[RelayCommand]
private void AddWbsCode(object obj)
{
try
{
handler.TaskItem = obj as TaskItem;
codingEvent.Raise();
}
catch (Exception ex)
{
TaskDialog.Show("添加失败", $"{ex.Message}");
}
}
/// <summary>
/// 检查mpp文件是否都赋予到模型
/// </summary>
[RelayCommand]
private void CheckCode()
{
foreach (var ele in allElements)
{
var temp = ele.get_Parameter(BuiltInParameter.ALL_MODEL_MARK)?.AsString();
if (temp == null)
{
continue;
}
string code = WbsCoderUtils.FormatWbsCode(temp);
foreach (var task in LastTaskItems)
{
if (task.WBSCode == code)
{
task.HasCoded = true;
break;
}
}
}
TaskDialog.Show("提示", "校验完成");
}
}
}