# 物体参数同步问题修复

## 问题描述

PathPointRenderPlugin.cs 中使用了硬编码的默认物体参数 (2.0m × 1.5m × 2.0m)，而用户在 PathEditingViewModel 中配置的参数 (1.0m × 1.0m × 2.0m) 没有被正确同步到渲染插件，导致物体通行空间模式显示的尺寸不正确。

## 根本原因

1. **PathPointRenderPlugin.cs** 中有硬编码的默认物体参数
2. **PathEditingViewModel.cs** 的物体参数属性setter只更新了UI，没有同步到渲染插件
3. **SystemManagementViewModel** 在切换可视化模式时没有同步最新的物体参数
4. **PathPointRenderPlugin.cs** 中的 `SetObjectParameters()` 方法从未被调用

## 修复方案

### 1. PathEditingViewModel.cs 修改

**修改内容：**
- 为所有物体参数属性setter添加 `SyncObjectParametersToRenderPlugin()` 调用
- 添加 `SyncObjectParametersToRenderPlugin()` 方法
- 在 `UpdatePathVisualization()` 方法中添加参数同步
- 在两个构造函数中添加初始化参数同步

**代码变化：**
```csharp
// 物体参数setter现在会自动同步到渲染插件
public double ObjectLength
{
    get => _objectLength;
    set
    {
        if (SetProperty(ref _objectLength, value))
        {
            SyncObjectParametersToRenderPlugin();
            OnPropertyChanged(nameof(CanExecuteAutoPlanPath));
        }
    }
}

// 同步方法
private void SyncObjectParametersToRenderPlugin()
{
    try
    {
        if (PathPointRenderPlugin.Instance != null)
        {
            PathPointRenderPlugin.Instance.SetObjectParameters(
                ObjectLength,
                ObjectWidth,
                ObjectHeight,
                SafetyMargin);
        }
    }
    catch (Exception ex)
    {
        LogManager.Error($"[物体参数同步] 同步物体参数失败: {ex.Message}", ex);
    }
}
```

### 2. SystemManagementViewModel.cs 修改

**修改内容：**
- 修改 `OnPathVisualizationModeChanged()` 方法，在切换到物体通行空间模式时同步参数
- 修改 `OnObjectHeightModeChanged()` 方法，在高度模式变更时同步参数
- 添加 `SyncObjectParametersFromPathEditingViewModel()` 方法
- 添加 `GetPathEditingViewModel()` 方法

**代码变化：**
```csharp
// 可视化模式切换时同步参数
private void OnPathVisualizationModeChanged()
{
    // ... 现有逻辑 ...

    // 在切换到物体通行空间模式时，同步物体参数
    if (IsObjectSpaceMode)
    {
        SyncObjectParametersFromPathEditingViewModel();
    }
}
```

## 修复效果

1. **实时同步**：用户在路径编辑界面修改物体参数时，参数会立即同步到渲染插件
2. **模式切换同步**：在系统管理界面切换可视化模式时，会自动同步当前的物体参数
3. **初始化同步**：插件启动时会使用正确的用户配置参数，而不是硬编码默认值
4. **多层保障**：提供了多种获取物体参数的方式，确保同步的可靠性

## 测试步骤

1. **启动插件**：打开NavisworksTransport插件
2. **检查默认参数**：验证物体通行空间模式使用的是 1.0m × 1.0m × 2.0m 而不是 2.0m × 1.5m × 2.0m
3. **修改参数**：在路径编辑界面修改物体参数
4. **验证同步**：切换到物体通行空间模式，确认显示的尺寸与设置的参数一致
5. **模式切换测试**：在系统管理界面切换可视化模式，确认参数正确同步

## 技术细节

- **同步触发点**：
  - PathEditingViewModel 属性setter变更时
  - UpdatePathVisualization() 调用时
  - SystemManagementViewModel 模式切换时
  - 插件初始化时

- **获取参数的优先级**：
  1. 从 PathEditingViewModel 获取用户配置的参数
  2. 使用 PathEditingViewModel 的默认值 (1.0, 1.0, 2.0, 0.25)
  3. 避免使用 PathPointRenderPlugin 的硬编码默认值

- **线程安全**：所有同步操作都包含异常处理，确保不会影响主程序运行

## 编译状态

✅ 编译成功 - 所有修改已通过编译验证

修复完成时间：2025-09-14