Parametric Guitar Pick by Andrew Russell is a 3d printable guitar pick where the size and shape can be easily modified.
Guitars
Being a musician, I wanted to create a parametric object that I could use and customize for myself. Guitar picks usually come in specific sizes and thicknesses. I feel like there is an opportunity for personalized guitar picks to be useful. Don’t like the rounded corners? Remove them. 1mm is too thick, yet 0.88mm is too thin? Choose a value in between.
The user can customize the following attributes:
- height
- weight
- thickness
- rounded corner radius
- rounded bottom radius
I was planning on allowing all edges to be rounded, but there were more complications than I first expected. I also set stretch goals to allow concave and sharkfin edges but I did not meet those goals.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 | // preview[view:south, tilt:top] /* [Main] */ //how wide to make the guitar pick base = 250; //how tall to make the guitar pick height = 300; //how thick to make the guitar pick thickness = 1; //how rounded to make the corners radii = [40, 40, 20]; //how curved to make the base (0 is straight) curve = 250; //adjusts how close the curve is to the center of the pick curve_offset = 14; //how smooth to render all circles smooth = 100; module pick(base, height, t, r, curve, co) { r0 = max(radii[0], 0.01); r1 = max(radii[1], 0.01); r2 = max(radii[2], 0.01); lw = r0 + r1; lh = r2 + max(r0, r1); hull() { translate([r0, r0, 0]) { cylinder(r=r0, h=t, $fn=smooth); } translate([base-r1, r1, 0]) { cylinder(r=r1, h=t, $fn=smooth); } translate([(base-r1+r0)/2, height-lh, 0]) { cylinder(r=r2, h=t, $fn=smooth); } if (curve > 0) { translate([base/2, curve-co, 0]) difference() { rotate_extrude($fn=smooth) translate([curve-.01, 0, 0]) square([.01, t]); translate([base/2-lw/2, -curve, -1]) cube([curve, curve*2, t+1]); translate([-curve, 0, -1]) cube([curve*2, curve, t+1]); translate([-curve-(base/2-lw/2), -curve, -1]) cube([curve, curve, t+1]); } } } } pick(base, height, thickness, radii, curve, curve_offset); |
Damn, this is a great idea.