将可视化元素统一按网格大小,动态调整尺寸

This commit is contained in:
tian 2025-09-10 17:07:49 +08:00
parent 5c21a8569b
commit 13bc16dd62

View File

@ -614,18 +614,9 @@ namespace NavisworksTransport
/// <returns>网格可视化半径</returns>
private double GetRadiusForGridVisualization(double gridSizeInMeters = 0.5)
{
// 实现自适应网格点大小逻辑:
// - 小于0.5米用网格大小的1/5
// - 大于等于0.5米固定使用0.1米
double radiusInMeters;
if (gridSizeInMeters < 0.5)
{
radiusInMeters = gridSizeInMeters / 5.0;
}
else
{
radiusInMeters = 0.1;
}
// 使用标准尺寸的1/5作为网格点尺寸
double standardRadiusInMeters = GetStandardRadiusInMeters();
double radiusInMeters = standardRadiusInMeters / 5.0;
double metersToModelUnits = GetMetersToModelUnitsConversionFactor();
return radiusInMeters * metersToModelUnits;
@ -656,7 +647,12 @@ namespace NavisworksTransport
/// <returns>连线半径</returns>
private double GetLineRadius()
{
double lineRadiusInMeters = 0.2;
// 获取标准尺寸(起点尺寸)
double standardRadiusInMeters = GetStandardRadiusInMeters();
// 连线半径为标准尺寸的40%
double lineRadiusInMeters = standardRadiusInMeters * 0.4;
return lineRadiusInMeters * GetMetersToModelUnitsConversionFactor();
}
@ -1103,14 +1099,37 @@ namespace NavisworksTransport
#region
/// <returns>标准尺寸(米)</returns>
/// <summary>
/// 根据路径点类型和真实文档单位获取适当的半径
/// 目标路径点半径为0.5米物理尺寸,起点/终点为0.8米物理尺寸
/// 计算标准尺寸(起点尺寸),其他元素以此为基准按比例计算
/// </summary>
/// <returns>标准尺寸(米)</returns>
private double GetStandardRadiusInMeters()
{
// 起点尺寸为网格大小的100%,并限制在合理范围内
double standardRadius = _currentGridSizeInMeters * 1.0;
// 边界限制最小0.1米最大0.5米
return Math.Max(0.1, Math.Min(0.5, standardRadius));
}
public double GetRadiusForPointType(PathPointType pointType)
{
// 基础半径米为单位起点和终点为0.5米路径点为0.4米
double baseRadiusInMeters = pointType == PathPointType.WayPoint ? 0.4 : 0.5;
// 获取标准尺寸(起点尺寸)
double standardRadiusInMeters = GetStandardRadiusInMeters();
// 根据点类型应用比例系数
double baseRadiusInMeters;
if (pointType == PathPointType.WayPoint)
{
// 路径点为标准尺寸的80%
baseRadiusInMeters = standardRadiusInMeters * 0.8;
}
else
{
// 起点/终点使用标准尺寸100%
baseRadiusInMeters = standardRadiusInMeters * 1.0;
}
// 获取真实文档单位转换系数
double metersToModelUnits = GetMetersToModelUnitsConversionFactor();
@ -1118,7 +1137,7 @@ namespace NavisworksTransport
// 转换为模型单位
double radiusInModelUnits = baseRadiusInMeters * metersToModelUnits;
//LogManager.WriteLog($"[半径计算] 类型={pointType}, 基础半径={baseRadiusInMeters}m, 转换系数={metersToModelUnits:F2}, 最终半径={radiusInModelUnits:F2}");
//LogManager.WriteLog($"[半径计算] 类型={pointType}, 网格大小={_currentGridSizeInMeters:F2}m, 标准尺寸={standardRadiusInMeters:F2}m, 基础半径={baseRadiusInMeters:F2}m, 最终半径={radiusInModelUnits:F2}");
return radiusInModelUnits;
}