body=[28,5,11];
hole_d=2.3;
hole_h=2.0;
hole_dist=23.75;

hdmi_width=20;
hdmi_height=14;
audio_width=5;
audio_height=13;

difference()
{
  union()
  {
    cube(body,center=true);
    // screw pins
    for(i=[-1:2:1])
      translate([hole_dist/2*i,0,body[2]/2+hole_h/2])
      cylinder(d=hole_d,h=hole_h+0.1,$fn=6,center=true);
  }
  // cut clearing for ribbon cable
  translate([0,0,body[2]/2])
    cube([hole_dist-5,10,2],center=true);
  // cut bottom stand
  // dip switch 
  // hdmi
  translate([-hole_dist/2+hdmi_width/2-3,-5,-body[2]/2])
    cube([hdmi_width,10,hdmi_height],center=true);
  // audio jack
  translate([hole_dist/2+audio_width/2,0,-body[2]/2])
    cube([audio_width,10,audio_height],center=true);
  // 45 deg transtion
  translate([hole_dist/2+audio_width/2+1,0,-body[2]/2+audio_height-audio_width-1.5])
    rotate([0,45,0])
      cube([audio_width,10,audio_width],center=true);
}