ParaShape

Strutting Beam Roof

Strutting Beam Roof

A gable roof of site-cut rafter pairs on a ridge board, tied by ceiling joists and collar ties, with an underpurlin on each side held by struts that stand on a deep strutting beam laid across the ceiling joists. Length, span, pitch and overhang, Rafter, joist, ridge board and collar tie sections, Roof weight, underpurlin and strut sections, Strutting beam depth and strut spacing

Details

Category: Roof Framing › Timber Roof Framing › Gable and Skillion Roofs

By Huu Khanh Nguyen · Updated November 5, 2026

Parameters

NameDefaultUnit
Length6000mm
Span7000mm
Pitch25°
Maximum Rafter Spacing600mm
Overhang450mm
Rafter Thickness45mm
Rafter Depth190mm
Wall Plate Width88.9mm
Ceiling Joist Thickness45mm
Ceiling Joist Depth140mm
Ridge Board Thickness19mm
Collar Tie Depth140mm
Roof Weight0
Underpurlin Thickness45mm
Underpurlin Depth190mm
Strut Thickness45mm
Strut Spacing Limit1500mm
Strutting Beam Depth190mm
Maximum Beam SpanbeamSpans[beamDepth == 140 ? 0 : 1]mm
Underpurlin Height(strutBase + strutDepth + underpurlinDepth + Math.min(atticHeight - collarDepth, (strutBase + strutDepth + underpurlinDepth) + (strutThickness == 45 ? 1600 : 3450) - strutDepth)) / 2mm
Widthspan + 2 * overhangmm
Depthlengthmm
HeightMath.max(atticHeight + bandHeight, joistDepth) - (overhang > 0 ? -notch - overhang * slope : 0)mm
SlopeMath.tan(pitch * Math.PI / 180)
Rafter Run(span - ridgeThickness) / 2mm
Notch HeightseatWidth * slopemm
Band HeightrafterDepth * Math.sqrt(1 + slope * slope)mm
Attic Heightslope * run - notchmm
Collar Tie ThicknesscollarDepth == 140 ? 19 : 45mm
Strut Depth90mm
IntervalsMath.ceil((length - rafterThickness - joistThickness) / maximumSpacing)
Unit Spacing(length - rafterThickness - joistThickness) / intervalsmm
Collar Tie StrideMath.min(intervals, Math.max(1, Math.min(3, Math.floor(1800 / pitchStep))))
Underpurlin SetbackseatWidth + underpurlinHeight / slopemm
Strut LengthunderpurlinHeight - underpurlinDepth - strutBasemm
Strut IntervalsMath.ceil((length - strutDepth) / Math.min(strutSpacing, [[[[1100,1000,900],[1800,1500,1400],[2200,1900,1700],[2400,2100,1900],[2600,2300,2100]],[[1300,1200,1100],[2100,1900,1700],[2900,2600,2400],[4600,4100,3800],[5100,4500,4100]],[[4000,3500,3200],[5000,4500,4100],[6100,5400,5000]]],[[[1000,800,700],[1500,1300,1100],[2100,1700,1500],[2500,2100,1900],[2700,2400,2200]],[[1100,1000,900],[1800,1600,1400],[2400,2200,2000],[3900,3500,3200],[4700,4200,3800]],[[3300,3000,2700],[4200,3800,3500],[5100,4600,4200]]]][roofWeight][underpurlinThickness == 45 ? 0 : underpurlinThickness == 70 ? 1 : 2][[[90,140,190,240,290],[90,140,190,240,290],[190,240,290]][underpurlinThickness == 45 ? 0 : underpurlinThickness == 70 ? 1 : 2].indexOf(underpurlinDepth)][loadedColumn]))
Strut Spacing(length - strutDepth) / strutIntervalsmm
Strutting Beam Thickness90mm
Strutting Beam UndersidejoistDepth + 25mm
Strut Base HeightbeamBottom + beamDepthmm
Loaded Dimension Columnrun * Math.sqrt(1 + slope * slope) <= 3000 ? 0 : run * Math.sqrt(1 + slope * slope) <= 4200 ? 1 : 2