]> www.fi.muni.cz Git - things.git/commitdiff
bear frame spool holder
authorJan "Yenya" Kasprzak <kas@fi.muni.cz>
Tue, 4 Jul 2023 07:31:14 +0000 (09:31 +0200)
committerJan "Yenya" Kasprzak <kas@fi.muni.cz>
Tue, 4 Jul 2023 07:31:14 +0000 (09:31 +0200)
bear-spool-holder.scad [new file with mode: 0644]

diff --git a/bear-spool-holder.scad b/bear-spool-holder.scad
new file mode 100644 (file)
index 0000000..0d540e4
--- /dev/null
@@ -0,0 +1,73 @@
+eps = 0.01;
+
+wall = 2;
+top_ins_w = 5;
+top_ins_h = 4;
+x_width = 7;
+y_height = 27;
+y_clip_l = 4;
+y_clip_end_r = 0.75;
+clip_h = 21;
+
+spool_r = 100;
+spool_angle = 15;
+spool_yoff = -(spool_r + wall + 8)*cos(spool_angle);
+spool_xoff = -(spool_r + wall + 8)*sin(spool_angle);
+
+beam_h = 10;
+bearing_zoff = beam_h + wall;
+
+bearing_d = 15 + 0.1;
+bearing_h = 9;
+bearing_r1 = bearing_d/2+wall - bearing_zoff/3;
+
+module extrusion_clip(body_h) {
+translate([-wall, -wall, 0]) cube([wall + x_width+eps, wall, body_h]);
+translate([-wall, -wall, 0]) cube([wall, wall + y_height + eps, body_h]);
+translate([x_width, -wall, 0]) cube([top_ins_w, top_ins_h + wall, body_h]);
+translate([-wall, y_height, 0]) cube([wall+y_clip_l, wall, body_h]);
+
+translate([0, 10, 0]) hull() {
+       translate([-eps, -4, 0]) cube([eps, 8, body_h]);
+       translate([1.5-eps, -3, 0]) cube([eps, 6, body_h]);
+}
+
+translate([y_clip_l-y_clip_end_r, y_height, 0])
+       cylinder(r = y_clip_end_r, h = body_h, $fn = 4);
+}
+
+module bearing_insert() {
+       rotate([0, 0, 30])
+       cylinder(r1 = bearing_r1, r2 = bearing_d/2 + wall, h = bearing_zoff, $fn = 128);
+       for (a = [0:120:360]) rotate([0, 0, a])
+       translate([-wall/2, 0, bearing_zoff]) cube([wall, bearing_d/2, bearing_h]);
+}
+
+module beam() {
+       difference() {
+               hull() {
+                       translate([-wall, -wall, 0])
+                               cube([wall + x_width + top_ins_w, wall, beam_h]);
+                       translate([-wall, -wall, 0])
+                               cube([wall, 2*y_height/3 + wall, beam_h]);
+                       translate([spool_xoff, spool_yoff, 0])
+                               rotate([0, 0, 30])
+                                       cylinder(r = bearing_r1, h = beam_h, $fn = 6);
+               }
+               translate([0, 0, -eps])
+                       cube([x_width+top_ins_w+eps, y_height+eps, beam_h + 2*eps]);
+       }
+}
+
+module holder() {
+       extrusion_clip(body_h = clip_h);
+       translate([spool_xoff, spool_yoff, 0])
+               bearing_insert();
+       beam();
+}
+
+// holder();
+for (x = [-1, 1]) scale([x, 1, 1])
+translate([12, 0, 0])
+rotate([0, 0, spool_angle]) holder();
+