From: Jan "Yenya" Kasprzak Date: Tue, 4 Jul 2023 07:31:14 +0000 (+0200) Subject: bear frame spool holder X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?p=things.git;a=commitdiff_plain;h=2cfcb5f74447c8e803bb7348af37f910d5679799 bear frame spool holder --- diff --git a/bear-spool-holder.scad b/bear-spool-holder.scad new file mode 100644 index 0000000..0d540e4 --- /dev/null +++ b/bear-spool-holder.scad @@ -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(); +