NavisworksTransport/.agents/skills/project-tools/examples/common-usage.md

179 lines
4.4 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创建并显示对话框
```csharp
using NavisworksTransport.Utils;
public class MyViewModel
{
private MyDialog _dialog;
public void ShowDialog()
{
// 防止重复打开
if (_dialog != null && _dialog.IsVisible)
{
_dialog.Activate();
return;
}
// 创建对话框
_dialog = new MyDialog();
// ✅ 使用 DialogHelper 设置 Owner
DialogHelper.SetOwnerSafely(_dialog);
// 显示非模态对话框
_dialog.Show();
// 清理引用
_dialog.Closed += (s, e) => _dialog = null;
}
}
```
## 场景2带单位转换的计算
```csharp
using NavisworksTransport.Utils;
public class PathPlanner
{
/// <summary>
/// 设置网格大小
/// </summary>
/// <param name="cellSizeInMeters">网格单元大小(米)</param>
public void SetCellSize(double cellSizeInMeters)
{
// ✅ 转换为模型单位存储
double cellSize = UnitsConverter.ConvertFromMeters(cellSizeInMeters);
// 后续计算使用 cellSize模型单位
_grid = new GridMap(cellSize);
}
/// <summary>
/// 获取路径长度(用于显示)
/// </summary>
public string GetPathLengthDisplay(PathRoute route)
{
// ✅ 转换为米显示
double lengthInMeters = UnitsConverter.ConvertToMeters(route.TotalLength);
return $"{lengthInMeters:F2} 米";
}
}
```
## 场景3完整的操作日志记录
```csharp
using NavisworksTransport.Utils;
public class PathService
{
public async Task<PathRoute> CreatePathAsync(PathParameters parameters)
{
LogManager.Info("[路径创建] === 开始创建路径 ===");
LogManager.Info($"[路径创建] 参数: {parameters}");
try
{
// 验证参数
if (!ValidateParameters(parameters))
{
LogManager.Warning("[路径创建] 参数验证失败");
return null;
}
// 执行创建
var route = await GeneratePathAsync(parameters);
LogManager.Info($"[路径创建] 成功: {route.Name}, ID: {route.Id}");
LogManager.Info($"[路径创建] 长度: {route.TotalLength:F2} 米, 点数: {route.Points.Count}");
return route;
}
catch (Exception ex)
{
// ✅ 记录完整异常信息
LogManager.Error($"[路径创建] 失败: {ex.Message}", ex);
throw;
}
finally
{
LogManager.Info("[路径创建] === 创建完成 ===");
}
}
}
```
## 场景4几何计算
```csharp
using NavisworksTransport.Utils;
public class PathAnalyzer
{
/// <summary>
/// 计算路径总长度
/// </summary>
public double CalculateTotalLength(List<Point3D> points)
{
double totalLength = 0;
for (int i = 0; i < points.Count - 1; i++)
{
// ✅ 使用 GeometryHelper
totalLength += GeometryHelper.Distance(points[i], points[i + 1]);
}
return totalLength;
}
/// <summary>
/// 检查转弯是否过急
/// </summary>
public bool IsTurnTooSharp(Point3D prev, Point3D current, Point3D next, double maxAngle)
{
Vector3D v1 = GeometryHelper.Subtract(current, prev);
Vector3D v2 = GeometryHelper.Subtract(next, current);
double angle = GeometryHelper.AngleBetweenDegrees(v1, v2);
return angle > maxAngle;
}
}
```
## 场景5确认对话框
```csharp
using NavisworksTransport.Utils;
using System.Windows;
public class PathViewModel
{
public void DeletePath(PathRoute route)
{
// ✅ 使用 DialogHelper 显示确认对话框
var result = DialogHelper.ShowMessageBox(
$"确定要删除路径 \"{route.Name}\" 吗?\n此操作不可撤销。",
"确认删除",
MessageBoxButton.YesNo,
MessageBoxImage.Warning
);
if (result != MessageBoxResult.Yes)
{
LogManager.Info($"[删除] 用户取消删除: {route.Name}");
return;
}
// 执行删除
_pathPlanningManager.DeleteRoute(route.Id);
LogManager.Info($"[删除] 路径已删除: {route.Name}");
}
}
```