Ledged door¶
projects.ledged_door
A ledged cupboard door: tongue-and-groove boards on two ledges across the back.
The boards stand side by side, each tongued into a groove along the
next, not glued, so they can move; the outer boards' outer edges are
plain. On the front the arrises along the joints are chamfered, so
that each joint shows as a V and a gap opening as the boards shrink
is hidden. The ledges, ledge_from_ends from the top and the bottom
and ledge_inset in from the sides, are screwed to each board from
the back, one screw in the middle of each board, so that the boards can
still move; no braces.
Parameters¶
| Parameter | Default |
|---|---|
height |
600 |
width |
400 |
boards |
4 |
ledge_width |
80 |
ledge_from_ends |
80 |
ledge_inset |
15 |
chamfer |
3 |
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¶
board_1 600 x 100 x 20 mm oak
- chamfer 3 mm on bottom_face_back_edge_arris
- groove 8 mm, 10 deep, in back_edge
- 2 x pilot hole ø3, 10 deep, drill point 118 deg, in top_face, 120 and 480 from left_end; centered, for a 4 x 30 screw
board 600 x 110 x 20 mm oak, 2 pieces: board_2, board_3
- chamfer 3 mm on bottom_face_front_edge_arris
- chamfer 3 mm on bottom_face_back_edge_arris
- tongue 8 mm thick, 10 long, on front_edge
- groove 8 mm, 10 deep, in back_edge
- 2 x pilot hole ø3, 10 deep, drill point 118 deg, in top_face, 120 and 480 from left_end; centered, for a 4 x 30 screw
board_4 600 x 110 x 20 mm oak
- chamfer 3 mm on bottom_face_front_edge_arris
- tongue 8 mm thick, 10 long, on front_edge
- 2 x pilot hole ø3, 10 deep, drill point 118 deg, in top_face, 120 and 480 from left_end; centered, for a 4 x 30 screw
ledge 370 x 80 x 20 mm oak, 2 pieces: ledge_top, ledge_bottom
- 4 x clearance hole ø4.5, countersunk ø8, 90 deg, in top_face, 35 to 335 every 100 from left_end; 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 ledged_door(
height: float = 600,
width: float = 400,
boards: int = 4,
ledge_width: float = 80,
ledge_from_ends: float = 80,
ledge_inset: float = 15,
chamfer: float = 3,
stock: Stock = OAK,
) -> Assembly:
"""A ledged cupboard door: tongue-and-groove boards on two ledges across the back.
The boards stand side by side, each tongued into a groove along the
next, not glued, so they can move; the outer boards' outer edges are
plain. On the front the arrises along the joints are chamfered, so
that each joint shows as a V and a gap opening as the boards shrink
is hidden. The ledges, `ledge_from_ends` from the top and the bottom
and `ledge_inset` in from the sides, are screwed to each board from
the back, one screw in the middle of each board, so that the boards can
still move; no braces.
"""
# The boards' reference faces are at the back, their back edges to the right.
asm = Assembly("ledged_door", root_location=STANDING)
door = [
asm.add(Board(f"board_{i + 1}", stock, length=height, width=width / boards))
for i in range(boards)
]
for a, b in itertools.pairwise(door):
asm.join(TongueAndGroove(tongue=b.front_edge, groove=a.back_edge))
for edge in (a.back_edge, b.front_edge):
edge.part.cut(Chamfer(edge.part.arris(edge.part.bottom_face, edge), size=chamfer))
first = door[0]
for name, end in [("top", first.right_end), ("bottom", first.left_end)]:
ledge = asm.add(
Board(f"ledge_{name}", stock, length=width - 2 * ledge_inset, width=ledge_width)
)
asm.join(
Butt(
first.top_face,
ledge.bottom_face,
position=offset(ledge_from_ends, ref=end),
flush=(first.front_edge, ledge.left_end),
across=offset(ledge_inset),
)
)
for i, board in enumerate(door):
at = {ledge.left_end: (i + 0.5) * board.width - ledge_inset}
asm.join(Screw(ledge.top_face, into=board, length=30, at=at))
return asm
Exported with woodwright 0.9.0 on 2026-10-25.