/
headstock.scad
78 lines (74 loc) · 3.01 KB
/
headstock.scad
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
66
67
68
69
70
71
72
73
74
75
76
77
78
module headstock (clearance) {
union () {
difference () {
translate([0,0,neckL+nutL+clearance]){
difference () {
union () {
rotate([90-headstockAngle, 0,180])
difference () {
translate([0,0,-headstockD])
resize([headstockResizeW, headstockResizeL, 0])
linear_extrude(headstockD, convexity=10)
import (file = headstockShape);
}
difference() {
scale([1, neckD/neckW1*2])
cylinder(headstockResizeL/2, neckW1/2, neckW1/2);
rotate([headstockAngle,0,0])
translate([-neckW2/2, 0, -30])
cube([headstockResizeL, neckW2, neckL+2]);
}
}
rotate([90-headstockAngle, 0,180]) {
translate([15,38, -headstockD]) {
tuner("R");
translate([-7,25])
tuner("R");
}
translate([-30,-29,0]) rotate ([0,0, -17]) {
translate([0,55, -headstockD])
tuner("L");
translate([-3,80, -headstockD])
tuner("L");
}
}
}
}
translate([0,0, clearance])
scale([1, neckD/neckW1*2])
cylinder(neckL+nutL, neckW2/2, neckW1/2);
}
intersection () {
translate([0,0, clearance]) scale([1, neckD/neckW1*2])
cylinder(neckL+nutL, neckW2/2, neckW1/2);
headstockSocket(clearance);
}
}
}
module headstockSocket(clr) {
translate([-neckW1*0.2,0, neckL+nutL-neckW1/2])
rotate([90, 0, 0])
linear_extrude(20, convexity=10)
offset (-clr) {
union () {
square ([neckW1*0.4, neckW1/2+clearance*2]);
translate([0, neckW1/4, 0]) circle(neckW1/8);
translate([neckW1*0.4, neckW1/4, 0]) circle(neckW1/8);
}
}
}
module tuner (side) {
// side = 0 for left, 1 for right
translate([0,0,-1]) cylinder (headstockD+2, tunerHole, tunerHole);
if (side == "L") {
negation = 1;
rotate([0,0, 180 + tunerScrewAngle * negation])
translate([0, tunerScrewDistance, 0])
cylinder (tunerScrewL, tunerScrew, tunerScrew);
} else {
negation = -1;
rotate([0,0, 180 + tunerScrewAngle * negation])
translate([0, tunerScrewDistance, 0])
cylinder (tunerScrewL, tunerScrew, tunerScrew);
}
}