NavisworksTransport/test_insert_position.md
tian b7cbc64dd4 修复路径点插入位置问题,新路径点现在会插入到预览连线显示的正确位置
1. 在PathPlanningManager中添加_previewInsertIndex字段保存预览插入索引
2. 添加FindNearestLineSegmentWithIndex等方法计算最近线段和插入位置
3. 修改SetPreviewPoint方法,在设置预览点时计算并保存插入索引
4. 修改ConfirmPreviewPoint方法,使用Insert()而不是Add()进行插入操作
5. 修改ClearPreviewPoint方法,清除预览时也清除保存的插入索引

问题:之前预览连线工作正常能显示正确插入位置,但确认添加时新路径点被错误地添加到路径末尾
解决:现在新路径点会插入到预览时计算出的正确位置,确保路径点顺序符合用户期望

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-30 21:54:15 +08:00

1.9 KiB
Raw Blame History

路径点插入位置修复测试

问题描述

修复了预览连线功能工作正常,但确认添加路径点时,新的路径点被错误地添加到路径末尾,而不是插入到预览时计算出来的正确位置的问题。

修改内容

1. 在 PathPlanningManager 中添加字段保存预览插入的索引位置

private int _previewInsertIndex = -1; // 保存预览点应该插入的索引位置

2. 添加了查找最近线段的方法

  • FindNearestLineSegmentWithIndex() - 查找最近线段并返回插入索引
  • CalculatePointToLineSegmentDistance() - 计算点到线段距离
  • CalculateDistance() - 计算两点间距离

3. 修改 SetPreviewPoint 方法

  • 在设置预览点时,计算并保存最佳插入位置索引
  • 当路径中有至少2个点时调用 FindNearestLineSegmentWithIndex() 计算插入位置

4. 修改 ConfirmPreviewPoint 方法

  • 使用保存的 _previewInsertIndex 进行 Insert() 操作,而不是 Add()
  • 如果没有有效插入索引,则回退到原来的添加到末尾的行为

5. 修改 ClearPreviewPoint 方法

  • 清除预览时也清除保存的插入索引

测试步骤

  1. 创建新路径添加至少2个路径点
  2. 启用添加路径点模式
  3. 将鼠标移动到两个现有路径点之间的位置
  4. 观察预览连线是否正确显示插入位置
  5. 点击确认添加路径点
  6. 验证新路径点是否插入到预览显示的正确位置,而不是路径末尾

预期结果

  • 预览连线正确显示新路径点应该插入的位置
  • 确认添加时,新路径点插入到预览时计算的正确位置
  • 路径点顺序符合用户的期望

技术细节

  • 插入索引的计算基于点到线段的最短距离
  • 使用了几何算法计算点到线段的垂直距离
  • 插入索引是最近线段的第二个点的索引位置
  • 例如如果最近线段是点1到点2新点应该插入到索引2的位置