]> www.fi.muni.cz Git - things.git/commitdiff
i3 spool holder for bearings
authorJan "Yenya" Kasprzak <kas@fi.muni.cz>
Fri, 25 May 2018 14:09:57 +0000 (16:09 +0200)
committerJan "Yenya" Kasprzak <kas@fi.muni.cz>
Fri, 25 May 2018 14:09:57 +0000 (16:09 +0200)
i3-spool-holder.scad [new file with mode: 0644]

diff --git a/i3-spool-holder.scad b/i3-spool-holder.scad
new file mode 100644 (file)
index 0000000..11c45f8
--- /dev/null
@@ -0,0 +1,74 @@
+eps = 0.01;
+infty = 300;
+
+spool_r = 100 + 30;
+frame_w = 6.5 + 0.5;
+frame_h = 40 + 0.5;
+
+bearing_d = 15.5;
+bearing_h = 9 + 1;
+bearing_side_off = 3;
+
+holder_w = 5;
+wall = 2;
+
+stem_w = 10;
+fork_w = frame_w + 2*6;
+fork_h = frame_h/3;
+fork_top = 5;
+fork_bottom = 3;
+fork_raised = holder_w + 5;
+
+fork_angle = 20;
+
+module holder() {
+       cylinder(r2 = bearing_d/2 + wall, r1 = bearing_d/2, h = holder_w + bearing_side_off);
+       for (angle = [0:360/5:360])
+               rotate([0, 0, angle]) hull() {
+                       cylinder(r = wall, h = holder_w + bearing_h);
+                       translate([bearing_d/2 - wall/2, 0, 0])
+                               cylinder(r = wall/2, h = holder_w + bearing_side_off+ bearing_h);
+               }
+
+       difference() {
+               union() {
+                       hull() {
+                               // stem
+                               translate([0, -stem_w/2, 0])
+                                       cube([spool_r, stem_w, holder_w]);
+
+                               // fork
+                               translate([spool_r, 0, 0])
+                               rotate([0, 0, fork_angle])
+                               translate([-fork_top, -fork_w/2, 0])
+                                       cube([fork_top + fork_h, fork_w, holder_w]);
+                       }
+                       // fork side
+                       translate([spool_r, 0, 0])
+                       rotate([0, 0, fork_angle])
+                       translate([0, frame_w/2, 0])
+                               cube([frame_h + wall, fork_w/2-frame_w/2, holder_w]);
+                       // raised clip
+                       translate([spool_r, 0, 0])
+                       rotate([0, 0, fork_angle])
+                       translate([-wall, -frame_w/2-wall, 0])
+                               cube([frame_h + 2*wall, frame_w+2*wall, fork_raised]);
+               }
+               translate([spool_r, 0, 0])
+               rotate([0, 0, fork_angle]) {
+                       // frame
+                       translate([0, -frame_w/2, -infty/2])
+                               cube([frame_h, frame_w, infty]);
+                       // frame hole
+                       translate([fork_h, -frame_w/2-wall-eps, -infty/2])
+                               cube([frame_h, frame_w+wall+2*eps-fork_bottom, infty]);
+               }
+       }
+}
+
+for (y = [-1, 1]) {
+       scale([1, y, 1])
+       translate([0, 12, 0])
+       holder();
+}
+