layout.py: cutting-stock nesting — 1D lumber (first-fit-decreasing into 8' sticks, kerf-aware) and 2D plywood (shelf packing onto 4x8 sheets), plus stock_counts (now drives the accurate buy-counts) and waste_summary. Tested headlessly. gui/bom_window.py replaces the cut-list QMessageBox popup with a tabbed window: - Cut List + Shopping List tabs (printable via QPrinter). - Cut Layout tab: a QGraphicsScene diagram of pieces packed onto each stick/sheet with waste, a "Try another arrangement" button (cycles ordering heuristics), and Print. Verified offscreen — the layout renders correctly. 96 tests pass. Deferred (phase 2): drag-to-rearrange pieces, true-optimal nesting, generated step-by-step instructions, and jig suggestions. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| test_cutlist.py | ||
| test_driver.py | ||
| test_geometry.py | ||
| test_gui_controller.py | ||
| test_layout.py | ||
| test_scene.py | ||