Which columns actually matter, the export quirks that break optimizers, and what to do when the list has no fixed format at all.
The model is finished, the material list is exported, and now someone has to decide how many bars to buy. This step — between the detailing software and the purchase order — is where most cutting optimizers fall down, and the reason is almost never the optimization itself. It is the file.
Whatever the source, an optimizer needs three things per row, and nothing else is essential:
| Field | Why it matters |
|---|---|
| Profile | Parts can only be cut from stock of the same section. HEB 360 and IPE 400 are separate problems. |
| Length | The cut length of the part, in mm. Not the member length, not the assembly length. |
| Quantity | How many identical pieces at that length. |
Grade, mark, assembly reference and weight are useful on the report, but they do not change the cutting plan. If your list has the three fields above, it is optimizable — regardless of which software produced it.
This is the most expensive misreading on the list, and the easiest to miss, because the number looks perfectly reasonable either way.
A beam modelled as an 8000 mm member does not arrive at the saw as 8000 mm. Depending on what the export contains, the figure in the length column may be any of the following:
| Length reported | What it measures | Use for cutting? |
|---|---|---|
| System / member length | Grid-line to grid-line, the analytical member | No |
| Assembly length | Main part plus welded attachments, end plates, stiffeners | No |
| Part length | The single piece of steel to be cut | Yes |
| Cut length | Part length adjusted for skewed or mitred end cuts | Yes |
The gaps between these are not small. A 12 m beam framing into column flanges may have a system length of 12000 mm, a part length near 11700 mm after end clearances, and an assembly length of 11900 mm once end plates are counted. Optimize on the wrong one and every bar in the package is planned against a length that will never be cut.
Using system or assembly length instead of part length inflates every piece. On a package with parts near the stock length, that is the difference between two parts fitting a 12 m bar and only one fitting — the plan orders roughly twice the steel it needs, and the waste figure looks catastrophic for no real reason.
The reverse error is worse in a different way. If the export lists part lengths but the fabricator adds an end preparation or a mitre that was not in the model, parts come up short and the material has already been ordered.
LENGTH, ASSEMBLY_LENGTH, PART_LENGTH, CUT_LENGTH — but office templates rename them freely, so the heading alone is not proof.Tekla reports are template-driven, so the column headings depend entirely on which template was used. A report built from a bolt list template will not contain cut lengths at all.
Practical points:
PROFILE, SECTION, PART_PROFILE all appear in practice.Advance Steel exports are structured differently and carry a specific trap.
S355JR sit close to dimension columns and are easily misread as sizes.9' 3 1/2" — which is unreadable as a number without conversion.Number, Qty or Count depending on the template language.3 1/2 parsed naively can be read as the number 3, silently truncating every part in the package. The plan will look plausible and be entirely wrong. Always spot-check two or three known lengths against the model before trusting an import.
A large share of real cutting lists are not exports at all. They are typed — by a fabricator working from marked-up drawings, or by a QS rebuilding a take-off in Excel because the detailer's file arrived in an unusable state. These lists have no standard whatsoever: columns in any order, merged cells, units in the header, notes in the middle of the data.
This is worth stating plainly because most optimization software treats it as an edge case, when in practice it is the common case on smaller packages and subcontract work.
The usual answer is a required template: download our format, fill it in, upload it. This works in a demo and fails on site, for a simple reason — retyping a 400-row material list into someone else's spreadsheet is slower than planning the cutting by eye. So nobody does it, and the software goes unused.
The better approach is to make the software adapt to the file rather than the reverse:
Step 4 is the one that matters most and gets skipped most often. Automatic detection will fail on some sheets — that is unavoidable given how varied real files are. What is avoidable is failing without giving the user any way forward.
| Check | What it catches |
|---|---|
| Piece count against the model | Subtotal rows read as parts; filtered rows omitted |
| Longest part against stock length | Parts that cannot be cut from available stock at all |
| Two or three known lengths spot-checked | Unit errors, fraction truncation, assembly-versus-part lengths |
| Profile count | Description column misread as profile, producing dozens of phantom sections |
These take a minute and catch nearly every import error that matters. An optimizer will happily produce a confident, well-formatted, completely wrong plan from a misread file — the arithmetic is only as good as the parse.
Steel Optimizer reads material lists without a template.
Drop in an export from Tekla Structures, from Advance Steel, or a sheet you typed yourself. It locates the header and matches the columns on its own; where it cannot, you point at them in a dropdown. One click returns the cutting plan, the bars to buy, the tonnage and the waste percentage — and leftover offcuts are registered and carried into the next project.