2024-09-22 11:05:41 +08:00
|
|
|
|
using Autodesk.Revit.DB;
|
|
|
|
|
|
using Autodesk.Revit.UI;
|
|
|
|
|
|
using CommunityToolkit.Mvvm.ComponentModel;
|
|
|
|
|
|
using CommunityToolkit.Mvvm.Input;
|
|
|
|
|
|
using CommunityToolkit.Mvvm.Messaging;
|
|
|
|
|
|
|
2025-04-24 20:56:44 +08:00
|
|
|
|
using ShrlAlgoToolkit.RevitAddins.RvMEP;
|
|
|
|
|
|
using ShrlAlgoToolkit.RevitAddins.Windows;
|
2024-09-22 11:05:41 +08:00
|
|
|
|
|
2025-04-24 20:56:44 +08:00
|
|
|
|
namespace ShrlAlgoToolkit.RevitAddins.RvView;
|
2024-09-22 11:05:41 +08:00
|
|
|
|
|
|
|
|
|
|
public partial class SystemDisplayViewModel : ObservableRecipient, IRecipient<Color>
|
|
|
|
|
|
{
|
|
|
|
|
|
private SystemModel currentModel;
|
|
|
|
|
|
|
|
|
|
|
|
[ObservableProperty]
|
|
|
|
|
|
private List<SystemModel> systemsCollection;
|
|
|
|
|
|
|
|
|
|
|
|
public SystemDisplayViewModel(UIApplication uiapp)
|
|
|
|
|
|
{
|
|
|
|
|
|
var doc = uiapp.ActiveUIDocument.Document;
|
|
|
|
|
|
var enumerable = doc.OfClass<MEPSystemType>().Cast<MEPSystemType>();
|
|
|
|
|
|
var systemModels = from mepSystemType in enumerable let model = new SystemModel(mepSystemType) select model;
|
|
|
|
|
|
SystemsCollection = new List<SystemModel>(systemModels);
|
|
|
|
|
|
IsActive = true;
|
|
|
|
|
|
//订阅
|
|
|
|
|
|
//WeakReferenceMessenger.Default.RegisterAll(this);
|
|
|
|
|
|
//WeakReferenceMessenger.Default.Register<SelectedColor>(this);
|
|
|
|
|
|
|
|
|
|
|
|
//WeakReferenceMessenger.Default.Register<SelectedColor>(this, (r, m) =>
|
|
|
|
|
|
//{
|
|
|
|
|
|
// TaskDialog.Show("消息", "收到消息");
|
|
|
|
|
|
//});
|
|
|
|
|
|
|
|
|
|
|
|
//Messenger.Register<SystemDisplayViewModel, ColorPickerViewModel>(this, (r, m) =>
|
|
|
|
|
|
//{
|
|
|
|
|
|
//});
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public void Receive(Color message)
|
|
|
|
|
|
{
|
|
|
|
|
|
//TaskDialog.Show("消息", "收到颜色消息");
|
|
|
|
|
|
if (message != null)
|
|
|
|
|
|
{
|
|
|
|
|
|
currentModel.FillColor = message;
|
|
|
|
|
|
currentModel.BackgroundColor = new System.Windows.Media.SolidColorBrush(
|
|
|
|
|
|
System.Windows.Media.Color.FromRgb(message.Red, message.Green, message.Blue)
|
|
|
|
|
|
);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//currentModel.BackgroundColor = System.Windows.Media.SelectedColor.FromRgb(message.Red, message.Green, message.Blue);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
[RelayCommand]
|
|
|
|
|
|
private void OpenColorPicker(object obj)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (obj is SystemModel model)
|
|
|
|
|
|
{
|
|
|
|
|
|
currentModel = model;
|
|
|
|
|
|
var viewModel = model.FillColor.IsValid
|
|
|
|
|
|
? new ColorPickerViewModel(
|
|
|
|
|
|
System.Windows.Media.Color.FromRgb(model.FillColor.Red, model.FillColor.Green, model.FillColor.Blue)
|
|
|
|
|
|
)
|
|
|
|
|
|
: new ColorPickerViewModel(System.Windows.Media.Color.FromRgb(0, 0, 0));
|
|
|
|
|
|
var win = new ColorPickerWin(viewModel);
|
|
|
|
|
|
win.ShowDialog();
|
|
|
|
|
|
//WeakReferenceMessenger.Default.Register<SelectedColor>(this, (r, m) =>
|
|
|
|
|
|
//{
|
|
|
|
|
|
// color = m;
|
|
|
|
|
|
//});
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|