Headphone Stand
A desk stand for over-ear headphones. The whole part is one continuous side profile (straight lines, splines and arcs in a single sketch); the same outline offset inwards is cut out, leaving a 6 mm frame that weighs about half of a solid stand. Extruded to 40 mm and rounded with a 2 mm fillet on the edges you touch. The top arc meets the rounded tips tangentially, so the headband rests on a smooth curve. Prints flat with no supports, then stands on its base edge. 130 x 200 x 40 mm. Height, base width, rest width, neck width, thickness and rim width are parameters.
# Headphone Stand - a side profile drawn with sketch + spline, then extruded
# Lightened: the outline offset inwards by rim is cut out, leaving a frame of constant width
# Printing orientation: the profile lies in the XY plane, thickness along Z. To use it, stand it on the y = 0 edge
@param 150..215 desc:"Height (mm)"
h = 200
@param 90..180 desc:"Base width (mm)"
base_w = 130
@param 80..150 desc:"Headband rest width (mm)"
top_w = 110
@param 16..40 desc:"Neck width (mm)"
neck = 24
@param 20..60 desc:"Thickness = depth (mm)"
t = 40
@param 4..12 desc:"Rim width around the lightening window (mm)"
rim = 6
tip_r = 4 # rounding at both ends of the rest
tip_y = h - 14 # height of the centres of the end roundings
# Top arc (radius crown), chosen tangent to both end roundings
crown = ((top_w / 2) ** 2 + (h - tip_y) ** 2 - tip_r ** 2) / (2 * (h - tip_y - tip_r))
k = crown / (crown - tip_r)
tx = k * top_w / 2 # tangent point
ty = h - crown + k * (crown - (h - tip_y))
# One continuous outline, counter-clockwise from the bottom right
outline = sketch [
(-base_w / 2, 0), (base_w / 2, 0), (base_w / 2, 6), # bottom of the base
spline [(base_w / 4, 12), (neck / 2 + 3, 32), (neck / 2, 50), (neck / 2, h / 2),
(neck / 2, h - 50), (neck / 2 + 6, h - 32), (top_w / 2 - 10, h - 22),
(top_w / 2, tip_y - tip_r)], # right side of the neck
arc (top_w / 2, tip_y - tip_r) (top_w / 2 + tip_r, tip_y) (tx, ty), # right tip
arc (tx, ty) (0, h) (-tx, ty), # headband rest (top)
arc (-tx, ty) (-top_w / 2 - tip_r, tip_y) (-top_w / 2, tip_y - tip_r), # left tip
spline [(-top_w / 2 + 10, h - 22), (-neck / 2 - 6, h - 32), (-neck / 2, h - 50),
(-neck / 2, h / 2), (-neck / 2, 50), (-neck / 2 - 3, 32),
(-base_w / 4, 12), (-base_w / 2, 6)] # left side of the neck
]
stand = outline | diff (outline | offset -rim) # frame: rim-wide border, window inside
| extrude t
| edges [>Z, <Z] | fillet 2 # round the edges your hand touches
assert stand.solids == 1
assert stand.bbox.x ~ base_w
assert stand.bbox.y ~ h
assert stand.bbox.z ~ t
stand