diff --git a/src/Core/PathPointRenderPlugin.cs b/src/Core/PathPointRenderPlugin.cs index 7786918..c3cba31 100644 --- a/src/Core/PathPointRenderPlugin.cs +++ b/src/Core/PathPointRenderPlugin.cs @@ -113,7 +113,12 @@ namespace NavisworksTransport /// /// 切点样式(深红色) /// - TangentPoint + TangentPoint, + + /// + /// 安全警告样式(红色) + /// + SafetyWarning } /// @@ -1090,18 +1095,32 @@ namespace NavisworksTransport else if (edge.SegmentType == PathSegmentType.Arc && edge.Trajectory != null) { // 圆弧段:检查Trajectory是否有效 + + // 检查是否发生安全截断 + bool hasSafetyTruncation = edge.Trajectory.ActualRadius < edge.Trajectory.RequestedRadius; + + // 如果发生安全截断,使用安全警告样式 + Color arcLineColor = lineColor; + double arcLineOpacity = lineOpacity; + if (hasSafetyTruncation) + { + var warningStyle = GetRenderStyle(RenderStyleName.SafetyWarning); + arcLineColor = warningStyle.Color; + arcLineOpacity = warningStyle.Alpha; + } + var arcMarker = new LineMarker { StartPoint = edge.Trajectory.Ts, EndPoint = edge.Trajectory.Te, - Color = lineColor, + Color = arcLineColor, Radius = GetLineRadius(), SegmentType = PathSegmentType.Arc, Trajectory = edge.Trajectory, SampledPoints = edge.SampledPoints, Height = heightInModelUnits, // 根据模式设置高度 Width = widthInModelUnits, // 根据模式设置宽度 - Opacity = lineOpacity // 根据模式设置透明度 + Opacity = arcLineOpacity // 根据模式设置透明度 }; visualization.PathLineMarkers.Add(arcMarker); @@ -1349,6 +1368,9 @@ namespace NavisworksTransport case RenderStyleName.TangentPoint: return new RenderStyle(Color.FromByteRGB(244, 67, 54), 0.8); // Material Red切点,20%透明 + case RenderStyleName.SafetyWarning: + return new RenderStyle(Color.FromByteRGB(244, 67, 54), 0.85); // Material Red安全警告,15%透明 + default: return new RenderStyle(Color.White, 1.0); // 默认白色,完全不透明 }