From 7fc62537d1940ca3e8e87bdcf4a325a3eb00362a Mon Sep 17 00:00:00 2001 From: tian <11429339@qq.com> Date: Tue, 6 Jan 2026 09:53:38 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B0=86=E5=AE=89=E5=85=A8=E9=98=B6=E6=AE=B5?= =?UTF-8?q?=E7=9A=84=E5=BC=A7=E7=BA=BF=E6=AE=B5=E6=B8=B2=E6=9F=93=E4=B8=BA?= =?UTF-8?q?=E5=91=8A=E8=AD=A6=E6=A0=B7=E5=BC=8F=EF=BC=88=E7=BA=A2=E8=89=B2?= =?UTF-8?q?=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Core/PathPointRenderPlugin.cs | 28 +++++++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) 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); // 默认白色,完全不透明 }