Bow saw frame¶
projects.bow_saw_frame
The frame of a bow saw: two arms and a stretcher between their middles, tenoned into their inner edges.
The blade (at the bottom) and the string (at the top) aren't modelled.
Parameters¶
| Parameter | Default |
|---|---|
arm_length |
350 |
arm_width |
40 |
stretcher_length |
500 |
stretcher_width |
30 |
stock |
22 mm board, oak |
Change them in a design file (see Change an example):
Drawings¶
The plans in one PDF: plans.pdf.
Cut list¶
arm 350 x 40 x 22 mm oak, 2 pieces: left_arm, right_arm
- mortise 20 x 8 mm, 27 deep, in back_edge
stretcher 550 x 30 x 22 mm oak
- tenon 20 x 8 mm, 25 long, on left_end
- tenon 20 x 8 mm, 25 long, on right_end
Code¶
From woodwright/examples/projects.py, which imports the names it uses (see From an example to your own design):
def bow_saw_frame(
arm_length: float = 350,
arm_width: float = 40,
stretcher_length: float = 500,
stretcher_width: float = 30,
stock: Stock = BOW_SAW_STOCK,
) -> Assembly:
"""The frame of a bow saw: two arms and a stretcher between their middles,
tenoned into their inner edges.
The blade (at the bottom) and the string (at the top) aren't modelled.
"""
asm = Assembly("bow_saw_frame", root_location=STANDING)
left = asm.add(Board("left_arm", stock, length=arm_length, width=arm_width))
right = asm.add(Board("right_arm", stock, length=arm_length, width=arm_width))
stretcher = asm.add(Board("stretcher", stock, length=stretcher_length, width=stretcher_width))
# The arms face each other with their back and front edges.
for tenon, mortise in [
(stretcher.left_end, left.back_edge),
(stretcher.right_end, right.front_edge),
]:
asm.join(MortiseTenon(tenon=tenon, mortise=mortise, tenon_length=25))
return asm
Exported with woodwright 0.9.0 on 2026-10-25.