mirror of
https://github.com/ajisaacs/OpenNest.git
synced 2026-10-15 01:21:55 -04:00
fix(engine): keep the ordinary Auto Nest result when clamp recovery fails
A throwing feasibility probe or residual solve inside last-resort clamp removal propagated out of NestPipeline.Run and discarded the usable ordinary proposal. Recovery is optional: any non-cancellation failure now returns no recovery; cancellation still propagates. PM 1db4333f-96fc-4e3e-8643-47e1120f312c
This commit is contained in:
1 parent
d24e660286
commit
3bf63b74f9
2 files changed
+103
No files matched your search
@@ -36,6 +36,22 @@ internal static class ClampRemovalRecovery
|
||||
ArgumentNullException.ThrowIfNull(raw);
|
||||
ArgumentNullException.ThrowIfNull(engine);
|
||||
|
||||
// Recovery is optional: any failure inside it (a throwing probe or residual solve)
|
||||
// keeps the caller's ordinary result instead of discarding it. Cancellation still
|
||||
// propagates.
|
||||
try
|
||||
{
|
||||
return Recover(job, raw, engine, token);
|
||||
}
|
||||
catch (Exception exception) when (exception is not OperationCanceledException)
|
||||
{
|
||||
token.ThrowIfCancellationRequested();
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
private static Outcome Recover(NestJob job, NestJobResult raw, INestingEngine engine, CancellationToken token)
|
||||
{
|
||||
if (raw.Status == NestJobStatus.Complete)
|
||||
return null;
|
||||
|
||||
|
||||
Reference in new issue
Block a user