include $fn = 36*5; t = 5; rounding = 1; // base to connect to the printer base_hole_distance = 40; base_frame_hole_d = 4.5; base_dim = [61,23,12]; // I had a M3x30 screw, with a head diameter of ~5.5mm base_det_screw_l = 30; base_det_screw_d = 3.5; base_det_screw_head = 6; det_offset = 0; // NO offset to the left, because the Elegoo filament detector IS centered difference() { // base cuboid(base_dim, rounding=rounding, anchor=TOP); // holes for screws left(base_hole_distance/2) cyl(d=base_frame_hole_d, h=base_dim[2], chamfer=-1, anchor=TOP); right(base_hole_distance/2) cyl(d=base_frame_hole_d, h=base_dim[2], chamfer=-1, anchor=TOP); down(base_dim[2]/2) left(det_offset) union() { // hole for screw for filament detector ycyl(d=base_det_screw_d, h=base_dim[1]); // hole for the screw head back(base_det_screw_l - 15) ycyl(d=base_det_screw_head, h=base_dim[1]); } } // ball bearing holder bear_up = 25; bear_fwd = 15; // 608 bearing bear_od = 22; bear_cover_od = 32; bear_id = 8; bear_w = 7; difference() { // base for bearing chain_hull() { up(bear_up) fwd(bear_fwd) xcyl(d=bear_od, h=bear_w+1+2*t, rounding=rounding); cuboid([bear_w+1 + 2*t, base_dim[1],2]); } // cutout for bearing up(bear_up) fwd(bear_fwd) xcyl(d=bear_cover_od + t, h=bear_w+1); // hole for screw to hold bearing up(bear_up) fwd(bear_fwd) xcyl(d=bear_id, h=bear_w+1 + 2*t+0.1); } // bearing cover up(bear_up) fwd(bear_fwd) difference() { union() { xcyl(h=bear_w, d1=bear_od, d2=bear_cover_od); xcyl(h=bear_w, d2=bear_od, d1=bear_cover_od); } xcyl(d=bear_od, h=bear_w); } // PTFE tube holder ptfe_dim = [bear_w+1 + 2*t,9,37]; filament_od = 2.5; ptfe_od = 4.4; difference() { union() { // upright square back(base_dim[1]/2) down(rounding) cuboid(ptfe_dim, anchor=BACK+BOTTOM); // upright round top up(ptfe_dim[2]-rounding) back(base_dim[1]/2) ycyl(h=ptfe_dim[1], d=ptfe_dim[0], anchor=BACK); } // hole for filament up(ptfe_dim[2]-rounding) back(base_dim[1]/2) ycyl(h=ptfe_dim[1], d=filament_od, anchor=BACK); // hole for PTFE tube up(ptfe_dim[2]-rounding) back(base_dim[1]/2) ycyl(h=ptfe_dim[1]/2, d=ptfe_od, rounding1=1, rounding2=-0.5, anchor=BACK); }