]> www.fi.muni.cz Git - things.git/commitdiff
New toothbrush holder with 9x2 config
authorJan "Yenya" Kasprzak <kas@fi.muni.cz>
Wed, 26 Nov 2014 20:45:46 +0000 (21:45 +0100)
committerJan "Yenya" Kasprzak <kas@fi.muni.cz>
Wed, 26 Nov 2014 20:45:46 +0000 (21:45 +0100)
toothbrush-holder-9x2.scad [new file with mode: 0644]

diff --git a/toothbrush-holder-9x2.scad b/toothbrush-holder-9x2.scad
new file mode 100644 (file)
index 0000000..eee5bfd
--- /dev/null
@@ -0,0 +1,90 @@
+eps=0.01;
+infty=400;
+
+off_center = 112;
+ext_angle = 56;
+
+main_depth = 42;
+
+module off_c() {
+       translate([0, -off_center, 0])
+               children();
+};
+
+module off_c_rot(angle) {
+       off_c()
+       rotate([0, 0, angle])
+       translate([0, off_center, 0])
+               children();
+}
+
+module interdental_hole() {
+       translate([0, 0, -infty/2])
+               cylinder(r=4.1, h=infty);
+       translate([0, 0, 20])
+       scale ([2, 1, 1]) sphere(10, center=true);
+}
+
+module toothbrush_hole() {
+       difference() {
+               union() {
+                       translate([0, 0, 2])
+                               cylinder(r1=4, r2=8, h = 13);
+                       translate([0, 0, -1])
+                               cylinder(r=4, h = 3+eps);
+               };
+               translate([-infty/2, -4.5-infty, -infty/2])
+                       cube(infty);
+       }
+       translate([-3, 0, -infty/2]) cube([6, infty, infty]);
+}
+
+module body() {
+       intersection() {
+               off_c() rotate([0, 0, 0]) {
+                       cylinder(r = main_depth + off_center, h = 12, $fn = 60);
+                       //translate([0, 0, 12-eps])
+                       //      cylinder(r1 = 150, r2 = 0,h = 10, $fn = 60);
+               };
+               translate([-infty/2, 0, -infty/2]) cube(infty);
+               off_c_rot(ext_angle/2) translate([0, -infty/2, -infty/2]) cube(infty);
+               off_c_rot(-ext_angle/2) translate([0, -infty/2, -infty/2])
+                       scale([-1, 1, 1]) cube(infty);
+       };
+       // rear-side protrusion
+       translate([-50, 1, 6])
+               rotate([0, 90, 0])
+                       cylinder(r=3, h=40, $fn=4);
+       // rear-side protrusion
+       translate([10, 1, 6])
+               rotate([0, 90, 0])
+                       cylinder(r=3, h=40, $fn=4);
+       // off_c() cube(1, center=true);
+};
+
+module body_neg() {
+       // screw head hole
+       rotate([-90, 0, 0])
+               translate([0,-6,5])
+               cylinder(r=3.5, h=infty);
+       // screw head
+       rotate([-90, 0, 0])
+               translate([0,-6,-infty/2])
+               cylinder(r=1.75, h=infty, $fn=6);
+
+       for (angle = [-24:6:24]) {
+               off_c_rot(angle)
+                       translate([0, 38, 0])
+                               render() toothbrush_hole();
+               for (dist = [17,27])
+                       off_c_rot(angle)
+                       translate([0, dist, 0])
+                               interdental_hole();
+       }
+}
+
+difference() {
+       body();
+       body_neg();
+}
+