NavisworksTransport/.agents/skills/project-tools/SKILL.md

3.4 KiB
Raw Blame History

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

禁止行为

以下行为在项目中是禁止的:

  1. 直接设置 Window.Owner = Application.Current.MainWindow
  2. 硬编码单位转换因子(如 * 0.001
  3. 使用 Console.WriteLine 输出日志
  4. 自己实现距离/角度计算(已有 GeometryHelper
  5. 自己实现集合的线程安全包装(使用 ThreadSafeObservableCollection

扩展阅读

  • 项目规范:AGENTS.md
  • UI开发规范doc/guide/design_principles.md
  • Navisworks API 使用:SKILL.md (nw-api)