--- /dev/null
+// -*- C -*-
+
+cubez = 12;
+
+shaftdia = 4 + 0.5;
+recessdia = 10 + 1.0;
+
+shaftz = cubez;
+recessz = 5;
+
+recesstopz = recessz + 0.5*recessdia + 0.1;
+xblocky = shaftdia + 0.1;
+
+cubexy = recessdia + 10;
+
+module RecessCylinder(h){
+ translate([0,0,-1]) cylinder(r=recessdia/2, h=h+1, $fn=40);
+}
+
+module Hole(){
+ translate([0,0,-1]) cylinder(r=shaftdia/2, h=shaftz+2, $fn=20);
+ RecessCylinder(recessz);
+ intersection(){
+ translate([-recessdia*1.5, -xblocky/2, -1])
+ cube([recessdia*3, xblocky, recesstopz+3]);
+ translate([0, -recessdia, recesstopz])
+ rotate([0,135,0]) cube([recessdia, recessdia*2, 10]);
+ RecessCylinder(recesstopz+1);
+ }
+}
+
+module Test(){
+ difference(){
+ translate([-cubexy/2, -cubexy/2, 0])
+ cube([cubexy,cubexy,cubez]);
+ Hole();
+ }
+}
+
+Test();
+//Hole();