--- /dev/null
+// -*- C -*-
+
+mainlen = 30;
+straps = [10,20];
+width = 60;
+endwall = 5;
+sidewall = 8;
+basethick = 3;
+endwallheight = 20;
+
+plugwidth = 35;
+plugstartheight = 10;
+
+strapthick = 4;
+strapwidth = 5;
+strapbotgap = 1;
+overstrap = 6;
+
+discdia = 60;
+discoff = 10;
+
+sidewallraise = strapbotgap + strapthick + overstrap;
+
+module Sides(){
+ difference(){
+ for (y=[0, width-sidewall]) {
+ translate([0,y,0])
+ cube([mainlen, sidewall, basethick + sidewallraise]);
+ }
+ for (x=straps) {
+ translate([x, 0, basethick + strapbotgap + strapthick/2])
+ cube([strapwidth, width*3, strapthick], center=true);
+ }
+ }
+}
+
+module Ell(){
+ translate([-endwall,0,0]) {
+ cube([mainlen + endwall, width, basethick]);
+ cube([endwall+0.1, width, endwallheight + sidewallraise + basethick]);
+ }
+}
+
+module Plug(){
+ translate([0, width/2,
+ basethick + sidewallraise + plugstartheight + 50])
+ cube([endwall*3, plugwidth, 100], center=true);
+}
+
+module Disc(){
+ translate([discoff + discdia/2, width/2, -1])
+ cylinder(r=discdia/2, h=50);
+}
+
+module Block(){
+ difference(){
+ union(){
+ Ell();
+ Sides();
+ }
+ Plug();
+ Disc();
+ }
+}
+
+Block();