diff --git a/src/UI/WPF/ViewModels/PathEditingViewModel.cs b/src/UI/WPF/ViewModels/PathEditingViewModel.cs index daddc0c..1d04ecd 100644 --- a/src/UI/WPF/ViewModels/PathEditingViewModel.cs +++ b/src/UI/WPF/ViewModels/PathEditingViewModel.cs @@ -1403,15 +1403,10 @@ namespace NavisworksTransport.UI.WPF.ViewModels { try { - CleanupAssemblyReferenceSelection(); - AssemblyReferencePathManager.Instance.HideReferenceRod(); - ClearAssemblyAnchorMarker(); - ClearAssemblyCenterGuideLine(); - ClearAssemblyReferenceLine(); - AssemblyStartPointText = "未选择"; - OnPropertyChanged(nameof(CanSelectAssemblyStartPoint)); - UpdateMainStatus("已隐藏终端安装辅助线"); - LogManager.Info("[直线装配] 已隐藏辅助线"); + HideAssemblyReferenceVisuals( + resetStartPointText: false, + statusMessage: "已隐藏终端安装辅助线", + logMessage: "[直线装配] 已隐藏辅助线"); } catch (Exception ex) { @@ -1477,8 +1472,10 @@ namespace NavisworksTransport.UI.WPF.ViewModels throw new InvalidOperationException("装配路径生成失败"); } - _pathPlanningManager.DrawRouteVisualization(route, isAutoPath: false); - RefreshPathRoutes(); + if (!_pathPlanningManager.FinishEditing()) + { + throw new InvalidOperationException("装配路径完成编辑失败"); + } var generatedRouteViewModel = PathRoutes.FirstOrDefault(p => p.Name == route.Name); if (generatedRouteViewModel != null) @@ -1487,6 +1484,11 @@ namespace NavisworksTransport.UI.WPF.ViewModels UpdatePassageSpaceVisualizationForPathType(route.PathType); } + HideAssemblyReferenceVisuals( + resetStartPointText: false, + statusMessage: null, + logMessage: "[直线装配] 路径生成完成后已隐藏辅助线可视化"); + AssemblyTerminalObjectInfo = string.Format( "对接终点=({0:F2}, {1:F2}, {2:F2}),装配起点={3},安装方式={4},对接基准={5}", endPoint.X, @@ -1497,7 +1499,30 @@ namespace NavisworksTransport.UI.WPF.ViewModels GetAssemblyAnchorText()); OnPropertyChanged(nameof(PathRoutes)); - LogManager.Info($"[直线装配] 已生成路径: {route.Name},起点=({startPoint.X:F2}, {startPoint.Y:F2}, {startPoint.Z:F2}),终点=({endPoint.X:F2}, {endPoint.Y:F2}, {endPoint.Z:F2})"); + LogManager.Info($"[直线装配] 已生成并完成路径: {route.Name},起点=({startPoint.X:F2}, {startPoint.Y:F2}, {startPoint.Z:F2}),终点=({endPoint.X:F2}, {endPoint.Y:F2}, {endPoint.Z:F2})"); + } + + private void HideAssemblyReferenceVisuals(bool resetStartPointText, string statusMessage, string logMessage) + { + CleanupAssemblyReferenceSelection(); + AssemblyReferencePathManager.Instance.HideReferenceRod(); + ClearAssemblyAnchorMarker(); + ClearAssemblyCenterGuideLine(); + ClearAssemblyReferenceLine(); + if (resetStartPointText) + { + AssemblyStartPointText = "未选择"; + } + OnPropertyChanged(nameof(CanSelectAssemblyStartPoint)); + if (!string.IsNullOrWhiteSpace(statusMessage)) + { + UpdateMainStatus(statusMessage); + } + + if (!string.IsNullOrWhiteSpace(logMessage)) + { + LogManager.Info(logMessage); + } } private Point3D GetAssemblyTerminalAnchorPoint()