// -*- C -*- cubez = 12; shaftz = cubez; recessz = 5; tests = [[4 + 0.5, 10 + 1.0]]; cubexy = 20; module RecessScrewCutout_RecessCylinder(recessdia, h){ translate([0,0,-1]) cylinder(r=recessdia/2, h=h+1, $fn=40); } module RecessedScrewCutout(shaftdia, recessdia) { recesstopz = recessz + 0.5*recessdia + 0.1; xblocky = shaftdia + 0.1; translate([0,0,-1]) cylinder(r=shaftdia/2, h=shaftz+2, $fn=20); RecessScrewCutout_RecessCylinder(recessdia, 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]); RecessScrewCutout_RecessCylinder(recessdia, recesstopz+1); } } module Test(){ difference(){ translate([-cubexy/2, -cubexy/2, 0]) cube([cubexy,cubexy,cubez]); } } module Hole(){ RecessedScrewCutout(tests[0][0], tests[0][1], -1); } //Test(); Hole();