纠正安全间隙多次转换的bug;更新运动和指定对象标识为PathId以确保唯一性
This commit is contained in:
parent
4d28ec5547
commit
971c993bb7
@ -1036,14 +1036,14 @@ namespace NavisworksTransport.Core.Animation
|
|||||||
|
|
||||||
// 使用包围盒距离检测方法
|
// 使用包围盒距离检测方法
|
||||||
double distance = BoundingBoxGeometryUtils.CalculateDistance(virtualBoundingBox, colliderBox);
|
double distance = BoundingBoxGeometryUtils.CalculateDistance(virtualBoundingBox, colliderBox);
|
||||||
var safetyMarginInModelUnits = UnitsConverter.ConvertFromMeters(_safetyMargin);
|
// _safetyMargin 已经是模型单位(在CreateAnimation中已转换),直接使用
|
||||||
bool intersects = distance <= safetyMarginInModelUnits;
|
bool intersects = distance <= _safetyMargin;
|
||||||
|
|
||||||
if (intersects)
|
if (intersects)
|
||||||
{
|
{
|
||||||
// LogManager.Debug($"帧 {i} 检测到碰撞: {_animatedObject.DisplayName} <-> {collider.DisplayName}, 距离: {distance:F4},阈值: {safetyMarginInModelUnits:F4}");
|
LogManager.Debug($"帧 {i} 检测到碰撞: {_animatedObject.DisplayName} <-> {collider.DisplayName}, 距离: {distance:F4},阈值: {_safetyMargin:F4}");
|
||||||
// LogManager.Debug($"移动物体位置: {framePosition.X:F2},{framePosition.Y:F2},{framePosition.Z:F2}");
|
LogManager.Debug($"移动物体位置: {framePosition.X:F2},{framePosition.Y:F2},{framePosition.Z:F2}");
|
||||||
// LogManager.Debug($"被撞物体位置:{GetObjectPosition(collider).X:F2},{GetObjectPosition(collider).Y:F2},{GetObjectPosition(collider).Z:F2}");
|
LogManager.Debug($"被撞物体位置:{GetObjectPosition(collider).X:F2},{GetObjectPosition(collider).Y:F2},{GetObjectPosition(collider).Z:F2}");
|
||||||
|
|
||||||
var collisionResult = new CollisionResult
|
var collisionResult = new CollisionResult
|
||||||
{
|
{
|
||||||
@ -1234,7 +1234,7 @@ namespace NavisworksTransport.Core.Animation
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 每一帧都打印当前朝向
|
// 每一帧都打印当前朝向
|
||||||
LogManager.Debug($"帧[{frameIndex}] 圆弧段[{currentEdgeIndex}]: 进度={edgeProgress:F4}, 当前朝向={currentYaw * 180.0 / Math.PI:F2}度");
|
// LogManager.Debug($"帧[{frameIndex}] 圆弧段[{currentEdgeIndex}]: 进度={edgeProgress:F4}, 当前朝向={currentYaw * 180.0 / Math.PI:F2}度");
|
||||||
|
|
||||||
return currentYaw;
|
return currentYaw;
|
||||||
}
|
}
|
||||||
@ -2972,8 +2972,23 @@ namespace NavisworksTransport.Core.Animation
|
|||||||
{
|
{
|
||||||
var sb = new StringBuilder();
|
var sb = new StringBuilder();
|
||||||
|
|
||||||
// 包含对象名称
|
// 包含对象的唯一标识(使用PathId而不是DisplayName)
|
||||||
sb.Append(animatedObject?.DisplayName ?? "null");
|
if (animatedObject != null)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var pathId = Autodesk.Navisworks.Api.Application.ActiveDocument.Models.CreatePathId(animatedObject);
|
||||||
|
sb.Append($"{pathId.ModelIndex}:{pathId.PathId}");
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
sb.Append(animatedObject.DisplayName ?? "null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sb.Append("null");
|
||||||
|
}
|
||||||
sb.Append("|");
|
sb.Append("|");
|
||||||
|
|
||||||
// 包含路径ID(区分不同的路径)
|
// 包含路径ID(区分不同的路径)
|
||||||
@ -2997,6 +3012,7 @@ namespace NavisworksTransport.Core.Animation
|
|||||||
sb.Append("|");
|
sb.Append("|");
|
||||||
|
|
||||||
// 包含手工检测对象列表(确保手工指定模式的目标变化时重新检测)
|
// 包含手工检测对象列表(确保手工指定模式的目标变化时重新检测)
|
||||||
|
// 使用PathId作为唯一标识,而不是DisplayName
|
||||||
if (_manualCollisionOverrideEnabled && _manualCollisionTargets != null && _manualCollisionTargets.Count > 0)
|
if (_manualCollisionOverrideEnabled && _manualCollisionTargets != null && _manualCollisionTargets.Count > 0)
|
||||||
{
|
{
|
||||||
sb.Append("ManualTargets:");
|
sb.Append("ManualTargets:");
|
||||||
@ -3004,7 +3020,8 @@ namespace NavisworksTransport.Core.Animation
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
sb.Append(target.DisplayName);
|
var targetPathId = Autodesk.Navisworks.Api.Application.ActiveDocument.Models.CreatePathId(target);
|
||||||
|
sb.Append($"{targetPathId.ModelIndex}:{targetPathId.PathId}");
|
||||||
sb.Append(",");
|
sb.Append(",");
|
||||||
}
|
}
|
||||||
catch (Exception)
|
catch (Exception)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user