Skip to content

Butt box

projects.butt_box

An open box: four walls butt-jointed at the corners on a bottom; outside sizes.

Butt box, assembled

Butt box, exploded

Parameters

Parameter Default
length 300
depth 200
height 100
stock 10 mm board, oak

Change them in a design file (see Change an example):

from woodwright.examples import projects

design = projects.butt_box(length=375)

Drawings

The plans in one PDF: plans.pdf.

Assembly

assembly

Parts

parts

Bottom

bottom

Front back

front back

Left right

left right

Cut list

front_back  300 x 90 x 10 mm  oak, 2 pieces: front, back
left_right  180 x 90 x 10 mm  oak, 2 pieces: left, right
bottom      300 x 200 x 10 mm  oak

Code

From woodwright/examples/projects.py, which imports the names it uses (see From an example to your own design):

def butt_box(
    length: float = 300,
    depth: float = 200,
    height: float = 100,
    stock: Stock = THIN_OAK,
) -> Assembly:
    """An open box: four walls butt-jointed at the corners on a bottom; outside sizes."""
    t = stock.thickness
    asm = Assembly("butt_box", root_location=BOX_FRONT)
    wall_height = height - t
    front = asm.add(Board("front", stock, length=length, width=wall_height))
    # The back and the right side are mirror images of the front and the
    # left side, all with their reference faces outside.
    back = asm.add(Board("back", stock, length=length, width=wall_height, mirror=True))
    left = asm.add(Board("left", stock, length=depth - 2 * t, width=wall_height))
    right = asm.add(Board("right", stock, length=depth - 2 * t, width=wall_height, mirror=True))
    bottom = asm.add(Board("bottom", stock, length=length, width=depth))
    # The sides between the front and the back, their bottom (front) edges level.
    for side, front_end, back_end in [
        (left, front.left_end, back.left_end),
        (right, front.right_end, back.right_end),
    ]:
        asm.join(Butt(front.bottom_face, side.left_end, position=flush_with(front_end)))
        asm.join(Butt(back.bottom_face, side.right_end, position=flush_with(back_end)))
    # The walls stand on the bottom, flush with its sides. The back faces
    # the other way than the front, so its reference face (outside) is flush
    # with the bottom's back edge.
    asm.join(Butt(front.front_edge, bottom.top_face, position=flush_with(front.left_end)))
    asm.join(
        Butt(
            back.front_edge,
            bottom.top_face,
            position=flush_with(back.left_end),
            flush=(back.ref_face, bottom.back_edge),
        )
    )
    return asm

Exported with woodwright 0.9.0 on 2026-10-25.