diff --git a/src/Core/PathPointRenderPlugin.cs b/src/Core/PathPointRenderPlugin.cs
index 47020b4..d0c9564 100644
--- a/src/Core/PathPointRenderPlugin.cs
+++ b/src/Core/PathPointRenderPlugin.cs
@@ -614,18 +614,9 @@ namespace NavisworksTransport
/// 网格可视化半径
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
/// 连线半径
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 私有辅助方法
+ /// 标准尺寸(米)
///
- /// 根据路径点类型和真实文档单位获取适当的半径
- /// 目标:路径点半径为0.5米物理尺寸,起点/终点为0.8米物理尺寸
+ /// 计算标准尺寸(起点尺寸),其他元素以此为基准按比例计算
///
+ /// 标准尺寸(米)
+ 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;
}