]> www.fi.muni.cz Git - things.git/blobdiff - toothbrush-holder-9x3.scad
switch holder.scad
[things.git] / toothbrush-holder-9x3.scad
index dbe21001835faba6481c80d3fd15cb6ac9f1e2f6..831a7c38ecd458c53e6ac4ada378db1c6f1df32a 100644 (file)
@@ -12,53 +12,46 @@ module cut_ellipse(height, dist, x) {
        };
 };
 
+module clip() {
+       translate([-1.5, 0, -1])
+               cube([1.5, 8, 9]);
+       translate([0, 0, -1]) difference() {
+               cube([3, 3, 9]);
+               translate([3-epsilon, 3-epsilon, -epsilon])
+                       cylinder(r=3, h=9+2*epsilon);
+       };
+       translate([0, 0, -1])
+               difference() {
+                       translate([-1, 8, 0])
+                               cylinder(r=2, h=9);
+                       translate([-infty/2-1.5+epsilon, 0, 0])
+                               cube(infty, center=true);
+               };
+};
+
 module stem() {
        hull() {
                cut_ellipse(25, 31, 4);
                cut_ellipse(10, 24, 6);
        };
+
+       // left-side and right-side clip
        difference() {
-       union() {
-       translate([3.75, 31-epsilon, 0])
-               rotate([0, 15, 0]) {
-                       cube([1.5, 8, 8]);
-                       difference() {
-                               translate([1, 8, 0])
-                                       cylinder(r=2, h=8);
-                               translate([infty/2+1.5-epsilon, 0, 0])
-                                       cube(infty, center=true);
-                       };
-               };
-       translate([-3.75, 31-epsilon, 0])
-               rotate([0, -15, 0]) {
-                       translate([-1.5, 0, 0])
-                       cube([1.5, 8, 8]);
-                       difference() {
-                               translate([-1, 8, 0])
-                                       cylinder(r=2, h=8);
-                               translate([-infty/2-1.5+epsilon, 0, 0])
-                                       cube(infty, center=true);
-                       };
+               union() {
+                       translate([3.75, 31-epsilon, 0])
+                               rotate([0, 15, 0])
+                                       scale([-1, 1, 1])
+                                               clip();
+
+                       translate([-3.75, 31-epsilon, 0])
+                               rotate([0, -15, 0])
+                                       clip();
                };
-       };
-       translate([0, 0, -infty/2])
-               cube(infty, center=true);
-       };
 
-/*
-       hull() {
-               cut_ellipse(12, 40, 0.5);
-               cut_ellipse( 8, 35, 2);
-       };
-       hull() {
-               cut_ellipse(12, 35, 2);
-               cut_ellipse(10, 25, 5);
-       };
-       hull() {
-               cut_ellipse(10, 25, 5);
-               cut_ellipse(12, 10, 4);
+               translate([0, 0, -infty/2])
+                       cube(infty, center=true);
        };
-*/
+
        for (dist=[0:9.5:19])
                translate([0, dist, 0])
                        interdental_cylinder();
@@ -118,13 +111,20 @@ module body() {
                                cube(infty, center=true);
 */
        };
+       // rear-side protrusion
        translate([-50, 1, 6])
-       rotate([0, 90, 0])
-               cylinder(r=2.5, h=100, $fn=4);
+               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);
        };
+       // screw head hole
        rotate([-90, 0, 0])
                translate([0,-6,3])
                cylinder(r=3.5, h=55);
+       // screw head
        rotate([-90, 0, 0])
                translate([0,-6,-infty/2])
                cylinder(r=1.75, h=infty, $fn=6);