Fittings and adapters
Lip-Held Whistle Body
- Bounding box
- 18.1 × 18.1 × 28.0 mm
- Engine
- Precision B-rep
- Parameters
- 10
- Published
- August 17, 2026
Download
Free to download and use. See the terms.
The prompt
// ======================================================== // COMPACT LIP-HELD WHISTLE CANDY — max whistle strength // Not tuned to a specific frequency — optimized for a // loud edge tone via a small throat + sharp step + wide // resonance chamber, with an engraved grip groove. // Units: millimeters (mm) // ======================================================== $fn = 150; // --- Core tube dimensions --- tube_length = 28.0; // overall body length tube_dia = 18.0; // main body diameter (increased for wall strength — acoustics unaffected, set entirely by throat/chamber below) // --- Grip groove (engraved bite/lip channel) --- // A recessed channel is structurally safer than a raised flange: nothing // sticks out to shear off under bite force, teeth/lips settle naturally // into the concave channel, and it's undercut-free to mold/release. groove_depth = 1.5; // radial depth cut into the wall groove_radius = 1.6; // cross-section radius of the grooving tool (sets width ~3.2mm) groove_pos = 4.0; // sits in the inlet taper, where the bore is already narrowing — // wall here is thick, so the groove doesn't undercut it much // --- Inlet taper (smooth jet acceleration into throat) --- inlet_length = 5.0; inlet_start_dia = tube_dia; // --- Throat (jet formation — smaller = faster jet = louder) --- throat_dia = 1.8; throat_length = 1.8; // ~1x throat diameter, just enough to stabilize jet // --- Resonance chamber (sharp step edge = edge-tone generator) --- chamber_length = tube_length - inlet_length - throat_length; // 21.2 mm chamber_dia = 9.0; // wide relative to length = more volume = louder module whistle_body() { cylinder(h = tube_length, d = tube_dia, center = false); } module grip_groove() { // Torus cut into the outer wall at groove_pos, forming a rounded // engraved channel for teeth/lips to sink into translate([0, 0, groove_pos]) rotate_extrude() translate([tube_dia/2 - groove_depth + groove_radius, 0]) circ
Parameters
| Name | Value | Range |
|---|---|---|
| Overall body length | 28 mm | 10 – 60 |
| Main body diameter | 18 mm | 10 – 40 |
| Inlet taper length | 5 mm | 1 – 15 |
| Inlet start diameter | 18 mm | 2 – 40 |
| Throat diameter | 1.8 mm | 0.4 – 6 |
| Throat length | 1.8 mm | 0.5 – 10 |
| Resonance chamber diameter | 9 mm | 3 – 30 |
| Grip groove radial depth | 1.5 mm | 0.2 – 3 |
| Grip groove cross-section radius | 1.6 mm | 0.2 – 4 |
| Grip groove Z position | 4 mm | 0 – 20 |
Every value above is a live dimension. Open a model like this in the editor and each one becomes a slider you can drag before exporting.
More models
Browse the full gallery →Trumpet Lyre Mount Main Body
A single 3D mechanical CAD part for a trumpet music lyre mount (Main Body with Paddle). Geometry details: 1. A 18mm-wide semi-cylindrical clamp arc for a 28mm diameter cylinder, w
Spur Gearbox
design gearbox
UAV Ogive Nose Cone
Design a watertight, 3D-printable aerodynamic nose cone module for a fixed-wing tactical UAV, optimized for printing in Carbon Fiber Filled PETG (PETG-CF). The base of the nose con
