-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathSoundbox.scad
73 lines (63 loc) · 3.79 KB
/
Soundbox.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
Render = "entire"; // [body:Case,lid:Lid,entire:Entire]
screw_cones = true; // [true:Yes,false:No]
wall_thickness=1.5;
pillar_thickness_factor=4;
lid_thickness=3;
floor_thickness=8;
wall_height=70;
wall_width=90;
wall_length=160;
button_diameter=28; // [28:M28,24:M24]
buttons_per_row=4;
button_rows=2;
buttonSpace=wall_length/buttons_per_row;
module case() {
translate([0,0,0])
cube([wall_width,wall_thickness,wall_height]);
cube([wall_thickness,wall_length,wall_height]);
cube([wall_width,wall_length,floor_thickness]); // floor
translate([0,wall_length,0])
cube([wall_width,wall_thickness,wall_height]);
translate([wall_width,0,0])
cube([wall_thickness,wall_length+wall_thickness,wall_height]);
// Pillars
translate([wall_thickness,wall_thickness,0])
cube([wall_thickness*pillar_thickness_factor,wall_thickness*pillar_thickness_factor,wall_height]);
translate([wall_width-pillar_thickness_factor-wall_thickness,wall_thickness,0])
cube([wall_thickness*pillar_thickness_factor,wall_thickness*pillar_thickness_factor,wall_height]);
translate([wall_thickness,wall_length/2-pillar_thickness_factor/2,0])
cube([wall_thickness*pillar_thickness_factor,wall_thickness*pillar_thickness_factor,wall_height]);
translate([wall_width-pillar_thickness_factor-wall_thickness,wall_length/2-pillar_thickness_factor/2,0])
cube([wall_thickness*pillar_thickness_factor,wall_thickness*pillar_thickness_factor,wall_height]);
translate([wall_thickness,wall_length-pillar_thickness_factor-wall_thickness,0])
cube([wall_thickness*pillar_thickness_factor,wall_thickness*pillar_thickness_factor,wall_height]);
translate([wall_width-pillar_thickness_factor-wall_thickness,wall_length-pillar_thickness_factor-wall_thickness,0])
cube([wall_thickness*pillar_thickness_factor,wall_thickness*pillar_thickness_factor,wall_height]);
};
module lid() {
difference() {
translate([0,0,wall_height]) cube([wall_width+wall_thickness,wall_length+wall_thickness,lid_thickness]); // lid
for ( r = [1:2:3] ) {
for ( h = [0:buttons_per_row-1] ) {
translate ([wall_width/4*r+wall_thickness/2,buttonSpace*h+wall_thickness/2+buttonSpace/2,wall_height]) cylinder(lid_thickness*2, button_diameter/2,button_diameter/2);
};
};
// Screw cones
if (screw_cones) {
translate([wall_thickness+pillar_thickness_factor/2,wall_thickness+pillar_thickness_factor/2,wall_height])
cylinder($fn=20,pillar_thickness_factor,pillar_thickness_factor/6,lid_thickness);
translate([wall_width-pillar_thickness_factor+pillar_thickness_factor/2,wall_thickness+pillar_thickness_factor/2,wall_height])
cylinder($fn=20,pillar_thickness_factor,pillar_thickness_factor/6,lid_thickness);
translate([wall_thickness+pillar_thickness_factor/2,wall_length/2,wall_height])
cylinder($fn=20,pillar_thickness_factor,pillar_thickness_factor/6,lid_thickness);
translate([wall_width-pillar_thickness_factor/2,wall_length/2+wall_thickness,wall_height])
cylinder($fn=20,pillar_thickness_factor,pillar_thickness_factor/6,lid_thickness);
translate([wall_thickness+pillar_thickness_factor/2,wall_length-pillar_thickness_factor/2,wall_height])
cylinder($fn=20,pillar_thickness_factor,pillar_thickness_factor/6,lid_thickness);
translate([wall_width-pillar_thickness_factor/2,wall_length-pillar_thickness_factor/2,wall_height])
cylinder($fn=20,pillar_thickness_factor,pillar_thickness_factor/6,lid_thickness);
};
};
};
if ((Render=="body") || (Render=="entire")) case();
if ((Render=="lid") || (Render=="entire")) lid();