Skip to content

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.

Coat rack, assembled

Coat rack, exploded

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):

from woodwright.examples import projects

design = projects.coat_rack(length=750)

Drawings

The plans in one PDF: plans.pdf.

Assembly

assembly

Parts

parts

Board

board

Peg

peg

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.