使用场景加载完成事件SceneLoaded实现文档更新后的物流列表刷新
This commit is contained in:
parent
b0a63409b9
commit
fbe46ebc85
@ -1,18 +1,12 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.ObjectModel;
|
||||
using System.ComponentModel;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
using System.Windows.Input;
|
||||
using Autodesk.Navisworks.Api;
|
||||
using NavisApplication = Autodesk.Navisworks.Api.Application;
|
||||
using NavisworksTransport.Core;
|
||||
using NavisworksTransport.Core.Config;
|
||||
using NavisworksTransport.Commands;
|
||||
using NavisworksTransport.UI.WPF.Collections;
|
||||
using NavisworksTransport.UI.WPF.Commands;
|
||||
using NavisworksTransport.UI.WPF.Models;
|
||||
using NavisworksTransport.Utils;
|
||||
|
||||
@ -926,10 +920,10 @@ namespace NavisworksTransport.UI.WPF.ViewModels
|
||||
|
||||
// 选择状态格式化方法已移至NavisworksSelectionHelper中
|
||||
|
||||
#region 文档模型集合事件处理
|
||||
#region 场景加载完成事件处理
|
||||
|
||||
/// <summary>
|
||||
/// 订阅文档模型集合变化事件
|
||||
/// 订阅场景加载完成事件
|
||||
/// </summary>
|
||||
private void SubscribeToDocumentModelsEvents()
|
||||
{
|
||||
@ -938,19 +932,19 @@ namespace NavisworksTransport.UI.WPF.ViewModels
|
||||
var document = NavisApplication.ActiveDocument;
|
||||
if (document?.Models != null && !_modelsCollectionEventSubscribed)
|
||||
{
|
||||
document.Models.CollectionChanged += OnDocumentModelsCollectionChanged;
|
||||
document.Models.SceneLoaded += OnSceneLoaded;
|
||||
_modelsCollectionEventSubscribed = true;
|
||||
LogManager.Info("[ModelSettingsViewModel] 已订阅文档Models.CollectionChanged事件");
|
||||
LogManager.Info("[ModelSettingsViewModel] 已订阅SceneLoaded事件");
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
LogManager.Error($"[ModelSettingsViewModel] 订阅文档模型集合事件失败: {ex.Message}", ex);
|
||||
LogManager.Error($"[ModelSettingsViewModel] 订阅SceneLoaded事件失败: {ex.Message}", ex);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 取消订阅文档模型集合变化事件
|
||||
/// 取消场景加载完成事件
|
||||
/// </summary>
|
||||
private void UnsubscribeFromDocumentModelsEvents()
|
||||
{
|
||||
@ -961,22 +955,22 @@ namespace NavisworksTransport.UI.WPF.ViewModels
|
||||
var document = NavisApplication.ActiveDocument;
|
||||
if (document?.Models != null)
|
||||
{
|
||||
document.Models.CollectionChanged -= OnDocumentModelsCollectionChanged;
|
||||
document.Models.SceneLoaded -= OnSceneLoaded;
|
||||
}
|
||||
_modelsCollectionEventSubscribed = false;
|
||||
LogManager.Info("[ModelSettingsViewModel] 已取消订阅文档Models.CollectionChanged事件");
|
||||
LogManager.Info("[ModelSettingsViewModel] 已取消订阅SceneLoaded事件");
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
LogManager.Error($"[ModelSettingsViewModel] 取消订阅文档模型集合事件失败: {ex.Message}", ex);
|
||||
LogManager.Error($"[ModelSettingsViewModel] 取消订阅SceneLoaded事件失败: {ex.Message}", ex);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 文档模型集合变化事件处理器
|
||||
/// 场景加载完成事件处理器
|
||||
/// </summary>
|
||||
private async void OnDocumentModelsCollectionChanged(object sender, EventArgs e)
|
||||
private async void OnSceneLoaded(object sender, EventArgs e)
|
||||
{
|
||||
// 如果已经释放,直接返回
|
||||
if (_disposed) return;
|
||||
@ -986,19 +980,14 @@ namespace NavisworksTransport.UI.WPF.ViewModels
|
||||
var document = NavisApplication.ActiveDocument;
|
||||
var modelsCount = document?.Models?.Count ?? 0;
|
||||
|
||||
LogManager.Info($"[ModelSettingsViewModel] 文档模型集合变化,当前模型数量: {modelsCount}");
|
||||
LogManager.Info($"[ModelSettingsViewModel] 场景加载完成,当前模型数量: {modelsCount}");
|
||||
|
||||
// 只有在有模型的情况下才刷新物流模型列表
|
||||
if (modelsCount > 0)
|
||||
{
|
||||
LogManager.Info("[ModelSettingsViewModel] 检测到文档模型加载完成,自动刷新物流模型列表");
|
||||
//TODO:直接刷新会因为文档还没有渲染结束而导致程序崩溃,后续可以考虑结合SceneLoaded事件来触发
|
||||
//await RefreshLogisticsModelsAsync();
|
||||
}
|
||||
// 刷新物流模型列表
|
||||
await RefreshLogisticsModelsAsync();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
LogManager.Error($"[ModelSettingsViewModel] 处理文档模型集合变化事件异常: {ex.Message}", ex);
|
||||
LogManager.Error($"[ModelSettingsViewModel] 处理场景加载完成事件异常: {ex.Message}", ex);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user