mirror of
https://github.com/ajisaacs/OpenNest.git
synced 2026-10-06 23:02:11 -04:00
CuttingPlanBatch captures every scoped plate on the owner thread with an owned copy of the confirmed cutting parameters, plans them on a worker with per-plate progress and cancellation, and returns a proposal that applies all or nothing through CuttingPlanService.Apply. A free-order search that ends NoSolutionWithinBudget is retried once with the current part order, captured up front so the worker never reads live plates; the proposal reports that the order was kept. A kept order gets 400 expansions per part (at least 20000), since it still searches contour order and entries. Only after Apply succeeds does each plate keep its own copy of the settings. The proposal builds detached preview plates (quantity zero) and describes each plate's status and findings with part numbers.