Table¶
projects.table
A table: legs and wide aprons, a solid top held down by buttons; outside sizes.
width and depth are those of the frame, the top overhangs it by
overhang. The aprons are wide, so their tenons are set down from the
top of the legs, with haunches filling the wide shoulders: the legs
keep their tops whole, and the aprons can't twist. The top is glued up
from top_boards boards edge to edge, its grain from side to side. It
is not glued to the frame: wooden buttons screwed to its underside have
tongues in short mortises in the inside of the aprons (buttons along
the front and back, and along the sides), so it can move across its
grain: in and out of the mortises at the front and back, along them at
the sides, where they are longer.
Parameters¶
| Parameter | Default |
|---|---|
width |
1200 |
depth |
750 |
height |
750 |
overhang |
40 |
apron_width |
120 |
setback |
3 |
top_boards |
4 |
buttons |
(3, 2) |
leg_stock |
60 mm board, oak |
stock |
20 mm board, oak |
top_stock |
30 mm board, oak |
Change them in a design file (see Change an example):
Drawings¶
The plans in one PDF: plans.pdf.
Cut list¶
leg 720 x 60 x 60 mm oak, 4 pieces: leg_front_left, leg_front_right, leg_back_right, leg_back_left
- mortise 80 x 8 mm, 53 deep, in back_edge
- haunch mortise 30 x 8 mm, 10 deep, in back_edge at right_end
- mortise 80 x 8 mm, 53 deep, in top_face
- haunch mortise 30 x 8 mm, 10 deep, in top_face at right_end
apron_front_back 1182 x 120 x 20 mm oak, 2 pieces: apron_front, apron_back
- haunched tenon 80 x 8 mm, 51 long, haunch 10 long, end mitred 45 deg towards bottom_face, on left_end
- haunched tenon 80 x 8 mm, 51 long, haunch 10 long, end mitred 45 deg towards bottom_face, on right_end
- 3 x mortise 42 x 8 mm, 6 deep, in bottom_face
apron_right_left 732 x 120 x 20 mm oak, 2 pieces: apron_right, apron_left
- haunched tenon 80 x 8 mm, 51 long, haunch 10 long, end mitred 45 deg towards bottom_face, on left_end
- haunched tenon 80 x 8 mm, 51 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
top_1_4 1280 x 207.5 x 30 mm oak, 2 pieces: top_1, top_4
- 3 x pilot hole ø3, 15 deep, drill point 118 deg, in bottom_face, 280 and 1000 from left_end, centered; 80 from front_edge, for a 4 x 35 screw
top_2_3 1280 x 207.5 x 30 mm oak, 2 pieces: top_2, top_3
- 2 x pilot hole ø3, 15 deep, drill point 118 deg, in bottom_face, 80 and 1200 from left_end; 50 from front_edge, for a 4 x 35 screw
button 36 x 40 x 20 mm oak, 10 pieces: button_front_1, button_front_2, button_front_3, button_right_1, button_right_2, button_back_1, button_back_2, button_back_3, 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 35 screw
Code¶
From woodwright/examples/projects.py, which imports the names it uses (see From an example to your own design):
def table(
width: float = 1200,
depth: float = 750,
height: float = 750,
overhang: float = 40,
apron_width: float = 120,
setback: float = 3,
top_boards: int = 4,
buttons: tuple[int, int] = (3, 2),
leg_stock: Stock = TABLE_LEG_STOCK,
stock: Stock = OAK,
top_stock: Stock = THICK_OAK,
) -> Assembly:
"""A table: legs and wide aprons, a solid top held down by buttons; outside sizes.
`width` and `depth` are those of the frame, the top overhangs it by
`overhang`. The aprons are wide, so their tenons are set down from the
top of the legs, with haunches filling the wide shoulders: the legs
keep their tops whole, and the aprons can't twist. The top is glued up
from `top_boards` boards edge to edge, its grain from side to side. It
is not glued to the frame: wooden buttons screwed to its underside have
tongues in short mortises in the inside of the aprons (`buttons` along
the front and back, and along the sides), so it can move across its
grain: in and out of the mortises at the front and back, along them at
the sides, where they are longer.
"""
asm = Assembly("table", root_location=STANDING, description=TABLE_DESCRIPTION)
_, aprons = _table_frame(
asm,
width,
depth,
height - top_stock.thickness,
apron_width,
setback,
leg_stock,
stock,
shoulder=(10, 30),
haunch_length=10,
)
top = _glued_top(
asm,
aprons[0],
"top",
width,
depth,
overhang,
overhang,
top_boards,
leg_stock,
setback,
top_stock,
)
_buttons(asm, aprons, buttons, stock, top, overhang)
return asm
Exported with woodwright 0.9.0 on 2026-10-25.