Side table¶
projects.side_table
A side table: legs, aprons and stretchers, a solid top held down by buttons; outside sizes.
As in the table, the aprons' mitred tenons are set down from the tops
of the legs, with haunches; the top, glued up from top_boards boards,
overhangs the frame by overhang and is held by buttons in short
mortises in the aprons, so it can move. Stretchers near the floor, all
at the same level (their top edges at stretcher_height), are centered
on the legs, with blind tenons mitred at their ends like the aprons',
meeting inside the legs.
Parameters¶
| Parameter | Default |
|---|---|
width |
400 |
depth |
400 |
height |
550 |
overhang |
25 |
apron_width |
80 |
stretcher_width |
30 |
stretcher_height |
150 |
setback |
3 |
top_boards |
3 |
buttons |
(2, 2) |
leg_stock |
40 mm board, oak |
stock |
20 mm board, oak |
Change them in a design file (see Change an example):
Drawings¶
The plans in one PDF: plans.pdf.
Cut list¶
leg 530 x 40 x 40 mm oak, 4 pieces: leg_front_left, leg_front_right, leg_back_right, leg_back_left
- mortise 50 x 8 mm, 33 deep, in back_edge
- haunch mortise 20 x 8 mm, 10 deep, in back_edge at right_end
- mortise 50 x 8 mm, 33 deep, in top_face
- haunch mortise 20 x 8 mm, 10 deep, in top_face at right_end
- mortise 20 x 8 mm, 26 deep, in back_edge
- mortise 20 x 8 mm, 26 deep, in top_face
apron_front_back 382 x 80 x 20 mm oak, 2 pieces: apron_front, apron_back
- haunched tenon 50 x 8 mm, 31 long, haunch 10 long, end mitred 45 deg towards bottom_face, on left_end
- haunched tenon 50 x 8 mm, 31 long, haunch 10 long, end mitred 45 deg towards bottom_face, on right_end
- 2 x mortise 42 x 8 mm, 6 deep, in bottom_face
apron_right_left 382 x 80 x 20 mm oak, 2 pieces: apron_right, apron_left
- haunched tenon 50 x 8 mm, 31 long, haunch 10 long, end mitred 45 deg towards bottom_face, on left_end
- haunched tenon 50 x 8 mm, 31 long, haunch 10 long, end mitred 45 deg towards bottom_face, on right_end
- 2 x mortise 50 x 8 mm, 6 deep, in bottom_face
stretcher 368 x 30 x 20 mm oak, 4 pieces: stretcher_front, stretcher_right, stretcher_back, stretcher_left
- tenon 20 x 8 mm, 24 long, end mitred 45 deg towards bottom_face, on left_end
- tenon 20 x 8 mm, 24 long, end mitred 45 deg towards bottom_face, on right_end
top 450 x 150 x 20 mm oak, 2 pieces: top_1, top_3
- 4 x pilot hole ø3, 10 deep, drill point 118 deg, in bottom_face, 145 from left_end, 65 from front_edge; 305 from left_end, 65 from front_edge; 385 from left_end, 145 from front_edge; 65 from left_end, 145 from front_edge, for a 4 x 30 screw
top_2 450 x 150 x 20 mm oak
button 36 x 40 x 20 mm oak, 8 pieces: button_front_1, button_front_2, button_right_1, button_right_2, button_back_1, button_back_2, button_left_1, button_left_2
- end rabbet 6 mm, 14 deep, in top_face at right_end
- clearance hole ø4.5, countersunk ø8, 90 deg, in bottom_face, centered, for a 4 x 30 screw
Code¶
From woodwright/examples/projects.py, which imports the names it uses (see From an example to your own design):
def side_table(
width: float = 400,
depth: float = 400,
height: float = 550,
overhang: float = 25,
apron_width: float = 80,
stretcher_width: float = 30,
stretcher_height: float = 150,
setback: float = 3,
top_boards: int = 3,
buttons: tuple[int, int] = (2, 2),
leg_stock: Stock = CHAIR_LEG_STOCK,
stock: Stock = OAK,
) -> Assembly:
"""A side table: legs, aprons and stretchers, a solid top held down by
buttons; outside sizes.
As in the table, the aprons' mitred tenons are set down from the tops
of the legs, with haunches; the top, glued up from `top_boards` boards,
overhangs the frame by `overhang` and is held by buttons in short
mortises in the aprons, so it can move. Stretchers near the floor, all
at the same level (their top edges at `stretcher_height`), are centered
on the legs, with blind tenons mitred at their ends like the aprons',
meeting inside the legs.
"""
asm = Assembly("side_table", root_location=STANDING)
legs, aprons = _table_frame(
asm,
width,
depth,
height - stock.thickness,
apron_width,
setback,
leg_stock,
stock,
shoulder=(10, 20),
haunch_length=10,
)
stretchers = _stretchers((stretcher_height, stretcher_height), stretcher_width)
_leg_rails(asm, legs, width, depth, stretchers, stock, mitred=True)
top = _glued_top(
asm,
aprons[0],
"top",
width,
depth,
overhang,
overhang,
top_boards,
leg_stock,
setback,
stock,
)
_buttons(asm, aprons, buttons, stock, top, overhang)
return asm
Exported with woodwright 0.9.0 on 2026-10-25.