增强路径视图模型的时间信息设置功能
This commit is contained in:
parent
98c23b986e
commit
001b45cc9a
@ -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)
|
||||
|
||||
@ -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(),
|
||||
|
||||
@ -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}");
|
||||
|
||||
|
||||
@ -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);
|
||||
|
||||
|
||||
@ -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 = "新路径";
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -445,7 +445,7 @@ NavisworksTransport 检测动画页签视图 - 采用与类别设置和分层管
|
||||
</DataTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
<GridViewColumn Header="时间" Width="100">
|
||||
<GridViewColumn Header="创建时间" Width="100">
|
||||
<GridViewColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<TextBlock Text="{Binding TestTimeDisplay}"
|
||||
|
||||
Loading…
Reference in New Issue
Block a user