From a235a65a2098629130598b5eac2a2fc9b84e2986 Mon Sep 17 00:00:00 2001 From: tian <11429339@qq.com> Date: Sun, 18 Jan 2026 22:23:12 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=A3=80=E6=B5=8B=E9=97=B4?= =?UTF-8?q?=E9=9A=99=E7=9A=84=E5=90=8C=E6=AD=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ViewModels/AnimationControlViewModel.cs | 24 ++++++++++++------- .../WPF/Views/LogisticsControlPanel.xaml.cs | 8 ++++--- 2 files changed, 20 insertions(+), 12 deletions(-) diff --git a/src/UI/WPF/ViewModels/AnimationControlViewModel.cs b/src/UI/WPF/ViewModels/AnimationControlViewModel.cs index fdf8276..21d33d0 100644 --- a/src/UI/WPF/ViewModels/AnimationControlViewModel.cs +++ b/src/UI/WPF/ViewModels/AnimationControlViewModel.cs @@ -231,6 +231,7 @@ namespace NavisworksTransport.UI.WPF.ViewModels private double _virtualVehicleLength; // 虚拟车辆长度(米) private double _virtualVehicleWidth; // 虚拟车辆宽度(米) private double _virtualVehicleHeight; // 虚拟车辆高度(米) + private double _safetyMargin; // 检测间隙(米),从路径编辑同步 // 手工碰撞对象相关字段 private bool _isManualCollisionTargetEnabled = false; @@ -602,16 +603,26 @@ namespace NavisworksTransport.UI.WPF.ViewModels private set => SetProperty(ref _virtualVehicleHeight, value); } + /// + /// 检测间隙(米)- 只读,从路径编辑同步 + /// + public double SafetyMargin + { + get => _safetyMargin; + private set => SetProperty(ref _safetyMargin, value); + } + /// /// 设置虚拟车辆参数(由主ViewModel调用) /// - public void SetVirtualVehicleParameters(double length, double width, double height) + public void SetVirtualVehicleParameters(double length, double width, double height, double safetyMargin) { VirtualVehicleLength = length; VirtualVehicleWidth = width; VirtualVehicleHeight = height; + SafetyMargin = safetyMargin; - LogManager.Info($"[AnimationControlViewModel] 虚拟车辆参数已更新: {length:F1}m × {width:F1}m × {height:F1}m"); + LogManager.Info($"[AnimationControlViewModel] 虚拟车辆参数已更新: {length:F1}m × {width:F1}m × {height:F1}m, 检测间隙: {safetyMargin:F2}m"); // 如果当前使用虚拟车辆模式,更新生成动画的可用状态 if (UseVirtualVehicle) @@ -2419,13 +2430,8 @@ namespace NavisworksTransport.UI.WPF.ViewModels // 计算通行空间尺寸(米) double passageWidth, passageHeight, passageLength; - // 获取安全间隙(从配置) - var config = Core.Config.ConfigManager.Instance?.Current; - if (config == null) - { - throw new InvalidOperationException("[通行空间可视化] 无法获取配置文件"); - } - double safetyMargin = config.PathEditing.SafetyMarginMeters; + // 使用从路径编辑同步过来的检测间隙 + double safetyMargin = SafetyMargin; if (UseVirtualVehicle) { diff --git a/src/UI/WPF/Views/LogisticsControlPanel.xaml.cs b/src/UI/WPF/Views/LogisticsControlPanel.xaml.cs index 7d6ea2a..7ccfa25 100644 --- a/src/UI/WPF/Views/LogisticsControlPanel.xaml.cs +++ b/src/UI/WPF/Views/LogisticsControlPanel.xaml.cs @@ -417,7 +417,8 @@ namespace NavisworksTransport.UI.WPF // 当车辆参数变化时,同步到AnimationControlView else if (e.PropertyName == nameof(PathEditingViewModel.VehicleLength) || e.PropertyName == nameof(PathEditingViewModel.VehicleWidth) || - e.PropertyName == nameof(PathEditingViewModel.VehicleHeight)) + e.PropertyName == nameof(PathEditingViewModel.VehicleHeight) || + e.PropertyName == nameof(PathEditingViewModel.SafetyMargin)) { SyncVehicleParametersToAnimationView(); } @@ -441,9 +442,10 @@ namespace NavisworksTransport.UI.WPF AnimationControlView.ViewModel.SetVirtualVehicleParameters( pathEditingVM.VehicleLength, pathEditingVM.VehicleWidth, - pathEditingVM.VehicleHeight + pathEditingVM.VehicleHeight, + pathEditingVM.SafetyMargin ); - LogManager.Debug($"车辆参数已同步到动画控制视图: {pathEditingVM.VehicleLength:F1}×{pathEditingVM.VehicleWidth:F1}×{pathEditingVM.VehicleHeight:F1}m"); + LogManager.Debug($"车辆参数已同步到动画控制视图: {pathEditingVM.VehicleLength:F1}×{pathEditingVM.VehicleWidth:F1}×{pathEditingVM.VehicleHeight:F1}m, 检测间隙: {pathEditingVM.SafetyMargin:F2}m"); } } catch (Exception ex)