纠正先选物体时没记录原始尺寸的问题;清除物体时将角度修正值归零。

This commit is contained in:
tian 2026-02-21 11:26:11 +08:00
parent 11f09faa13
commit 1047c82c66
2 changed files with 32 additions and 9 deletions

View File

@ -359,6 +359,21 @@ namespace NavisworksTransport.UI.WPF.ViewModels
private double _objectOriginalWidth; // 物体原始宽度Y方向
private double _objectOriginalHeight; // 物体原始高度Z方向
/// <summary>
/// 物体原始长度X方向- 选择物体时保存,不受旋转影响
/// </summary>
public double ObjectOriginalLength => _objectOriginalLength;
/// <summary>
/// 物体原始宽度Y方向- 选择物体时保存,不受旋转影响
/// </summary>
public double ObjectOriginalWidth => _objectOriginalWidth;
/// <summary>
/// 物体原始高度Z方向- 选择物体时保存,不受旋转影响
/// </summary>
public double ObjectOriginalHeight => _objectOriginalHeight;
// 手工碰撞对象相关字段
private bool _isManualCollisionTargetEnabled = true;
private ObservableCollection<ManualCollisionTargetViewModel> _manualCollisionTargets;
@ -1695,7 +1710,8 @@ namespace NavisworksTransport.UI.WPF.ViewModels
// 只有选择不同的物体时,才重置角度修正值
if (!isSameObject)
{
_pathAnimationManager?.SetObjectRotationCorrectionDirect(0.0);
// 重置 ViewModel 中的角度修正值(会自动同步到 PathAnimationManager
ObjectRotationCorrection = 0.0;
LogManager.Debug($"[选择物体] 已重置角度修正值为0度新物体");
}
else
@ -2128,12 +2144,16 @@ namespace NavisworksTransport.UI.WPF.ViewModels
LogManager.Info("已清除PathAnimationManager中的动画数据并归位物体");
}
// 2. 重置属性
// 2. 重置角度修正值为0
ObjectRotationCorrection = 0.0;
LogManager.Debug("[清除物体] 已重置角度修正值为0度");
// 3. 重置属性
SelectedAnimatedObject = null;
UpdateAnimatedObjectInfo();
UpdateCanGenerateAnimation();
// 3. 清理高亮
// 4. 清理高亮
ModelHighlightHelper.ClearCollisionHighlights();
LogManager.Info("移动物体已完全清除并归位");
@ -4907,6 +4927,10 @@ namespace NavisworksTransport.UI.WPF.ViewModels
_pathAnimationManager.CancelAnimation();
}
// 重置角度修正值为0
ObjectRotationCorrection = 0.0;
LogManager.Debug("[重置状态] 已重置角度修正值为0度");
// 清空选中对象
SelectedAnimatedObject = null;
SelectedAnimatedObjectName = string.Empty;

View File

@ -2883,12 +2883,11 @@ namespace NavisworksTransport.UI.WPF.ViewModels
}
else if (animationVm.SelectedAnimatedObject != null)
{
// 使用选择物体的包围盒尺寸(模型单位)
var bbox = animationVm.SelectedAnimatedObject.BoundingBox();
objectLengthModel = bbox.Max.X - bbox.Min.X; // X方向 = 长度
objectWidthModel = bbox.Max.Y - bbox.Min.Y; // Y方向 = 宽度
objectHeightModel = bbox.Max.Z - bbox.Min.Z; // Z方向 = 高度
LogManager.Debug($"[物体参数同步] 使用选择物体尺寸: {objectLengthModel / metersToUnits:F2}m x {objectWidthModel / metersToUnits:F2}m x {objectHeightModel / metersToUnits:F2}m");
// 使用选择物体时保存的原始尺寸(米),不受旋转影响
objectLengthModel = animationVm.ObjectOriginalLength * metersToUnits;
objectWidthModel = animationVm.ObjectOriginalWidth * metersToUnits;
objectHeightModel = animationVm.ObjectOriginalHeight * metersToUnits;
LogManager.Debug($"[物体参数同步] 使用选择物体保存的原始尺寸: {animationVm.ObjectOriginalLength:F2}m x {animationVm.ObjectOriginalWidth:F2}m x {animationVm.ObjectOriginalHeight:F2}m");
}
else
{