use <squircle.scad> // https://github.com/Mendeo/rounded_cube/blob/master/model.scad // https://github.com/JustinSDK/dotSCAD use <path_extrude.scad>; use <bezier_curve.scad>; horizontal_shift = 2; difference() { union() { //base cube([46, 36, 1.625]); // top translate([0, 0, 1.625]){ cube([46, 36, 1.625]); } } translate([1.25, 1.25, 1.625]) { cube([46 - 1.25 * 2, 36 - 1.25 * 2, 1.625 + 0.001]); } for(shift = [0:6]) { translate([3, 3, 0]) { cube([18.75, 2.5, 10]); } translate([3, 3 + (2.5 + horizontal_shift) * shift, 0]) { cube([18.75, 2.5, 10]); } } for(shift = [0:6]) { translate([3 + 18.75 + 2, 3, 0]) { cube([18.75, 2.5, 10]); } translate([3 + 18.75 + 2 , 3 + (2.5 + horizontal_shift) * shift, 0]) { cube([18.75, 2.5, 10]); } } } // rib translate([46/ 2 - 0.55 , 0, 1]) cube([0.75, 36, 1.5]); rounding = 2.5; // ears translate([-2.5, 5, 1.625]) { difference() { roundedCube(6, 6, rounding, 1.625); translate([2.5, 0, -1]) cube([7, 7, 7]); } } translate([-2.5, 5 + 6 + 14, 1.625]) { difference() { roundedCube(6, 6, rounding, 1.625); translate([2.5, 0, -1]) cube([7, 7, 7]); } } shape_pts = [ [0, 0], [10, 0], [10, 1.5], [0, 1.5] ]; t_step = 0.01; width = 2; p0 = [0, 3.75, 0]; p1 = [0, 5, 10]; p2 = [0, 9, 2]; p3 = [0, 13.5, -8]; points = bezier_curve(t_step, [p0, p1, p2, p3] ); // Handle difference() { union() { // handle positioning translate([-1.5, 0, 3.25]) translate([46, 36 / 2 + 5, 0]) // Handle rotate([0, 0, -90]) translate([0, -3.75 + 1.5, 0]) path_extrude(shape_pts, points); translate([10 - 0.3, 0, -8 + 3.75 - .5]) translate([46, 36 / 2 - 5, 0]) cube([2.5, 10, 1.5]); translate([-1.5, 0, -8 + 3.75 - .5 + 7]) translate([46, 36 / 2 - 5, 0]) cube([1.5, 10, 1.5]); } translate([46 + 8, 36 / 2 + 5 - 2, -3.25 - 1.5]) cube([5, 2 + 0.001, 10]); translate([46 + 8, 36 / 2 - 5, -3.25 - 1.5]) cube([5, 2 , 10]); $fs = 0.4; translate([46 + 2, 36 / 2 , -3.25 - 1.5]) cylinder(h=15, r=1.25); }