添加碰撞检测进度条
This commit is contained in:
parent
fd05ffce3c
commit
e3958affb7
@ -323,8 +323,14 @@ namespace NavisworksTransport
|
||||
var mainTestName = $"物流碰撞检测_{pathName}_{DateTime.Now:yyyyMMdd_HHmmss}";
|
||||
LogManager.Info($"[分组测试] 创建主测试: {mainTestName}");
|
||||
|
||||
Progress progress = null;
|
||||
try
|
||||
{
|
||||
// 开始进度条(ClashDetective本身会显示进度,这里只提供提示信息)
|
||||
progress = Application.BeginProgress(
|
||||
"碰撞检测数据分析中,请稍候..."
|
||||
);
|
||||
|
||||
// 使用事务确保操作的原子性
|
||||
using (var transaction = doc.BeginTransaction("创建分组碰撞测试"))
|
||||
{
|
||||
@ -362,7 +368,7 @@ namespace NavisworksTransport
|
||||
|
||||
// 调试:打印所有去重后的碰撞对信息
|
||||
LogManager.Debug($"[分组测试] 去重后的碰撞对列表:");
|
||||
int groupIndex = 0;
|
||||
int debugIndex = 0;
|
||||
foreach (var group in groupedCollisions)
|
||||
{
|
||||
var firstCollision = group.First();
|
||||
@ -376,8 +382,8 @@ namespace NavisworksTransport
|
||||
var item2Hash = item2?.GetHashCode() ?? -1;
|
||||
var frameCount = group.Count();
|
||||
|
||||
LogManager.Debug($" [{groupIndex}] Item1={item1Name}(Hash:{item1Hash}), Item2={item2Name}(Hash:{item2Hash}), 帧数={frameCount}");
|
||||
groupIndex++;
|
||||
LogManager.Debug($" [{debugIndex}] Item1={item1Name}(Hash:{item1Hash}), Item2={item2Name}(Hash:{item2Hash}), 帧数={frameCount}");
|
||||
debugIndex++;
|
||||
}
|
||||
|
||||
var collisionGroup = new ClashResultGroup
|
||||
@ -391,8 +397,17 @@ namespace NavisworksTransport
|
||||
int skippedCount = 0;
|
||||
|
||||
// 2. 遍历每一组
|
||||
foreach (var group in groupedCollisions)
|
||||
for (int groupIndex = 0; groupIndex < groupedCollisions.Count; groupIndex++)
|
||||
{
|
||||
// 检查用户是否取消
|
||||
if (progress.IsCanceled)
|
||||
{
|
||||
LogManager.Info($"[分组测试] 用户取消操作,已处理 {groupIndex}/{groupedCollisions.Count} 组");
|
||||
break;
|
||||
}
|
||||
|
||||
var group = groupedCollisions[groupIndex];
|
||||
|
||||
// 3. 排序:按距离/重叠深度排序,优先检测最严重的碰撞
|
||||
// 注意:Distance通常越小(或负值越大)表示碰撞越深,具体取决于计算方式
|
||||
// 这里假设Distance越小越严重
|
||||
@ -566,6 +581,14 @@ namespace NavisworksTransport
|
||||
{
|
||||
LogManager.Error($"[分组测试] 创建分组测试失败: {groupEx.Message}");
|
||||
}
|
||||
finally
|
||||
{
|
||||
// 确保关闭进度条
|
||||
if (progress != null)
|
||||
{
|
||||
Application.EndProgress();
|
||||
}
|
||||
}
|
||||
|
||||
// 关键修复:碰撞测试完成后,将物体恢复到动画终点位置
|
||||
if (animatedObject != null && IsModelItemValid(animatedObject))
|
||||
|
||||
Loading…
Reference in New Issue
Block a user