修复自动路径起点和终点设置中,可以点击手动创建的bug

This commit is contained in:
tian 2025-09-13 14:47:07 +08:00
parent 89c98f1556
commit e295675fe5
2 changed files with 27 additions and 12 deletions

View File

@ -543,6 +543,7 @@ namespace NavisworksTransport
RaiseStatusChanged("已切换到查看状态", PathPlanningStatusType.Info); RaiseStatusChanged("已切换到查看状态", PathPlanningStatusType.Info);
} }
/// <summary> /// <summary>
/// 重置路径编辑状态 /// 重置路径编辑状态
/// </summary> /// </summary>

View File

@ -389,11 +389,13 @@ namespace NavisworksTransport.UI.WPF.ViewModels
#region Can Execute属性 #region Can Execute属性
public bool CanExecuteAutoPlanPath => _hasStartPoint && _hasEndPoint && public bool CanExecuteAutoPlanPath => _hasStartPoint && _hasEndPoint &&
VehicleLength > 0 && VehicleWidth > 0 && VehicleHeight > 0 && VehicleLength > 0 && VehicleWidth > 0 && VehicleHeight > 0 &&
SafetyMargin >= 0; SafetyMargin >= 0;
public bool CanExecuteStartEdit => SelectedPathRoute != null && public bool CanExecuteNewPath => !IsSelectingStartPoint && !IsSelectingEndPoint;
public bool CanExecuteStartEdit => SelectedPathRoute != null &&
(_pathPlanningManager?.PathEditState == PathEditState.Viewing); (_pathPlanningManager?.PathEditState == PathEditState.Viewing);
public bool CanExecuteEndEdit => (_pathPlanningManager?.PathEditState == PathEditState.Creating || public bool CanExecuteEndEdit => (_pathPlanningManager?.PathEditState == PathEditState.Creating ||
@ -535,7 +537,7 @@ namespace NavisworksTransport.UI.WPF.ViewModels
private void InitializeCommands() private void InitializeCommands()
{ {
NewPathCommand = new RelayCommand(async () => await ExecuteNewPathAsync()); NewPathCommand = new RelayCommand(async () => await ExecuteNewPathAsync(), () => CanExecuteNewPath);
DeletePathCommand = new RelayCommand(async () => await ExecuteDeletePathAsync()); DeletePathCommand = new RelayCommand(async () => await ExecuteDeletePathAsync());
RenamePathCommand = new RelayCommand(async () => await ExecuteRenamePathAsync()); RenamePathCommand = new RelayCommand(async () => await ExecuteRenamePathAsync());
StartEditCommand = new RelayCommand(async () => await ExecuteAddPathPointAsync(), () => CanExecuteStartEdit); StartEditCommand = new RelayCommand(async () => await ExecuteAddPathPointAsync(), () => CanExecuteStartEdit);
@ -729,11 +731,15 @@ namespace NavisworksTransport.UI.WPF.ViewModels
_hasStartPoint = false; _hasStartPoint = false;
AutoPathStartPoint = "未选择"; AutoPathStartPoint = "未选择";
LogManager.Info("PathPlanningManager已初始化开始设置选择状态"); LogManager.Info("PathPlanningManager已初始化开始设置自动路径规划状态");
IsSelectingStartPoint = true; IsSelectingStartPoint = true;
IsSelectingEndPoint = false; IsSelectingEndPoint = false;
// 通知按钮状态更新,禁用"手动创建"按钮
OnPropertyChanged(nameof(CanExecuteNewPath));
UpdateMainStatus("请在3D视图中点击选择起点..."); UpdateMainStatus("请在3D视图中点击选择起点...");
// 进入自动路径规划模式 - 动态事件订阅 // 进入自动路径规划模式 - 动态事件订阅
LogManager.Info("进入自动路径规划模式,启用动态事件订阅"); LogManager.Info("进入自动路径规划模式,启用动态事件订阅");
@ -783,11 +789,15 @@ namespace NavisworksTransport.UI.WPF.ViewModels
_hasEndPoint = false; _hasEndPoint = false;
AutoPathEndPoint = "未选择"; AutoPathEndPoint = "未选择";
LogManager.Info("PathPlanningManager已初始化开始设置选择状态"); LogManager.Info("PathPlanningManager已初始化开始设置自动路径规划状态");
IsSelectingStartPoint = false; IsSelectingStartPoint = false;
IsSelectingEndPoint = true; IsSelectingEndPoint = true;
// 通知按钮状态更新,禁用"手动创建"按钮
OnPropertyChanged(nameof(CanExecuteNewPath));
UpdateMainStatus("请在3D视图中点击选择终点..."); UpdateMainStatus("请在3D视图中点击选择终点...");
// 进入自动路径规划模式 - 动态事件订阅 // 进入自动路径规划模式 - 动态事件订阅
LogManager.Info("进入自动路径规划模式,启用动态事件订阅"); LogManager.Info("进入自动路径规划模式,启用动态事件订阅");
@ -994,7 +1004,8 @@ namespace NavisworksTransport.UI.WPF.ViewModels
// 通知Can Execute属性更改 // 通知Can Execute属性更改
OnPropertyChanged(nameof(CanExecuteAutoPlanPath)); OnPropertyChanged(nameof(CanExecuteAutoPlanPath));
OnPropertyChanged(nameof(CanExecuteNewPath));
LogManager.Info("自动路径规划参数和起终点标记已完全重置ToolPlugin已重新初始化"); LogManager.Info("自动路径规划参数和起终点标记已完全重置ToolPlugin已重新初始化");
}, "重置自动路径规划"); }, "重置自动路径规划");
} }
@ -1812,7 +1823,8 @@ namespace NavisworksTransport.UI.WPF.ViewModels
// 通知Can Execute属性更改 // 通知Can Execute属性更改
OnPropertyChanged(nameof(CanExecuteAutoPlanPath)); OnPropertyChanged(nameof(CanExecuteAutoPlanPath));
OnPropertyChanged(nameof(CanExecuteNewPath));
// 渲染新的起点标记 // 渲染新的起点标记
if (PathPointRenderPlugin.Instance != null) if (PathPointRenderPlugin.Instance != null)
{ {
@ -1862,7 +1874,8 @@ namespace NavisworksTransport.UI.WPF.ViewModels
// 通知Can Execute属性更改 // 通知Can Execute属性更改
OnPropertyChanged(nameof(CanExecuteAutoPlanPath)); OnPropertyChanged(nameof(CanExecuteAutoPlanPath));
OnPropertyChanged(nameof(CanExecuteNewPath));
// 渲染新的终点标记 // 渲染新的终点标记
if (PathPointRenderPlugin.Instance != null) if (PathPointRenderPlugin.Instance != null)
{ {
@ -2291,7 +2304,7 @@ namespace NavisworksTransport.UI.WPF.ViewModels
case PathEditState.Viewing: case PathEditState.Viewing:
// 如果当前状态包含路径规划完成信息(包括完成度百分比),则保留不覆盖 // 如果当前状态包含路径规划完成信息(包括完成度百分比),则保留不覆盖
var currentStatus = _mainViewModel?.StatusText ?? ""; var currentStatus = _mainViewModel?.StatusText ?? "";
if (!currentStatus.Contains("路径规划完成") && !currentStatus.Contains("路径规划部分完成") && if (!currentStatus.Contains("路径规划完成") && !currentStatus.Contains("路径规划部分完成") &&
!currentStatus.Contains("✅") && !currentStatus.Contains("🔶")) !currentStatus.Contains("✅") && !currentStatus.Contains("🔶"))
{ {
UpdateMainStatus("路径编辑已完成"); UpdateMainStatus("路径编辑已完成");
@ -2303,6 +2316,7 @@ namespace NavisworksTransport.UI.WPF.ViewModels
} }
// 通知命令状态更新 // 通知命令状态更新
OnPropertyChanged(nameof(CanExecuteNewPath));
OnPropertyChanged(nameof(CanExecuteStartEdit)); OnPropertyChanged(nameof(CanExecuteStartEdit));
OnPropertyChanged(nameof(CanExecuteEndEdit)); OnPropertyChanged(nameof(CanExecuteEndEdit));
OnPropertyChanged(nameof(CanExecuteModifyPoint)); OnPropertyChanged(nameof(CanExecuteModifyPoint));