small_dist = 0.1; depth = 20; width = 340; height = 152; thickness = 3; tab_width = 20; tab_hole_r = 2.5; mount(depth, width, height, thickness); module mount(depth, width, height, thickness){ union(){ tab(depth, tab_width, thickness, tab_hole_r); translate([(width+tab_width)/2, 0, -height]) U(width, height, depth, thickness); translate([width+tab_width, 0, 0]) tab(depth, tab_width, thickness, tab_hole_r); } } module tab(depth, width, thickness, hole_r) { difference(){ cube([width, depth, thickness], center=true); cylinder(r=hole_r, h=thickness+small_dist, center=true); } } module U(width, height, depth, thickness){ union(){ cube([width+2*thickness, depth, thickness], center=true); translate([-(width+thickness)/2, 0, height/2]) cube([thickness, depth, height], center=true); translate([(width+thickness)/2, 0, height/2]) cube([thickness, depth, height], center=true); } }