width=6; module basepanel(){ width=95; height=32; depth=2.5; edgewidth=3; edgedepth=1; union(){ cube([width-2*edgewidth, height-2*edgewidth,depth-edgedepth], center=true); color([0.7,0.7,0]) { translate([0,0, depth/2]){ cube([width, height, 1], center=true); } } } } module dsub(width){ edge = 2; height = 8.4; holedst = width+7; translate([-width/2, -height/2, 0]){ linear_extrude(height = 10, center = true) { polygon(points=[[0,0],[width ,0],[width - edge, height],[edge,height]], paths=[[0,1,2,3]]); } } translate([-holedst/2, 0, 0]){ cylinder(r=1.5, h=10, center=true, $fn=20); } translate([holedst/2, 0, 0]){ cylinder(r=1.5, h=10, center=true, $fn=20); } translate([0,0, -1]) cube([width+13, 12.6,3], center=true); } module roundedge(){ size=4; height=1.5; difference(){ cube([size,size,height], center=true); translate([size/2,size/2,0]){ cylinder(r=size,h=height*2, center=true, $fn=20); } } } mirror([0,0,1]){ translate([80,40,0]){ translate([0,-20,0]){ difference(){ basepanel(); translate([-30,0,0]){ cylinder(r=8, h=10, center=true, $fn=36); } translate([-7,0,0]){ cylinder(r=8, h=10, center=true, $fn=36); } translate([22,0,0]){ dsub(18); } } } translate([0,20,0]){ difference(){ basepanel(); dsub(18); } } } }