diff --git a/src/Core/MainPlugin.cs b/src/Core/MainPlugin.cs index 3eda1d7..820de55 100644 --- a/src/Core/MainPlugin.cs +++ b/src/Core/MainPlugin.cs @@ -490,14 +490,39 @@ namespace NavisworksTransport // 文档加载完成,初始化PathDatabase if (!string.IsNullOrEmpty(activeDoc?.FileName)) { - GlobalExceptionHandler.SafeExecute(() => + try { var pathManager = PathPlanningManager.GetActivePathManager(); if (pathManager != null) { pathManager.DatabaseInitialize(); } - }, "初始化PathDatabase"); + } + catch (Exception ex) + { + // 数据库初始化失败是严重错误,需要明确提示用户 + var errorMsg = $"数据库初始化失败:{ex.Message}\n\n"; + errorMsg += "可能的原因:\n"; + errorMsg += "1. 文件夹权限不足\n"; + errorMsg += "2. 磁盘空间不足\n"; + errorMsg += "3. 数据库文件被锁定\n"; + errorMsg += "4. SQLite 组件损坏\n\n"; + errorMsg += "详细信息请查看日志文件。"; + + LogManager.Error($"[文档管理] 数据库初始化失败: {ex.Message}", ex); + LogManager.Error($"[文档管理] 文档路径: {activeDoc.FileName}"); + LogManager.Error($"[文档管理] 异常类型: {ex.GetType().Name}"); + LogManager.Error($"[文档管理] 堆栈信息: {ex.StackTrace}"); + + System.Windows.MessageBox.Show( + errorMsg, + "数据库初始化失败", + System.Windows.MessageBoxButton.OK, + System.Windows.MessageBoxImage.Error + ); + + // 不重新抛出,避免插件崩溃,但批处理等功能将不可用 + } } } else if (_hasModels && !currentHasModels) diff --git a/src/Core/PathDatabase.cs b/src/Core/PathDatabase.cs index ede344a..54a8570 100644 --- a/src/Core/PathDatabase.cs +++ b/src/Core/PathDatabase.cs @@ -231,9 +231,6 @@ namespace NavisworksTransport VirtualVehicleLength REAL, VirtualVehicleWidth REAL, VirtualVehicleHeight REAL, - VehicleModelIndex INTEGER, - VehiclePathId TEXT, - VehicleObjectName TEXT, DetectAllObjects INTEGER NOT NULL DEFAULT 1, ClashDetectiveTestName TEXT, CollisionCount INTEGER, diff --git a/src/Core/PathPlanningManager.cs b/src/Core/PathPlanningManager.cs index d88cb19..3b18887 100644 --- a/src/Core/PathPlanningManager.cs +++ b/src/Core/PathPlanningManager.cs @@ -191,6 +191,9 @@ namespace NavisworksTransport catch (Exception ex) { LogManager.Error($"初始化路径分析数据库失败: {ex.Message}", ex); + LogManager.Error($"数据库路径: {Application.ActiveDocument?.FileName}"); + LogManager.Error($"异常类型: {ex.GetType().Name}"); + throw; // 重新抛出异常,让调用者知道初始化失败 } }