]> www.fi.muni.cz Git - things.git/commitdiff
diffuser.scad: LZZ-186 diffuser as published on thingiverse
authorJan "Yenya" Kasprzak <kas@fi.muni.cz>
Tue, 2 Dec 2014 11:43:06 +0000 (12:43 +0100)
committerJan "Yenya" Kasprzak <kas@fi.muni.cz>
Tue, 2 Dec 2014 11:43:06 +0000 (12:43 +0100)
diffuser.scad [new file with mode: 0644]

diff --git a/diffuser.scad b/diffuser.scad
new file mode 100644 (file)
index 0000000..d7a4cab
--- /dev/null
@@ -0,0 +1,96 @@
+inner_d = 38;
+outer_d = 43.5;
+wall_thickness = 1.5;
+diaphragm_thickness = 0.8;
+cable_thickness = 4;
+
+base_h = 4;
+shader_h = 6;
+holder_h = 16;
+
+epsilon = 0.01;
+
+module diaphragm() {
+       cylinder(h=diaphragm_thickness, r = outer_d/2 + wall_thickness-epsilon);
+};
+
+module shader() {
+       difference() {
+               cylinder(r=outer_d/2 + wall_thickness, h = shader_h);
+               translate([0, 0, -epsilon/2])
+                       cylinder(r1 = outer_d/2+wall_thickness/2, r2=outer_d/2+wall_thickness/2-(2/5)*(outer_d-inner_d),
+                               h = shader_h + epsilon);
+       };
+};
+
+module base() {
+        difference() {
+                cylinder(r =  outer_d/2 + wall_thickness, h = base_h + epsilon);
+                translate([0, 0, - epsilon/2])
+                        cylinder(r = inner_d/2, h = base_h + 2*epsilon);
+        };
+};
+
+module outer_clip() {
+       difference() {
+               cylinder(r = outer_d/2 + wall_thickness, h = holder_h-base_h);
+               translate([0, 0, -epsilon/2])
+                       cylinder(r = outer_d/2, h = holder_h - base_h + epsilon);
+       };
+
+       intersection() {
+               difference() {
+                       cylinder(r = outer_d/2 + wall_thickness - epsilon, h = holder_h-base_h-epsilon);
+                       translate([-50, -(inner_d-3)/2, -epsilon])
+                               cube([100, inner_d-3, 100]);
+               };
+               rotate_extrude()
+                       translate([outer_d/2+1.5, holder_h-base_h-1, 0])
+                               circle(r = 2);
+       };
+};
+
+module belt_clip() {
+       intersection() { // belt clip arc
+               difference() {
+                       cylinder(r = outer_d/2 + 2*wall_thickness + cable_thickness, h = shader_h + holder_h);
+                       translate([0, 0, -epsilon/2])
+                               cylinder(r = outer_d/2 + wall_thickness + cable_thickness, h = shader_h + holder_h + epsilon);
+               };
+               translate([0, -6, 0])
+               cube([outer_d + 4*wall_thickness + 2*cable_thickness + epsilon, 12, shader_h + holder_h]);
+       };
+       difference() { // connect the clip to the body
+               rotate([0, 0, -10])
+                       translate([outer_d/2-3, 0, 0])
+                       cylinder(r = cable_thickness + 2*wall_thickness + 3, h = shader_h + holder_h);
+               translate([0, 0, -epsilon/2])
+                       cylinder(r = outer_d/2 + wall_thickness - epsilon, h = shader_h + holder_h + epsilon);
+               translate([0, -4, -epsilon/2])
+               cube([outer_d/2 + 2*wall_thickness + cable_thickness + epsilon, 20, holder_h + shader_h + epsilon]);
+
+       };
+       intersection() { // hold the cable in position
+               rotate([0, 0, 10])
+               translate([outer_d/2+2*wall_thickness + cable_thickness, 0, 0])
+               cylinder(r = 2.75, h = shader_h + holder_h);
+               translate([0, 0, -epsilon/2])
+                       cylinder(r = outer_d/2 + 2*wall_thickness + cable_thickness, h = shader_h + holder_h + epsilon);
+       };
+};
+
+module main() {
+       shader();
+       translate([0, 0, shader_h])
+               color([1, 0.5, 0.5, 0.2]) diaphragm();
+
+       translate([0, 0, shader_h-epsilon])
+               base();
+
+       translate([0, 0, shader_h+base_h-2*epsilon])
+               outer_clip();
+
+       belt_clip();
+};
+
+main($fn = 128);