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

46 lines
1.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 路径点插入位置修复测试
## 问题描述
修复了预览连线功能工作正常,但确认添加路径点时,新的路径点被错误地添加到路径末尾,而不是插入到预览时计算出来的正确位置的问题。
## 修改内容
### 1. 在 PathPlanningManager 中添加字段保存预览插入的索引位置
```csharp
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的位置