/
fretBoard.scad
92 lines (85 loc) · 4.49 KB
/
fretBoard.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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
module fretboard () {
s = scaleLength;
difference () {
union () {
rotate([90,0,0]) {
translate([0,0, -fretBoardD])
linear_extrude(fretBoardD)
hull () {
translate([-neckW2/2,0,0])
square([neckW2, 0.1]);
translate([-neckW1/2,neckL,0])
square([neckW1, 0.1]);
}
// nut
translate([-neckW1/2, neckL, -fretBoardD-nutH])
difference () {
cube ([neckW1, nutL, fretBoardD+nutH]);
translate([neckW1/2-stringsWidthNut/2,nutL, nutH - stringHeight])
rotate([90,0,0])
translate([0,0, -1])
linear_extrude(nutL+2) hull () {
circle (s1g/2 + clearance);
translate([0, -nutH, 0]) circle (s1g/2);
}
translate([neckW1/2-stringsWidthNut/2+stringsWidthNut/3,nutL,nutH - stringHeight])
rotate([90,0,0])
translate([0,0, -1])
linear_extrude(nutL+2) hull () {
circle (s2g/2 + clearance);
translate([0, -nutH, 0]) circle (s2g/2);
}
translate([neckW1/2-stringsWidthNut/2+stringsWidthNut/3*2,nutL,nutH - stringHeight])
rotate([90,0,0])
translate([0,0, -1])
linear_extrude(nutL+2) hull () {
circle (s3g/2 + clearance);
translate([0, -nutH, 0]) circle (s3g/2);
}
translate([neckW1/2+stringsWidthNut/2,nutL,nutH - stringHeight])
rotate([90,0,0])
translate([0,0, -1])
linear_extrude(nutL+2) hull () {
circle (s4g/2 + clearance);
translate([0, -nutH, 0]) circle (s4g/2);
}
}
// /rotate
}
// lets do the frets
translate([0, fretBoardD, neckL]) {
rotate ([-90,0,90]) {
for (n = [1:1:numFrets]) {
translate([0, s-(s/(pow(2,(n/12)))), 0]) {
difference () {
cylinder (neckW1 + (neckW2-neckW1)/neckL*(s-(s/(pow(2,(n/12))))), fretH/2, fretH/2, true);
translate([0,-fretH/2, -(neckW1 + (neckW2-neckW1)/neckL*(s-(s/(pow(2,(n/12))))))/2])
rotate([0,45,0])
cube([fretH, fretH, fretH]);
translate([0,-fretH/2, (neckW1 + (neckW2-neckW1)/neckL*(s-(s/(pow(2,(n/12))))))/2])
rotate([0,45,0])
cube([fretH, fretH, fretH]);
}
}
}
}
}
}
// fret marks
fretmarks(1, 0);
}
}
module fretmarks (margin, clr) {
s = scaleLength;
for (n = fm) {
translate([0,0, neckL - (s-(s/(pow(2,((n-1)/12))))) - (((s-(s/(pow(2,((n)/12))))) - (s-(s/(pow(2,((n-1)/12)))))) / 2)])
rotate([-90,0,0]) cylinder (fretBoardD+margin, fretMark-clr, fretMark-clr);
}
// double mark
for (n = fm2) {
translate([neckW2/2-10,0, neckL - (s-(s/(pow(2,((n-1)/12))))) - (((s-(s/(pow(2,(n/12))))) - (s-(s/(pow(2,((n-1)/12)))))) / 2)])
rotate([-90,0,0]) cylinder (fretBoardD+margin, fretMark-clr, fretMark-clr);
translate([-neckW2/2+10,0, neckL - (s-(s/(pow(2,((n-1)/12))))) - (((s-(s/(pow(2,(n/12))))) - (s-(s/(pow(2,((n-1)/12)))))) / 2)])
rotate([-90,0,0]) cylinder (fretBoardD+margin, fretMark-clr, fretMark-clr);
}
}