$fn = 20; round_corner_r = 1; length_long = 70; length_short = 20; door_thickness = 40; width = 8; // thickness = 8 surface_width = width - round_corner_r * 2; // 6 hook_pos = 46; hook_gap = 12; hook_length = 12; hook_surface_width = surface_width - round_corner_r * 2; // 4 strength_cube_width = width; union() { minkowski() { union() { cube([length_long, surface_width, surface_width]); cube([surface_width, door_thickness + surface_width + round_corner_r * 2, surface_width]); translate([0, surface_width + round_corner_r * 2 + door_thickness, 0]) cube([length_short, surface_width, surface_width]); } sphere(r = round_corner_r); } minkowski() { union() { translate([hook_pos, - hook_gap - round_corner_r, round_corner_r]) cube([hook_surface_width, hook_gap + width *0.7, hook_surface_width]); translate([hook_pos - hook_length, - hook_gap - round_corner_r, round_corner_r]) cube([hook_length, hook_surface_width, hook_surface_width]); translate([hook_pos + surface_width - round_corner_r * 2, -round_corner_r, round_corner_r]) linear_extrude(height=hook_surface_width) polygon([ [0, 0], [0, -12], [12, 0], ]); translate([hook_pos - hook_surface_width * 2 - round_corner_r * 2, -round_corner_r, round_corner_r]) linear_extrude(height=hook_surface_width) polygon([ [12, -12], [0, -12], [12, 0], ]); } sphere(r = round_corner_r); } }