1D Linear Cutting
1D Linear Cutting optimizes any material that comes in lengths: steel bars, aluminium extrusions, copper pipe, timber battens, plastic tube, cable, threaded rod, and any other linear stock. You supply the available bar lengths and the required cut lengths — CutOptim finds the combination that uses the fewest bars with the least offcut waste.
How 1D Optimization Works
The 1D problem is simpler than 2D: every item has only one dimension (length), and every bin (stock bar) also has only one dimension. The algorithm assigns lengths to bars so that:
- Every required length is assigned to exactly one bar
- No bar is over-filled (all lengths assigned to a bar fit within the bar’s length, accounting for kerf)
- The total number of bars used is minimized
This is a variant of the bin-packing problem for one dimension. CutOptim uses a first-fit-decreasing heuristic with local improvement to find near-optimal solutions quickly even for hundreds of demand lengths.
For linear materials where length is the only relevant dimension — pipe, rod, bar, cable — use 1D mode. For materials like flat bar or angle where you might need to track width as well, consider using 2D mode with height set to the material width.
Adding Stock Bars
Stock bars represent your available raw lengths. Enter each bar size as a separate row.
| Feature | Type | Description |
|---|---|---|
| Length | number | Full length of the stock bar in the active unit (mm or cm). |
| Quantity | integer | Number of bars of this length available. The optimizer will use up to this many. |
| Price | number | Cost per bar. Used in the cost summary and quotation export. |
| Label | text | Optional description, e.g. '6m EN10210 CHS 60.3×4mm'. Appears in the PDF and CSV exports. |
Example: structural steel job
| Label | Length (mm) | Qty | Price |
|---|---|---|---|
| RHS 50×50×3 — 6000 | 6000 | 12 | 42.00 |
| RHS 50×50×3 — 3000 | 3000 | 4 | 22.50 |
In this example, CutOptim will draw from both the 6 m and 3 m lengths to fill the demand most efficiently.
Adding Demand Lengths
Demand lengths are the cut pieces you need to produce. Each row in the Demand table represents one type of cut.
| Feature | Type | Description |
|---|---|---|
| Length | number | Required cut length in the active unit. |
| Quantity | integer | Number of pieces of this length required. |
| Label | text | Piece name or reference, e.g. 'Rafter A' or 'Handrail section'. Printed in the cut diagram and export. |
Example: aluminium handrail job
| Label | Length (mm) | Qty |
|---|---|---|
| Top rail | 2400 | 6 |
| Infill bar | 1000 | 24 |
| Post cap extension | 150 | 12 |
| Return end | 300 | 4 |
Running a 1D Optimization
- 1
Enter stock bars
In the Stock table, add each bar length with quantity and optional price. If you are buying material for the job (rather than drawing from existing stock), set a high quantity — the optimizer will only use as many as needed.
- 2
Enter demand lengths
Add every required cut length with its quantity and label. If you have an existing cut list in a spreadsheet, use CSV import (Import button above the Demand table).
- 3
Set kerf width
Open Settings and confirm your kerf width. For a standard chop saw or angle grinder with a 3 mm disc, enter 3 mm. For a thin-kerf saw blade, enter 2 mm.
- 4
Run the optimization
Click Run Optimization or press Ctrl+Enter. Results appear immediately.
- 5
Review bar diagrams
Each bar is shown as a horizontal rectangle in the canvas. Coloured segments represent demand pieces; grey segments are offcuts. Use the bar navigator to step through all bars.
- 6
Export your cut list
Click Export and choose CSV for a spreadsheet cut list or PDF for a printable bar-by-bar diagram.
Reading the Bar Layout Results
The canvas for 1D mode shows each bar as a horizontal strip divided into segments:
| Segment type | Visual | Description |
|---|---|---|
| Demand piece | Coloured block with label | A required cut length placed on this bar |
| Kerf | Thin dark line | Material lost between each cut |
| Offcut | Hatched grey | Remaining length, larger than minimum offcut size |
| Waste | Solid grey | Remaining length, smaller than minimum offcut size |
Cut Sequence
The cut sequence is shown left to right on each bar diagram. Cuts are sorted by length (longest first) to minimize offcuts. The PDF export lists the sequence as numbered steps:
Bar 1 (6000 mm): Cut 1 — 2400 mm (Top rail) | Cut 2 — 2400 mm (Top rail) | Offcut — 1194 mm
Summary Metrics
| Metric | Meaning |
|---|---|
| Bars used | Number of stock bars consumed |
| Total cut length | Sum of all demand piece lengths |
| Yield % | Total demand length / total used bar length × 100 |
| Waste % | Unusable scrap / total bar length × 100 |
| Offcuts | Remaining usable lengths saved to inventory |
Stock Priority (★)
Each row in the Stock table has a star (★) icon on the left. Starring a stock row tells the optimizer to use those bars first — before any unstarred stock.
When to use it in 1D mode:
- You have a partial bar from a previous job and want to use it before cutting new stock
- You have bars in a less convenient location (different rack, another site) that you want to defer
- You want to clear old stock of a certain size before it corrodes or warps
Click the ★ icon to toggle it yellow/gold (prioritized) or grey (normal). The setting is saved per cut.
When adding inventory offcuts as stock, star them all. This tells the optimizer to exhaust your existing offcuts before opening new full-length bars — the most effective way to reduce material spend over time.
Importing Demand Lengths
For jobs with many cut lengths already in a spreadsheet or design program export, use the import tools above the Demand table instead of typing each row manually. CutOptim supports paste from Excel/Google Sheets and CSV file import. See Importing Data for full instructions and column formats.
CSV Export for 1D Results
The CSV export for 1D mode contains one row per demand piece with the following columns:
| Column | Description |
|---|---|
bar_index | Which stock bar this piece was cut from (1-based) |
bar_label | Label of the stock bar |
piece_label | Label of the demand piece |
piece_length | Cut length |
position_from_end | Distance from the left end of the bar where this cut starts |
qty | Quantity (always 1 per row; multiple identical pieces appear as multiple rows) |
Sort the CSV by bar_index then position_from_end to get a sequential cut list for each bar — exactly the order you would make cuts at the chop saw.
Practical Example: Steel Frame Substructure
Job: Wall-mounted steel subframe for a commercial fit-out. 12 vertical uprights at 2700 mm, 18 horizontal rails at 1200 mm, 6 diagonal braces at 890 mm.
Stock available: 20 × 6000 mm lengths of 50×50×3 RHS at $41 each.
Settings: Kerf 3 mm, units mm, Guillotine mode (not applicable to 1D, but kerf matters).
Result: 9 bars used (instead of 12 if cut naively), yield 92.3%, estimated saving of 3 bars = $123 in material.
| Bar | Cuts |
|---|---|
| Bar 1 | 2700, 2700, 597 (offcut) |
| Bar 2 | 2700, 2700, 597 (offcut) |
| Bar 3 | 2700, 1200, 1200, 897 (offcut) |
| Bar 4 | 1200, 1200, 1200, 1200, 1200 (waste 194) |
| Bar 5 | 1200, 1200, 890, 890, 817 (offcut) |
| … | … |
The three 597 mm offcuts can be saved to inventory and used for future small pieces.