feat: add sentinel plate and plate list enhancements

Always keep a trailing empty plate so users can immediately place parts
without manually adding a plate. Auto-appends a new sentinel when parts
land on the last plate; trims excess trailing empties on removal.

Plate list now shows Parts count and Utilization % columns. Empty plates
are filtered from save and export. Sentinel updates are deferred via
BeginInvoke to avoid collection-modified exceptions and debounced to
prevent per-part overhead on bulk operations.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-05 17:56:54 -04:00
parent 6f19fe1822
commit 37130e8a28
5 changed files with 127 additions and 7 deletions

View File

@@ -13,6 +13,9 @@ public class NestResponsePersistenceTests
{
var nest = new Nest("test-nest");
var plate = new Plate(new Size(60, 120));
var drawing = new Drawing("test-part");
nest.Drawings.Add(drawing);
plate.Parts.Add(new Part(drawing));
nest.Plates.Add(plate);
var request = new NestRequest