增加geometry4sharp的评估

This commit is contained in:
tian 2025-10-14 11:17:01 +08:00
parent bd7eeb3d46
commit 687b342e0f
2 changed files with 1195 additions and 45 deletions

File diff suppressed because it is too large Load Diff

View File

@ -1328,51 +1328,6 @@ namespace NavisworksTransport.Core.Animation
return Transform3D.CreateTranslation(new Vector3D(center.X, center.Y, center.Z));
}
/// <summary>
/// 使用 Clash Detective 集成进行碰撞检测并使用缓存的碰撞结果
/// </summary>
private void CheckAndHighlightCollisionsWithClashDetective()
{
try
{
if (_animatedObject == null)
return;
// 使用 Clash Detective 集成进行碰撞检测,传递检测间隙参数
var collisionResults = ClashDetectiveIntegration.Instance.DetectCollisions(_animatedObject, null, _detectionGap);
// 高亮显示碰撞对象
ClashDetectiveIntegration.Instance.HighlightCollisions(collisionResults);
// 缓存碰撞结果,动画结束后统一处理
if (collisionResults.Count > 0)
{
LogManager.Info($"=== [动画运行中] 检测到 {collisionResults.Count} 个碰撞,开始记录详细位置 ===");
// 缓存所有碰撞结果,包含位置信息
var animatedObjectPosition = GetObjectPosition(_animatedObject);
LogManager.Info($"[动画位置] 动画对象 {_animatedObject.DisplayName}: ({animatedObjectPosition.X:F2},{animatedObjectPosition.Y:F2},{animatedObjectPosition.Z:F2})");
int collisionIndex = 0;
foreach (var collision in collisionResults)
{
collisionIndex++;
var collisionObjectPosition = GetObjectPosition(collision.Item2);
ClashDetectiveIntegration.Instance.CacheCollisionDuringAnimation(_animatedObject, animatedObjectPosition, collision.Item2, collisionObjectPosition);
}
LogManager.Info($"=== [动画运行中] 位置记录完成 ===");
}
LogManager.Debug($"碰撞检测完成: {collisionResults.Count} 个碰撞 (已缓存)");
}
catch (Exception ex)
{
LogManager.Error($"碰撞检测失败: {ex.Message}");
}
}
/// <summary>
/// 设置动态碰撞检测(实时模式,集成 Clash Detective
/// </summary>