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);
}
}