4.0 KiB
4.0 KiB
车辆参数同步问题修复
问题描述
PathPointRenderPlugin.cs 中使用了硬编码的默认车辆参数 (2.0m × 1.5m × 2.0m),而用户在 PathEditingViewModel 中配置的参数 (1.0m × 1.0m × 2.0m) 没有被正确同步到渲染插件,导致车辆通行空间模式显示的尺寸不正确。
根本原因
- PathPointRenderPlugin.cs 中有硬编码的默认车辆参数
- PathEditingViewModel.cs 的车辆参数属性setter只更新了UI,没有同步到渲染插件
- SystemManagementViewModel 在切换可视化模式时没有同步最新的车辆参数
- PathPointRenderPlugin.cs 中的
SetVehicleParameters()方法从未被调用
修复方案
1. PathEditingViewModel.cs 修改
修改内容:
- 为所有车辆参数属性setter添加
SyncVehicleParametersToRenderPlugin()调用 - 添加
SyncVehicleParametersToRenderPlugin()方法 - 在
UpdatePathVisualization()方法中添加参数同步 - 在两个构造函数中添加初始化参数同步
代码变化:
// 车辆参数setter现在会自动同步到渲染插件
public double VehicleLength
{
get => _vehicleLength;
set
{
if (SetProperty(ref _vehicleLength, value))
{
SyncVehicleParametersToRenderPlugin();
OnPropertyChanged(nameof(CanExecuteAutoPlanPath));
}
}
}
// 同步方法
private void SyncVehicleParametersToRenderPlugin()
{
try
{
if (PathPointRenderPlugin.Instance != null)
{
PathPointRenderPlugin.Instance.SetVehicleParameters(
VehicleLength,
VehicleWidth,
VehicleHeight,
SafetyMargin);
}
}
catch (Exception ex)
{
LogManager.Error($"[车辆参数同步] 同步车辆参数失败: {ex.Message}", ex);
}
}
2. SystemManagementViewModel.cs 修改
修改内容:
- 修改
OnPathVisualizationModeChanged()方法,在切换到车辆通行空间模式时同步参数 - 修改
OnVehicleHeightModeChanged()方法,在高度模式变更时同步参数 - 添加
SyncVehicleParametersFromPathEditingViewModel()方法 - 添加
GetPathEditingViewModel()方法
代码变化:
// 可视化模式切换时同步参数
private void OnPathVisualizationModeChanged()
{
// ... 现有逻辑 ...
// 在切换到车辆通行空间模式时,同步车辆参数
if (IsVehicleSpaceMode)
{
SyncVehicleParametersFromPathEditingViewModel();
}
}
修复效果
- 实时同步:用户在路径编辑界面修改车辆参数时,参数会立即同步到渲染插件
- 模式切换同步:在系统管理界面切换可视化模式时,会自动同步当前的车辆参数
- 初始化同步:插件启动时会使用正确的用户配置参数,而不是硬编码默认值
- 多层保障:提供了多种获取车辆参数的方式,确保同步的可靠性
测试步骤
- 启动插件:打开NavisworksTransport插件
- 检查默认参数:验证车辆通行空间模式使用的是 1.0m × 1.0m × 2.0m 而不是 2.0m × 1.5m × 2.0m
- 修改参数:在路径编辑界面修改车辆参数
- 验证同步:切换到车辆通行空间模式,确认显示的尺寸与设置的参数一致
- 模式切换测试:在系统管理界面切换可视化模式,确认参数正确同步
技术细节
-
同步触发点:
- PathEditingViewModel 属性setter变更时
- UpdatePathVisualization() 调用时
- SystemManagementViewModel 模式切换时
- 插件初始化时
-
获取参数的优先级:
- 从 PathEditingViewModel 获取用户配置的参数
- 使用 PathEditingViewModel 的默认值 (1.0, 1.0, 2.0, 0.25)
- 避免使用 PathPointRenderPlugin 的硬编码默认值
-
线程安全:所有同步操作都包含异常处理,确保不会影响主程序运行
编译状态
✅ 编译成功 - 所有修改已通过编译验证
修复完成时间:2025-09-14