// -*- C -*- holedia = 25.4; sidewidth = 5; tapewidth = 7; basex = holedia + sidewidth*2; basey = holedia + tapewidth*2; bevelz = 3; bevelslope = 0.75; bevely = bevelz * bevelslope; basebaset = 2; basebevelt = 3; module sheared_cube(sz, xperz, yperz) { multmatrix([[1,0,xperz,0], [0,1,yperz,0], [0,0,1, 0], [0,0,0, 1]]) cube(sz); } module Base(){ difference(){ union(){ translate([0, basey-basebevelt, 0]) sheared_cube([basex, basebevelt, bevelz], 0, bevelslope); sheared_cube([basex, basebevelt, bevelz], 0, -bevelslope); cube([basex, basey, basebaset]); } translate([basex/2, basey/2, -1]) cylinder(r=holedia/2, h=bevelz+2); } // sheared_cube([10,20,30], 0.5, 3); // cube([basew, baseh, 0.1]); // translate([ } Base();