NavisworksTransport/src/Core/Config/SystemConfig.cs

259 lines
7.6 KiB
C#

namespace NavisworksTransport.Core.Config
{
/// <summary>
/// 系统配置根类
/// </summary>
public class SystemConfig
{
/// <summary>
/// 网格生成配置
/// </summary>
public GridGenerationConfig GridGeneration { get; set; }
/// <summary>
/// 路径规划配置
/// </summary>
public PathPlanningConfig PathPlanning { get; set; }
/// <summary>
/// 路径编辑配置
/// </summary>
public PathEditingConfig PathEditing { get; set; }
/// <summary>
/// 可视化配置
/// </summary>
public VisualizationConfig Visualization { get; set; }
/// <summary>
/// 动画配置
/// </summary>
public AnimationConfig Animation { get; set; }
/// <summary>
/// 物流属性配置
/// </summary>
public LogisticsConfig Logistics { get; set; }
/// <summary>
/// 坐标系配置
/// </summary>
public CoordinateSystemConfig CoordinateSystem { get; set; }
}
/// <summary>
/// 网格生成配置
/// </summary>
public class GridGenerationConfig
{
}
/// <summary>
/// 路径规划配置
/// </summary>
public class PathPlanningConfig
{
}
/// <summary>
/// 路径编辑配置
/// </summary>
public class PathEditingConfig
{
/// <summary>
/// 网格单元大小(米)
/// </summary>
public double CellSizeMeters { get; set; }
/// <summary>
/// 最大高度差(米)
/// </summary>
public double MaxHeightDiffMeters { get; set; }
/// <summary>
/// 车辆长度(米)
/// </summary>
public double VehicleLengthMeters { get; set; }
/// <summary>
/// 车辆宽度(米)
/// </summary>
public double VehicleWidthMeters { get; set; }
/// <summary>
/// 车辆高度(米)
/// </summary>
public double VehicleHeightMeters { get; set; }
/// <summary>
/// 安全间隙(米)
/// </summary>
public double SafetyMarginMeters { get; set; }
/// <summary>
/// 路径默认转弯半径(米)
/// </summary>
public double DefaultPathTurnRadiusMeters { get; set; }
/// <summary>
/// 圆弧采样步长(米)
/// </summary>
public double ArcSamplingStepMeters { get; set; }
// === 模型单位接口(用于内部计算) ===
/// <summary>
/// 网格单元大小(模型单位)
/// </summary>
public double CellSize => CellSizeMeters * Utils.UnitsConverter.GetMetersToUnitsConversionFactor();
/// <summary>
/// 最大高度差(模型单位)
/// </summary>
public double MaxHeightDiff => MaxHeightDiffMeters * Utils.UnitsConverter.GetMetersToUnitsConversionFactor();
/// <summary>
/// 车辆长度(模型单位)
/// </summary>
public double VehicleLength => VehicleLengthMeters * Utils.UnitsConverter.GetMetersToUnitsConversionFactor();
/// <summary>
/// 车辆宽度(模型单位)
/// </summary>
public double VehicleWidth => VehicleWidthMeters * Utils.UnitsConverter.GetMetersToUnitsConversionFactor();
/// <summary>
/// 车辆高度(模型单位)
/// </summary>
public double VehicleHeight => VehicleHeightMeters * Utils.UnitsConverter.GetMetersToUnitsConversionFactor();
/// <summary>
/// 安全间隙(模型单位)
/// </summary>
public double SafetyMargin => SafetyMarginMeters * Utils.UnitsConverter.GetMetersToUnitsConversionFactor();
/// <summary>
/// 路径默认转弯半径(模型单位)
/// </summary>
public double DefaultPathTurnRadius => DefaultPathTurnRadiusMeters * Utils.UnitsConverter.GetMetersToUnitsConversionFactor();
/// <summary>
/// 圆弧采样步长(模型单位)
/// </summary>
public double ArcSamplingStep => ArcSamplingStepMeters * Utils.UnitsConverter.GetMetersToUnitsConversionFactor();
}
/// <summary>
/// 可视化配置
/// </summary>
public class VisualizationConfig
{
/// <summary>
/// 地图边距比例
/// </summary>
public double MarginRatio { get; set; }
}
/// <summary>
/// 动画配置
/// </summary>
public class AnimationConfig
{
/// <summary>
/// 动画帧率(帧/秒)
/// </summary>
public int FrameRate { get; set; }
/// <summary>
/// 动画持续时间(秒)
/// </summary>
public double DurationSeconds { get; set; }
/// <summary>
/// 检测容差(米)- 用于ClashDetective精确检测
/// </summary>
public double DetectionToleranceMeters { get; set; }
/// <summary>
/// 空间索引格子大小(米)- 用于动画碰撞检测的空间索引
/// </summary>
public double SpatialIndexCellSizeMeters { get; set; }
// === 模型单位接口(用于内部计算) ===
/// <summary>
/// 检测容差(模型单位)- 用于ClashDetective精确检测
/// </summary>
public double DetectionTolerance => DetectionToleranceMeters * Utils.UnitsConverter.GetMetersToUnitsConversionFactor();
/// <summary>
/// 空间索引格子大小(模型单位)- 用于动画碰撞检测的空间索引
/// </summary>
public double SpatialIndexCellSize => SpatialIndexCellSizeMeters * Utils.UnitsConverter.GetMetersToUnitsConversionFactor();
}
/// <summary>
/// 物流属性配置
/// </summary>
public class LogisticsConfig
{
/// <summary>
/// 可通行性
/// </summary>
public bool Traversable { get; set; }
/// <summary>
/// 优先级
/// </summary>
public int Priority { get; set; }
/// <summary>
/// 高度限制(米)
/// </summary>
public double HeightLimitMeters { get; set; }
/// <summary>
/// 速度限制(米/秒)
/// </summary>
public double SpeedLimitMetersPerSecond { get; set; }
/// <summary>
/// 宽度限制(米)
/// </summary>
public double WidthLimitMeters { get; set; }
// === 模型单位接口(用于内部计算) ===
/// <summary>
/// 高度限制(模型单位)
/// </summary>
public double HeightLimit => HeightLimitMeters * Utils.UnitsConverter.GetMetersToUnitsConversionFactor();
/// <summary>
/// 速度限制(模型单位/秒)
/// </summary>
public double SpeedLimit => SpeedLimitMetersPerSecond * Utils.UnitsConverter.GetMetersToUnitsConversionFactor();
/// <summary>
/// 宽度限制(模型单位)
/// </summary>
public double WidthLimit => WidthLimitMeters * Utils.UnitsConverter.GetMetersToUnitsConversionFactor();
}
/// <summary>
/// 坐标系配置
/// </summary>
public class CoordinateSystemConfig
{
/// <summary>
/// 坐标系类型
/// 可选值: "AutoDetect", "ZUp", "YUp"
/// AutoDetect: 基于 Document.UpVector 自动检测
/// ZUp: 强制使用 Z-Up 坐标系
/// YUp: 强制使用 Y-Up 坐标系
/// </summary>
public string Type { get; set; } = "AutoDetect";
}
}