Dowel tusk tenon¶
joints.dowel_tusk_tenon
A tusk tenon held by dowels (after Rex Krueger's workbench): a wide stretcher through a 70 mm square leg, held by two tapered dowels through its tenon, level, their heads towards the viewer.
The 45 mm thick stretcher's tenon is as thick as the stretcher and 100
mm wide, standing out of the leg by as much as the leg is wide, with big
chamfers at its corners. The tusks, tusk_diameter dowels tusk_length
long, have flats planed over their tip halves, tapering 1:12.5, and go
through straight holes in the second and the fourth fifth of the tenon;
behind the tenon their flats bear on the round top of a half dowel
glued flat side down across the leg. Knocked out, the tusks free the
stretcher.
Parameters¶
| Parameter | Default |
|---|---|
leg_length |
500 |
stretcher_length |
400 |
width |
240 |
tusk_diameter |
20 |
tusk_length |
100 |
Change them in a design file (see Change an example):
Drawings¶
The plans in one PDF: plans.pdf.
Cut list¶
leg 500 x 70 x 70 mm oak
- through mortise 100 x 45 mm in back_edge
stretcher 540 x 240 x 45 mm oak
- tenon 100 x 45 mm, 140 long, end chamfered 2 mm, corners chamfered 20 mm, on left_end
- 2 holes ø20 for tusks through the tenon on left_end, parallel to leg.front_edge, 8 mm off it
tusk ø20 x 100 mm oak, 2 pieces: tusk_1, tusk_2
- flat taper 4 mm over 50 on front_edge towards right_end
bearing ø20 x 100 mm oak
- flat 20 mm wide, 10 deep, on front_edge
Code¶
From woodwright/examples/joints.py, which imports the names it uses (see From an example to your own design):
def dowel_tusk_tenon(
leg_length: float = 500,
stretcher_length: float = 400,
width: float = 240,
tusk_diameter: float = 20,
tusk_length: float = 100,
) -> Assembly:
"""A tusk tenon held by dowels (after Rex Krueger's workbench): a wide
stretcher through a 70 mm square leg, held by two tapered dowels through
its tenon, level, their heads towards the viewer.
The 45 mm thick stretcher's tenon is as thick as the stretcher and 100
mm wide, standing out of the leg by as much as the leg is wide, with big
chamfers at its corners. The tusks, `tusk_diameter` dowels `tusk_length`
long, have flats planed over their tip halves, tapering 1:12.5, and go
through straight holes in the second and the fourth fifth of the tenon;
behind the tenon their flats bear on the round top of a half dowel
glued flat side down across the leg. Knocked out, the tusks free the
stretcher.
"""
asm = Assembly("dowel_tusk_tenon", root_location=orient(right_end=UP, back_edge=LEFT))
leg = asm.add(Board("leg", POST_STOCK, length=leg_length, width=POST_STOCK.thickness))
stretcher = asm.add(Board("stretcher", LEG_STOCK, length=stretcher_length, width=width))
dowel = Stock.rod(diameter=tusk_diameter, species="oak")
tusks = tuple(asm.add(Rod(f"tusk_{i + 1}", dowel, length=tusk_length)) for i in range(2))
tenon = 100
bearing = asm.add(Rod("bearing", dowel, length=tenon))
asm.join(
DowelTuskTenon(
tenon=stretcher.left_end,
mortise=leg.back_edge,
position=offset(60, ref=leg.right_end),
across=CENTERED,
shoulder=(width - tenon) / 2,
tenon_thickness=LEG_STOCK.thickness,
tenon_chamfer=2,
tenon_corner_chamfer=20,
tusks=tusks,
bearings=(bearing,),
tusk_head=leg.top_face,
tusk_slope=12.5,
protrusion=POST_STOCK.thickness,
)
)
return asm
Exported with woodwright 0.9.0 on 2026-10-25.