// -*- C -*- outerw = 140; outerh = 80; bezelw = 8; bezelboth = 8; bezeltoph = 8; outert = 10; spkrdia = 40; spkr2bot = 40; spkr2rhs = 30; plugw = 10; plugh = 8; plug2bot = 30; plug2lhs = 40; plugslop = 0.3; screent = 1.0; plugstrutw = 4; plugstrutt = min(outert, 5); module Gps() { effplugw = plugw + plugslop; effplugh = plugh + plugslop; difference(){ union(){ difference(){ cube([outerw, outerh, outert]); translate([bezelw, bezelboth, screent]) cube([outerw-bezelw*2, outerh-bezelboth-bezeltoph, outert]); translate([outerw-spkr2rhs, spkr2bot, -1]) cylinder(r=spkrdia/2, h=outert+2); } translate([plug2lhs+effplugw/2, plug2bot+effplugh/2, 0.01]) cylinder(r=(effplugw+effplugh)/2, h=outert-0.02); for (x=[plug2lhs-plugstrutw, plug2lhs+effplugw]) translate([x, 0.1, 0.01]) cube([plugstrutw, outerh-0.2, plugstrutt-0.02]); } translate([plug2lhs, plug2bot, -1]) cube([effplugw, effplugh, outert+2]); } } Gps();