将可视化元素统一按网格大小,动态调整尺寸
This commit is contained in:
parent
5c21a8569b
commit
13bc16dd62
@ -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;
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user