thickness = 5; hole_rad = 5; spool_rad = 150; square_size = spool_rad + hole_rad * 4; triangle_rad = square_size * 2 / 3; filament_width = 10; filament_height = 20; filament_offset = 2; // -1 = Left; 1 = Right side = -1; difference() { // Base Shape union() { translate([square_size / 2 * side, 0, 0]) cube([square_size, square_size, thickness], center = true); translate([0, -square_size / 6, 0]) rotate([0, 0, -30]) cylinder(thickness, triangle_rad, triangle_rad, $fn = 3, center = true); } // Holes for (i = [0:1:2]) { translate([0, -square_size / 6, 0]) rotate(-30 + i*120) translate([triangle_rad - hole_rad * 3, 0, 0]) cylinder(thickness + 2, hole_rad, hole_rad, $fn = 360, center = true); } // Filament Sensor translate([square_size * side - side * (filament_width / 2 + filament_offset), square_size / 2 - filament_height / 2, thickness / 2]) cube([filament_width, filament_height, thickness], center = true); }