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; }