Fillet weld section from calcsheet CS-004: the leg as specified, the throat as calculatedD = 6 mma = 4.24 mm

calcsheet

For Dataraft, as our own product. 2026. Structural calculations to CSA A23.3, CSA S16, NBCC 2020 and ACI 350.3, every step shown, each one printing an engineering-grade report. calc.struct.work

Roles: Product, structural engineering. Principal: Arun Kishore.

Brief

A calculation that gives only an answer can’t be checked, and it can’t go in a calculation package. We wanted structural calculations that show each step the way an engineer would write it by hand, with the numbers on the page being the numbers the computer used, and that print a report an engineer can sign off and file with the rest of the package.

Constraint

The first sheets already existed as an older set of calculation pages. Moving them could not change a result. Where the old code was wrong, the fix had to be written down where anyone could find it.

Units had to stay attached from input to result. A millimetre could not quietly turn into a bare number halfway through.

What was built

calcsheet runs a plain Python function and records every assignment as a step, showing the formula, the numbers substituted in and the result, with units. Code clauses sit beside the step they justify. Checks print as pass or fail rows with the ratio of demand to capacity.

Change an input on the page and it recalculates. Where a sheet has a drawing, the drawing is dimensioned and redraws with the inputs.

The same steps become an engineering-grade report: a typeset PDF stamped with a sheet number, the date, the calculation version, every input and a content hash, laid out to drop straight into a calculation package. A reviewer reads the same derivation the engineer saw on screen, clause by clause. If the engine can’t show a step correctly, it stops and says so, and no report is printed.

What it measured

A parity run pushed both versions through 872 input cases across every sheet in the original set and compared every named value at a relative tolerance of 1e-9. They agreed 23,320 times.

There were 19 accepted differences, all bugs in the old code. On bolt prying, the old code dropped units before a square root and was off by powers of 1000 away from its own worked example. On steel web shear, the old formula had two digits transposed in a constant and was missing a square.

Try it

A few of the sheets. The full catalogue is at calc.struct.work.