From 1700eeaa52a53dd38a2c19a9a2496987611fc413 Mon Sep 17 00:00:00 2001 From: tian <11429339@qq.com> Date: Thu, 6 Aug 2026 23:38:39 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E6=8A=A5=E5=91=8A=E5=AF=B9=E8=AF=9D?= =?UTF-8?q?=E6=A1=86=E7=A2=B0=E6=92=9E=E6=95=B0=E5=AF=B9=E9=BD=90=E5=8E=86?= =?UTF-8?q?=E5=8F=B2=E8=A1=A8=E6=A0=BC=EF=BC=88=E7=A2=B0=E6=92=9E=E5=AF=B9?= =?UTF-8?q?=20vs=20=E5=94=AF=E4=B8=80=E5=AF=B9=E8=B1=A1=E8=AF=AD=E4=B9=89?= =?UTF-8?q?=E6=98=8E=E7=A1=AE=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 数字来源分析: - 历史表格/批处理列表 = 碰撞对总数(ClashDetectiveCollisionCount——副实例 Clash 确认的碰撞事件数,同一物体多帧/多次碰撞计多对) - 报告对话框原显示 = 重建对象明细数(去重后的唯一对象列表—— 每对象一条明细,数量 < 碰撞对) 修复:CollectAllCollisionData 优先使用检测记录 CollisionCount (与历史表格一致);报告对话框两个数字语义明确: - 总碰撞数 = 碰撞对(7/23) - 碰撞构件 = 唯一对象(5/8) --- src/Commands/GenerateCollisionReportCommand.cs | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/Commands/GenerateCollisionReportCommand.cs b/src/Commands/GenerateCollisionReportCommand.cs index 4b4ee1b..77f1dc4 100644 --- a/src/Commands/GenerateCollisionReportCommand.cs +++ b/src/Commands/GenerateCollisionReportCommand.cs @@ -711,7 +711,25 @@ namespace NavisworksTransport.Commands allCollisions.AddRange(testCollisionsRaw); // 统计碰撞总数 + // 🔥 优先使用检测记录的 CollisionCount(碰撞对总数,与历史表格一致): + // DB 重建的对象明细是去重后的唯一对象列表(数量可能小于碰撞对—— + // 同一物体与运动物体在多个帧/多次碰撞时,碰撞对 > 唯一对象) result.ClashDetectiveCollisionCount = testCollisionsRaw.Count; + try + { + var pathDatabase = PathPlanningManager.Instance?.GetPathDatabase(); + var record = pathDatabase?.GetDetectionResultByTestName(targetTestName); + if (record != null && record.CollisionCount > 0) + { + result.ClashDetectiveCollisionCount = record.CollisionCount; + LogManager.Info($"碰撞对总数使用检测记录值: {record.CollisionCount}(重建对象 {testCollisionsRaw.Count} 个)"); + } + } + catch (Exception countEx) + { + LogManager.Warning($"读取检测记录碰撞数失败: {countEx.Message}"); + } + LogManager.Debug($"测试 '{targetTestName}' 包含 {testCollisionsRaw.Count} 个碰撞"); // 统计被撞物体(缓存中已经是复合对象,不需要再去重)