Let in dovetail rail¶
joints.let_in_dovetail_rail
A rail lapped across the top of a square leg as let_in_rail, its lap
cut to a half dovetail: flat at the bottom, sloped 1:6 at the top, so
the rail can't be pulled out of the leg along its length. The rail is
deeper than it is thick (2:3), flush with the top of the leg; the notch
in the leg is open at the top.
Parameters¶
| Parameter | Default |
|---|---|
leg_length |
400 |
rail_length |
300 |
stock |
70 mm board, oak |
Change them in a design file (see Change an example):
Drawings¶
The plans in one PDF: plans.pdf.
Cut list¶
leg 400 x 70 x 70 mm oak
- dovetail socket 93.3 to 105 mm, 17.5 deep, 1:6, in bottom_face
rail 370 x 105 x 70 mm oak
- half-dovetail lap 35 mm thick, 70 long, 93.3 wide at the shoulder, 1:6, on left_end
Code¶
From woodwright/examples/joints.py, which imports the names it uses (see From an example to your own design):
def let_in_dovetail_rail(
leg_length: float = 400, rail_length: float = 300, stock: Stock = POST_STOCK
) -> Assembly:
"""A rail lapped across the top of a square leg as `let_in_rail`, its lap
cut to a half dovetail: flat at the bottom, sloped 1:6 at the top, so
the rail can't be pulled out of the leg along its length. The rail is
deeper than it is thick (2:3), flush with the top of the leg; the notch
in the leg is open at the top.
"""
asm = Assembly("let_in_dovetail_rail", root_location=STANDING)
leg = asm.add(Board("leg", stock, length=leg_length, width=stock.thickness))
rail = asm.add(Board("rail", stock, length=rail_length, width=stock.thickness * 1.5))
asm.join(
DovetailHalfLap(
lap=rail.left_end,
socket=leg.back_edge,
position=flush_with(leg.right_end),
flush=(leg.bottom_face, rail.top_face),
over=True,
proud=stock.thickness / 4,
slope=6,
sloped=(rail.back_edge,),
)
)
return asm
Exported with woodwright 0.9.0 on 2026-10-25.