Coat rack¶
projects.coat_rack
A coat rack: a board on the wall with pegs round pegs, evenly spaced.
The pegs (peg_length long from the board) have round tenons tenon
wide, glued into blind holes in the board's front, their ends
chamfered. The board's front arrises along its length are chamfered;
it is screwed to the wall through two counterbored holes between the
outer pegs, to be closed by plugs.
Parameters¶
| Parameter | Default |
|---|---|
length |
600 |
width |
100 |
pegs |
5 |
peg_length |
80 |
tenon |
12 |
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 600 x 100 x 20 mm oak
- chamfer 3 mm on top_face_front_edge_arris
- chamfer 3 mm on top_face_back_edge_arris
- 2 x screw hole ø5, counterbored ø10, 8 deep, in top_face, 120 from left_end and right_end; centered, for a 4.5 x 50 screw into the wall
- 5 x hole ø12, 17 deep, in top_face, 60, 180, 420 and 540 from left_end, centered; centered
peg ø22 x 95 mm oak, 5 pieces: peg_1, peg_2, peg_3, peg_4, peg_5
- chamfer 2 mm around right_end
- round tenon ø12, 15 long, end chamfered 1 mm, on left_end
Code¶
From woodwright/examples/projects.py, which imports the names it uses (see From an example to your own design):
def coat_rack(
length: float = 600,
width: float = 100,
pegs: int = 5,
peg_length: float = 80,
tenon: float = 12,
chamfer: float = 3,
stock: Stock = OAK,
) -> Assembly:
"""A coat rack: a board on the wall with `pegs` round pegs, evenly spaced.
The pegs (`peg_length` long from the board) have round tenons `tenon`
wide, glued into blind holes in the board's front, their ends
chamfered. The board's front arrises along its length are chamfered;
it is screwed to the wall through two counterbored holes between the
outer pegs, to be closed by plugs.
"""
asm = Assembly("coat_rack", root_location=orient(top_face=FRONT, back_edge=UP))
board = asm.add(Board("board", stock, length=length, width=width))
for edge in (board.front_edge, board.back_edge):
board.cut(Chamfer(board.arris(board.top_face, edge), size=chamfer))
pitch = length / pegs
for i in range(pegs):
peg = asm.add(Rod(f"peg_{i + 1}", PEG_STOCK, length=peg_length))
peg.cut(EndChamfer(peg.right_end, size=2))
asm.join(
RoundMortiseTenon(
tenon=peg.left_end,
mortise=board.top_face,
diameter=tenon,
length=15,
chamfer=1,
position=offset((i + 0.5) * pitch - PEG_STOCK.diameter / 2, ref=board.left_end),
)
)
for end in (board.left_end, board.right_end):
board.cut(
Hole(
board.top_face,
5,
at={end: pitch},
counterbore=10,
counterbore_depth=8,
kind="screw hole",
note="for a 4.5 x 50 screw into the wall",
)
)
return asm
Exported with woodwright 0.9.0 on 2026-10-25.