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);
}

Изменить пасту