增加去重日志,发现单item有2个几何体导致碰撞结果重复,暂时不修改逻辑

This commit is contained in:
tian 2026-01-06 15:45:53 +08:00
parent aa0fdc2cec
commit fd05ffce3c
3 changed files with 42 additions and 13 deletions

View File

@ -541,12 +541,6 @@ namespace NavisworksTransport.Core.Animation
double yawRadians = ComputeYawOnPath(i, allSampledPoints, edgeIndex, edgeProgress);
// 添加朝向计算日志
if (edge.SegmentType == PathSegmentType.Arc)
{
LogManager.Debug($"帧[{i}] 圆弧段: 边索引={edgeIndex}, 边进度={edgeProgress:F4}, 朝向={yawRadians * 180.0 / Math.PI:F2}度, 位置=({framePosition.X:F3},{framePosition.Y:F3},{framePosition.Z:F3})");
}
// 创建帧并检测碰撞
var frame = new AnimationFrame
{

View File

@ -360,6 +360,26 @@ namespace NavisworksTransport
LogManager.Info($"[分组测试] 智能去重: {validCollisions.Count} 个检测点 -> {groupedCollisions.Count} 个唯一碰撞对");
// 调试:打印所有去重后的碰撞对信息
LogManager.Debug($"[分组测试] 去重后的碰撞对列表:");
int groupIndex = 0;
foreach (var group in groupedCollisions)
{
var firstCollision = group.First();
var item1 = firstCollision.Item1;
var item2 = firstCollision.Item2;
// 使用 GetModelItemWithAncestorFallback 获取名称(向上查找父节点)
var item1Name = item1 != null ? NavisworksApiHelper.GetModelItemNameWithAncestorFallback(item1) : "null";
var item2Name = item2 != null ? NavisworksApiHelper.GetModelItemNameWithAncestorFallback(item2) : "null";
var item1Hash = item1?.GetHashCode() ?? -1;
var item2Hash = item2?.GetHashCode() ?? -1;
var frameCount = group.Count();
LogManager.Debug($" [{groupIndex}] Item1={item1Name}(Hash:{item1Hash}), Item2={item2Name}(Hash:{item2Hash}), 帧数={frameCount}");
groupIndex++;
}
var collisionGroup = new ClashResultGroup
{
DisplayName = $"物流碰撞检测组 ({groupedCollisions.Count} 个唯一碰撞对)"
@ -505,7 +525,28 @@ namespace NavisworksTransport
}
}
LogManager.Info($"[分组测试] 智能去重完成: 确认碰撞 {confirmedCount} 组, 跳过 {skippedCount} 个冗余检测点");
LogManager.Info($"[分组测试] ClashDetective检测完成: 确认碰撞 {confirmedCount} 组, 跳过 {skippedCount} 个冗余检测点");
// 调试:打印所有确认的碰撞对信息
LogManager.Debug($"[分组测试] 确认的碰撞对列表:");
int confirmedIndex = 0;
foreach (var result in collisionGroup.Children)
{
if (result is ClashResult clashResult)
{
var item1 = clashResult.Item1;
var item2 = clashResult.Item2;
// 使用 GetModelItemWithAncestorFallback 获取名称(向上查找父节点)
var item1Name = item1 != null ? NavisworksApiHelper.GetModelItemNameWithAncestorFallback(item1) : "null";
var item2Name = item2 != null ? NavisworksApiHelper.GetModelItemNameWithAncestorFallback(item2) : "null";
var item1Hash = item1?.GetHashCode() ?? -1;
var item2Hash = item2?.GetHashCode() ?? -1;
LogManager.Debug($" [{confirmedIndex}] Item1={item1Name}(Hash:{item1Hash}), Item2={item2Name}(Hash:{item2Hash})");
confirmedIndex++;
}
}
// 第三步:将分组添加到主测试
if (collisionGroup.Children.Count > 0)

View File

@ -205,12 +205,6 @@ namespace NavisworksTransport.Core.Spatial
sw.Stop();
LogManager.Debug($"[空间索引] 范围查询完成: " +
$"位置=({position.X:F2}, {position.Y:F2}, {position.Z:F2}), " +
$"半径={searchRadiusInModelUnits:F2}, " +
$"结果={nearbyObjects.Count} 个对象, " +
$"耗时={sw.Elapsed.TotalMilliseconds:F2}ms");
return nearbyObjects;
}
catch (Exception ex)