增加去重日志,发现单item有2个几何体导致碰撞结果重复,暂时不修改逻辑
This commit is contained in:
parent
aa0fdc2cec
commit
fd05ffce3c
@ -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
|
||||
{
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user