guitar

3D printable guitar parts
git clone https://git.woozle.org/neale/guitar.git

Neale Pickett  ·  2025-12-28

tuner-plate.scad

  1$fn = 60;
  2
  3// overall thickness
  4z = 2.3; // .1
  5
  6// tunerposition / smallHoleR is on x = 0, original screw distance from center looks like 20mm
  7screwHoleX = 20; // .1
  8
  9// original looks like 2.5-ish
 10screwHoleR = 1.5; // .1
 11
 12// amount of X to travel when unclicking the tuner
 13bigHoleX = -5; // .1
 14
 15// measure the max space between the screw and the tuner gears etc!
 16materialAroundScrewHole = 2.0;
 17
 18// original 25 / 2
 19bodyOuterR = 12.5;
 20
 21// measured from center of hole!
 22slitX = 8.0; // .1
 23
 24// ~3mm in original
 25feetZ = 3; // .1
 26
 27// original is 5.4-ish
 28feetX = 5; // .1
 29
 30// how much 
 31feetTopCylRatio = .3; // amount of rounding on top
 32
 33feetCylZ = feetTopCylRatio * feetX / 2; 
 34
 35bigHoleR = 4.1;
 36smallHoleR1 = 2.7;
 37smallHoleR2 = 3.9;
 38screwHoleOuterR = screwHoleR + materialAroundScrewHole;
 39
 40
 41
 42
 43difference () {
 44
 45    union () {
 46        hull () {
 47            cylinder(r = bodyOuterR, h = z);
 48
 49            translate([screwHoleX, 0, 0])
 50                cylinder(r = screwHoleOuterR, h = z);
 51        }
 52
 53        // feet, let's not use intersection but diff of diff
 54      if (false) difference () {
 55            union () {
 56                cubeC([feetX, 2 * bodyOuterR, z + feetZ - feetCylZ], [1, 1, 0]);
 57
 58                translate([0, 0, z + feetZ - feetCylZ])
 59                scale([1, 1, feetTopCylRatio])
 60                    rotate([90, 0, 0])
 61                        cylinder(r = feetX / 2, h = bodyOuterR * 2, center = true);
 62
 63            }
 64            // negative part:
 65
 66            // cut out mid: 
 67            // cubeC([feetX * 2, (bigHoleR + .3)  * 2, z * 5], center = [1, 1, 0]);
 68            cylinder (r = bigHoleR + .3, h = z * 5);
 69
 70            difference () {
 71                cubeC([bodyOuterR * 2, bodyOuterR * 3, z * 15]);
 72                cylinder(r = bodyOuterR - 1, h = z * 20, center = true);
 73            }
 74
 75        }
 76
 77
 78    }
 79
 80    // negative parts:
 81    translate([screwHoleX, 0, -1])
 82        cylinder(r = screwHoleR, h = z + 2);
 83
 84
 85    // Where the tuner normally sits
 86    // I made the angle of the cone steeper for a grippier grip on the tuner
 87    cylinder(r1 = smallHoleR1, r2 = smallHoleR2, h = z);
 88
 89    translate([bigHoleX, 0, -1])
 90        cylinder(r = bigHoleR, h = z + 2);
 91
 92    // slit:
 93    // translate([.5 * slitX, 0, 0])
 94    //     cube([slitX, 1.5, 2.5 * z], center = true);
 95    cubeC([slitX, 1.5, 2.5 * z], [0, 1, 1]);
 96
 97    translate([slitX, 0, 0])
 98        cylinder(r = 1.5 / 2, h = 2.7 * z);
 99
100    translate([screwHoleX, 0, 10+z-1]) cube(20, center=true);
101
102}
103
104
105
106
107module cubeC(cubeSize, centeredAxes = [true, true, true]) {
108    translate([centeredAxes[0] ? -.5 * cubeSize[0] : 0,
109               centeredAxes[1] ? -.5 * cubeSize[1] : 0,
110               centeredAxes[2] ? -.5 * cubeSize[2] : 0]) 
111        cube(cubeSize, center = false);
112}