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