Bookshelf¶
projects.bookshelf
Two sides with a top and a bottom in rabbets and a middle shelf in dados.
Outside sizes; the shelves' design length is between the sides.
Parameters¶
| Parameter | Default |
|---|---|
height |
800 |
width |
500 |
depth |
250 |
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¶
left_right 800 x 250 x 20 mm oak, 2 pieces: left, right
- end rabbet 20 mm, 10 deep, in bottom_face at right_end
- end rabbet 20 mm, 10 deep, in bottom_face at left_end
- dado 20 mm, 6.5 deep, in bottom_face
top_bottom 480 x 250 x 20 mm oak, 2 pieces: top, bottom
shelf 473 x 250 x 20 mm oak
Code¶
From woodwright/examples/projects.py, which imports the names it uses (see From an example to your own design):
def bookshelf(
height: float = 800,
width: float = 500,
depth: float = 250,
stock: Stock = OAK,
) -> Assembly:
"""Two sides with a top and a bottom in rabbets and a middle shelf in dados.
Outside sizes; the shelves' design length is between the sides.
"""
t = stock.thickness
asm = Assembly("bookshelf", root_location=CASE_SIDE)
# Both sides have their reference faces outside and reference edges at
# the front, so they are mirror images; both have their right end up.
left = asm.add(Board("left", stock, length=height, width=depth))
right = asm.add(Board("right", stock, length=height, width=depth, mirror=True))
top = asm.add(Board("top", stock, length=width - 2 * t, width=depth))
bottom = asm.add(Board("bottom", stock, length=width - 2 * t, width=depth))
shelf = asm.add(Board("shelf", stock, length=width - 2 * t, width=depth))
for side, top_end, bottom_end, shelf_end in [
(left, top.left_end, bottom.left_end, shelf.left_end),
(right, top.right_end, bottom.right_end, shelf.right_end),
]:
asm.join(RabbetJoint(rabbet=side.bottom_face, end=top_end, at=side.right_end))
asm.join(RabbetJoint(rabbet=side.bottom_face, end=bottom_end, at=side.left_end))
asm.join(
DadoJoint(
dado=side.bottom_face, end=shelf_end, position=offset(height / 2, side.right_end)
)
)
return asm
Exported with woodwright 0.9.0 on 2026-10-25.