Butt shelf¶
projects.butt_shelf
Two sides with a top, a bottom and a middle shelf butted between them, e.g. to be screwed through the sides (the screws aren't modelled).
Outside sizes; the shelves' design length is between the sides.
Parameters¶
| Parameter | Default |
|---|---|
height |
600 |
width |
500 |
depth |
200 |
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 600 x 200 x 20 mm oak, 2 pieces: left, right
top_bottom_shelf 460 x 200 x 20 mm oak, 3 pieces: top, bottom, shelf
Code¶
From woodwright/examples/projects.py, which imports the names it uses (see From an example to your own design):
def butt_shelf(
height: float = 600,
width: float = 500,
depth: float = 200,
stock: Stock = OAK,
) -> Assembly:
"""Two sides with a top, a bottom and a middle shelf butted between them,
e.g. to be screwed through the sides (the screws aren't modelled).
Outside sizes; the shelves' design length is between the sides.
"""
t = stock.thickness
asm = Assembly("butt_shelf", root_location=CASE_SIDE)
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(Butt(side.bottom_face, top_end, position=flush_with(side.right_end)))
asm.join(Butt(side.bottom_face, bottom_end, position=flush_with(side.left_end)))
asm.join(Butt(side.bottom_face, shelf_end, position=offset(height / 2, side.right_end)))
return asm
Exported with woodwright 0.9.0 on 2026-10-25.