fix: 报告对话框碰撞数对齐历史表格(碰撞对 vs 唯一对象语义明确)
数字来源分析: - 历史表格/批处理列表 = 碰撞对总数(ClashDetectiveCollisionCount——副实例 Clash 确认的碰撞事件数,同一物体多帧/多次碰撞计多对) - 报告对话框原显示 = 重建对象明细数(去重后的唯一对象列表—— 每对象一条明细,数量 < 碰撞对) 修复:CollectAllCollisionData 优先使用检测记录 CollisionCount (与历史表格一致);报告对话框两个数字语义明确: - 总碰撞数 = 碰撞对(7/23) - 碰撞构件 = 唯一对象(5/8)
This commit is contained in:
parent
4ced5eb77b
commit
1700eeaa52
@ -711,7 +711,25 @@ namespace NavisworksTransport.Commands
|
|||||||
allCollisions.AddRange(testCollisionsRaw);
|
allCollisions.AddRange(testCollisionsRaw);
|
||||||
|
|
||||||
// 统计碰撞总数
|
// 统计碰撞总数
|
||||||
|
// 🔥 优先使用检测记录的 CollisionCount(碰撞对总数,与历史表格一致):
|
||||||
|
// DB 重建的对象明细是去重后的唯一对象列表(数量可能小于碰撞对——
|
||||||
|
// 同一物体与运动物体在多个帧/多次碰撞时,碰撞对 > 唯一对象)
|
||||||
result.ClashDetectiveCollisionCount = testCollisionsRaw.Count;
|
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} 个碰撞");
|
LogManager.Debug($"测试 '{targetTestName}' 包含 {testCollisionsRaw.Count} 个碰撞");
|
||||||
|
|
||||||
// 统计被撞物体(缓存中已经是复合对象,不需要再去重)
|
// 统计被撞物体(缓存中已经是复合对象,不需要再去重)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user