Skip to content

Rabbeted box

projects.rabbeted_box

An open box: the sides' ends in rabbets at the ends of the front and the back, the bottom in rabbets along the inside of the walls' bottom edges, flush with them; outside sizes.

The sides and the bottom are as long (and wide) as the inside of the box; the rabbets add to them. The back and the right side are mirror images of the front and the left side, all with their reference faces outside.

Rabbeted box, assembled

Rabbeted box, exploded

Parameters

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

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

from woodwright.examples import projects

design = projects.rabbeted_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 100 x 12 mm  oak, 2 pieces: front, back
            - end rabbet 12 mm, 6 deep, in bottom_face at left_end
            - end rabbet 12 mm, 6 deep, in bottom_face at right_end
            - rabbet 10 mm, 6 deep, in bottom_face at front_edge
left_right  188 x 100 x 12 mm  oak, 2 pieces: left, right
            - rabbet 10 mm, 6 deep, in bottom_face at front_edge
bottom      288 x 188 x 10 mm  oak, mirror image

Code

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

def rabbeted_box(
    length: float = 300,
    depth: float = 200,
    height: float = 100,
    stock: Stock = SIDE_OAK,
    bottom_stock: Stock = THIN_OAK,
) -> Assembly:
    """An open box: the sides' ends in rabbets at the ends of the front and
    the back, the bottom in rabbets along the inside of the walls' bottom
    edges, flush with them; outside sizes.

    The sides and the bottom are as long (and wide) as the inside of the
    box; the rabbets add to them. The back and the right side are mirror
    images of the front and the left side, all with their reference faces
    outside.
    """
    t = stock.thickness
    asm = Assembly("rabbeted_box", root_location=BOX_FRONT)
    front = asm.add(Board("front", stock, length=length, width=height))
    back = asm.add(Board("back", stock, length=length, width=height, mirror=True))
    left = asm.add(Board("left", stock, length=depth - 2 * t, width=height))
    right = asm.add(Board("right", stock, length=depth - 2 * t, width=height, mirror=True))
    # The bottom lies with its reference face down; mirrored, so that its
    # left end is still at the left.
    bottom = asm.add(
        Board("bottom", bottom_stock, length=length - 2 * t, width=depth - 2 * t, mirror=True)
    )
    # The sides' right ends are at the front, so that their front edges are
    # at the bottom, as the other walls' are.
    for side, front_end, back_end in [
        (left, front.left_end, back.left_end),
        (right, front.right_end, back.right_end),
    ]:
        asm.join(RabbetJoint(rabbet=front.bottom_face, end=side.right_end, at=front_end))
        asm.join(RabbetJoint(rabbet=back.bottom_face, end=side.left_end, at=back_end))
    for wall, edge in [
        (front, bottom.front_edge),
        (back, bottom.back_edge),
        (left, bottom.left_end),
        (right, bottom.right_end),
    ]:
        # Along the front and the back, the rabbet runs into those at the corners.
        through = wall in (front, back)
        asm.join(
            RabbetJoint(rabbet=wall.bottom_face, end=edge, at=wall.front_edge, through=through)
        )
    return asm

Exported with woodwright 0.9.0 on 2026-10-25.