增强路径视图模型的时间信息设置功能

This commit is contained in:
tian 2026-01-09 16:46:38 +08:00
parent 98c23b986e
commit 001b45cc9a
7 changed files with 74 additions and 17 deletions

View File

@ -41,8 +41,8 @@ duration_seconds = 10.0
detection_gap_meters = 0.05
# 预计算检测间隙扩大率(>0表示扩大的倍数
# 例如:1.0表示检测间隙增大1倍即使用2倍的检测间隙进行预计算
precomputed_detection_gap_expansion_rate = 1.0
# 例如:0.5表示检测间隙增大0.5倍即使用1.5倍的检测间隙进行预计算
precomputed_detection_gap_expansion_rate = 0.5
[logistics]
# 可通行性默认值true

View File

@ -617,6 +617,7 @@ namespace NavisworksTransport.Core.Animation
if (intersects)
{
LogManager.Debug($"帧 {i} 检测到碰撞: {_animatedObject.DisplayName} <-> {collider.DisplayName}, 精确距离: {preciseDistance:F4},阈值: {_precomputedDetectionGap:F4}");
var collisionResult = new CollisionResult
{
ClashGuid = Guid.NewGuid(),

View File

@ -614,7 +614,7 @@ namespace NavisworksTransport
LogManager.Info($"[分组测试] 有效碰撞数量: {validCollisions.Count}");
// 创建主测试名称
var mainTestName = $"碰撞检测_{DateTime.Now:yyyyMMdd_HHmmss}";
var mainTestName = $"碰撞检测_{DateTime.Now:MMdd_HHmmss}";
_currentTestName = mainTestName;
LogManager.Info($"[分组测试] 创建主测试: {mainTestName}");

View File

@ -1098,7 +1098,7 @@ namespace NavisworksTransport
LogManager.Info($"A*算法找到路径,包含 {pathResult.PathPoints.Count} 个点,完成度: {pathResult.CompletionPercentage:F1}%");
// 6. 创建PathRoute对象并保存GridMap
var routeName = $"自动路径_{DateTime.Now:HHmmss}";
var routeName = $"自动_{DateTime.Now:MMdd_HHmmss}";
// 🔥 关键修复在创建路径前设置_currentGridMap确保GetSpeedLimitAtPosition能正常工作
_currentGridMap = gridMap;
@ -1486,7 +1486,7 @@ namespace NavisworksTransport
PathEditState = PathEditState.Creating;
// 创建新路径
var newRoute = new PathRoute(routeName ?? $"路径{DateTime.Now:yyyyMMdd_HHmmss}");
var newRoute = new PathRoute(routeName ?? $"人工_{DateTime.Now:MMdd_HHmmss}");
_editingRoute = newRoute;
SetCurrentRouteInternal(newRoute, triggerEvent: true);

View File

@ -290,6 +290,17 @@ namespace NavisworksTransport.UI.WPF.ViewModels
private set => SetProperty(ref _lastModifiedTime, value);
}
/// <summary>
/// 设置时间信息(用于从数据库加载)
/// </summary>
public void SetTimeInfo(DateTime createdTime, DateTime lastModifiedTime)
{
_createdTime = createdTime;
_lastModifiedTime = lastModifiedTime;
OnPropertyChanged(nameof(CreatedTime));
OnPropertyChanged(nameof(LastModifiedTime));
}
/// <summary>
/// 创建者
/// </summary>
@ -346,9 +357,17 @@ namespace NavisworksTransport.UI.WPF.ViewModels
#region
/// <summary>
/// 默认构造函数
/// 默认构造函数(用于新建路径)
/// </summary>
public PathRouteViewModel() : base()
public PathRouteViewModel() : this(isFromDatabase: false)
{
}
/// <summary>
/// 构造函数,控制是否从数据库加载
/// </summary>
/// <param name="isFromDatabase">是否从数据库/内存加载false表示新建路径</param>
public PathRouteViewModel(bool isFromDatabase)
{
try
{
@ -362,8 +381,15 @@ namespace NavisworksTransport.UI.WPF.ViewModels
throw new InvalidOperationException("UIStateManager初始化失败");
}
// 初始化默认值
InitializeDefaults();
// 根据场景选择初始化方式
if (!isFromDatabase)
{
InitializeDefaultsForNewRoute();
}
else
{
InitializeMinimal();
}
// 直接完成初始化,不需要异步
CompleteInitialization();
@ -378,7 +404,7 @@ namespace NavisworksTransport.UI.WPF.ViewModels
}
/// <summary>
/// 使用指定名称构造
/// 使用指定名称构造(用于新建路径)
/// </summary>
/// <param name="name">路径名称</param>
public PathRouteViewModel(string name) : this()
@ -387,7 +413,7 @@ namespace NavisworksTransport.UI.WPF.ViewModels
}
/// <summary>
/// 使用完整参数构造
/// 使用完整参数构造(用于新建路径)
/// </summary>
/// <param name="name">路径名称</param>
/// <param name="description">路径描述</param>
@ -400,9 +426,30 @@ namespace NavisworksTransport.UI.WPF.ViewModels
}
/// <summary>
/// 初始化默认值
/// 最小化初始化(用于从数据库/内存加载路径)
/// </summary>
private void InitializeDefaults()
private void InitializeMinimal()
{
_id = string.Empty;
_name = string.Empty;
_description = string.Empty;
_isActive = false;
_isOptimal = false;
_createdTime = DateTime.MinValue;
_lastModifiedTime = DateTime.MinValue;
_createdBy = string.Empty;
_totalLength = 0.0;
_isValidated = false;
_validationStatus = "未验证";
// 初始化点集合
Points = new ObservableCollection<PathPointViewModel>();
}
/// <summary>
/// 初始化默认值(用于新建路径)
/// </summary>
private void InitializeDefaultsForNewRoute()
{
_id = Guid.NewGuid().ToString();
_name = "新路径";

View File

@ -2077,13 +2077,16 @@ namespace NavisworksTransport.UI.WPF.ViewModels
// 重新加载所有路径
foreach (var coreRoute in _pathPlanningManager.Routes)
{
var pathViewModel = new PathRouteViewModel
var pathViewModel = new PathRouteViewModel(isFromDatabase: true)
{
Id = coreRoute.Id, // 添加Id属性设置
Name = coreRoute.Name,
Description = coreRoute.Description,
IsActive = false
};
// 设置时间信息
pathViewModel.SetTimeInfo(coreRoute.CreatedTime, coreRoute.LastModified);
// 转换路径点
foreach (var corePoint in coreRoute.Points)
@ -2903,13 +2906,16 @@ namespace NavisworksTransport.UI.WPF.ViewModels
LogManager.Info($"*** 开始处理自动路径生成: {e.Route.Name} ***");
// 创建对应的 WPF ViewModel
var autoPathViewModel = new PathRouteViewModel
var autoPathViewModel = new PathRouteViewModel(isFromDatabase: true)
{
Id = e.Route.Id,
Name = e.Route.Name,
Description = e.Route.Description,
IsActive = true
};
// 设置时间信息
autoPathViewModel.SetTimeInfo(e.Route.CreatedTime, e.Route.LastModified);
// 转换路径点
foreach (var corePoint in e.Route.Points)
@ -3012,13 +3018,16 @@ namespace NavisworksTransport.UI.WPF.ViewModels
LogManager.Info($"*** 开始处理数据库加载路径: {coreRoute.Name} ***");
// 创建对应的 WPF ViewModel
var dbPathViewModel = new PathRouteViewModel
var dbPathViewModel = new PathRouteViewModel(isFromDatabase: true)
{
Id = coreRoute.Id,
Name = coreRoute.Name,
Description = coreRoute.Description,
IsActive = false // 历史路径默认不激活
};
// 设置时间信息
dbPathViewModel.SetTimeInfo(coreRoute.CreatedTime, coreRoute.LastModified);
// 转换路径点
foreach (var corePoint in coreRoute.Points)

View File

@ -445,7 +445,7 @@ NavisworksTransport 检测动画页签视图 - 采用与类别设置和分层管
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="时间" Width="100">
<GridViewColumn Header="创建时间" Width="100">
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding TestTimeDisplay}"