3.4 KiB
3.4 KiB
NavisworksTransport 项目工具类使用指南
概述
本skill记录 NavisworksTransport 项目中的所有工具类及其使用方法。在编写代码前,请务必查看此文档,优先使用现有工具类,避免重复造轮子。
工具类总览
| 工具类 | 文件 | 用途 | 优先级 |
|---|---|---|---|
| DialogHelper | src/Utils/DialogHelper.cs |
对话框Owner设置和置顶显示 | ⭐⭐⭐ 必须 |
| UnitsConverter | src/Utils/UnitsConverter.cs |
单位转换(米↔模型单位) | ⭐⭐⭐ 必须 |
| LogManager | src/Utils/LogManager.cs |
日志记录 | ⭐⭐⭐ 必须 |
| GeometryHelper | src/Utils/GeometryHelper.cs |
3D几何计算 | ⭐⭐⭐ |
| PathHelper | src/Utils/PathHelper.cs |
路径相关工具 | ⭐⭐⭐ |
| CoordinateConverter | src/Utils/CoordinateConverter.cs |
坐标系转换 | ⭐⭐ |
| ModelHighlightHelper | src/Utils/ModelHighlightHelper.cs |
模型高亮显示 | ⭐⭐ |
| NavisworksSelectionHelper | src/Utils/NavisworksSelectionHelper.cs |
选择集操作 | ⭐⭐ |
| ViewpointHelper | src/Utils/ViewpointHelper.cs |
视点操作 | ⭐⭐ |
| SectionClipHelper | src/Utils/SectionClipHelper.cs |
剖切操作 | ⭐ |
快速参考
对话框开发
// ❌ 错误:直接设置Owner,可能在Navisworks环境中失败
var dialog = new MyDialog();
dialog.Owner = Application.Current.MainWindow; // 可能抛出异常!
dialog.Show();
// ✅ 正确:使用 DialogHelper
var dialog = new MyDialog();
DialogHelper.SetOwnerSafely(dialog); // 自动处理Navisworks环境
dialog.Show();
单位转换
// ❌ 错误:硬编码转换因子
double meters = modelUnits * 0.001; // 错误!不同文档单位不同
// ✅ 正确:使用 UnitsConverter
double meters = UnitsConverter.ConvertToMeters(modelUnits);
double modelUnits = UnitsConverter.ConvertFromMeters(meters);
日志记录
// ❌ 错误:使用Console或直接输出
Console.WriteLine($"Error: {ex.Message}"); // 不可见!
// ✅ 正确:使用 LogManager
LogManager.Info("操作成功");
LogManager.Warning("警告信息");
LogManager.Error("错误信息", exception);
详细文档
使用检查清单
在编写新功能前,请检查:
- 需要显示对话框?→ 使用 DialogHelper
- 涉及单位转换?→ 使用 UnitsConverter
- 需要记录日志?→ 使用 LogManager
- 需要几何计算?→ 使用 GeometryHelper
- 需要高亮模型?→ 使用 ModelHighlightHelper
- 需要处理选择集?→ 使用 NavisworksSelectionHelper
禁止行为
以下行为在项目中是禁止的:
- ❌ 直接设置
Window.Owner = Application.Current.MainWindow - ❌ 硬编码单位转换因子(如
* 0.001) - ❌ 使用
Console.WriteLine输出日志 - ❌ 自己实现距离/角度计算(已有 GeometryHelper)
- ❌ 自己实现集合的线程安全包装(使用 ThreadSafeObservableCollection)
扩展阅读
- 项目规范:
AGENTS.md - UI开发规范:
doc/guide/design_principles.md - Navisworks API 使用:
SKILL.md(nw-api)