reoptimize(scene, base_plan, strategy) preserves locked placements where they sit and re-packs the unlocked items around them: unlocked lumber goes into the free segments beside locked pieces (then new sticks) via _pack_lumber_seeded + _free_segments; unlocked plywood goes onto fresh sheets (locked sheets keep their locked panels). The BOM window's "Find better layout" / "Try alternative" now call reoptimize when any piece is locked (Find better tries all strategies and keeps the best), so locks survive re-optimization instead of just blocking drags. Tests: locked placement keeps its id/position, nothing is lost, plan stays valid. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| test_bom_window.py | ||
| test_cutlist.py | ||
| test_cutplan.py | ||
| test_driver.py | ||
| test_geometry.py | ||
| test_gui_controller.py | ||
| test_instructions.py | ||
| test_jigs.py | ||
| test_layout.py | ||
| test_scene.py | ||