From fbe46ebc855429ca5c5bd7b987b4bc21418f7314 Mon Sep 17 00:00:00 2001 From: tian <11429339@qq.com> Date: Tue, 21 Oct 2025 18:22:23 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BD=BF=E7=94=A8=E5=9C=BA=E6=99=AF=E5=8A=A0?= =?UTF-8?q?=E8=BD=BD=E5=AE=8C=E6=88=90=E4=BA=8B=E4=BB=B6SceneLoaded?= =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E6=96=87=E6=A1=A3=E6=9B=B4=E6=96=B0=E5=90=8E?= =?UTF-8?q?=E7=9A=84=E7=89=A9=E6=B5=81=E5=88=97=E8=A1=A8=E5=88=B7=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../WPF/ViewModels/ModelSettingsViewModel.cs | 41 +++++++------------ 1 file changed, 15 insertions(+), 26 deletions(-) diff --git a/src/UI/WPF/ViewModels/ModelSettingsViewModel.cs b/src/UI/WPF/ViewModels/ModelSettingsViewModel.cs index 56ff2ba..972667e 100644 --- a/src/UI/WPF/ViewModels/ModelSettingsViewModel.cs +++ b/src/UI/WPF/ViewModels/ModelSettingsViewModel.cs @@ -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 场景加载完成事件处理 /// - /// 订阅文档模型集合变化事件 + /// 订阅场景加载完成事件 /// 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); } } /// - /// 取消订阅文档模型集合变化事件 + /// 取消场景加载完成事件 /// 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); } } /// - /// 文档模型集合变化事件处理器 + /// 场景加载完成事件处理器 /// - 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); } }