// -*- C -*- rearwallthick = 3; basethick = 3; mainframeendthick = 2.5; tubedia=16; tubetubethick=2; tubetubetopslop=1; boltholedia = 6.5 + 0.5; mainframeholedia = 5 + 0.5; // "slot" refers to the things in the base of the drill press stand backslotedgespace = 71; slotwidth = 11.5; backslotmid2screwhole = 17; slotplugheight = 5.5; slotplugdepth = 10; // "keepslot" refers to the screws in the wooden jig block keepslotstartz = 20; keepslotlen = 25; keepslotx = backslotedgespace / 2; keepslotwidth = 4; mainframeextraside = 15; mainframeextrafront = 25; // computed values mainframeholex = backslotedgespace/2 + slotwidth/sqrt(2) + backslotmid2screwhole / sqrt(2); mainframeholey = -backslotmid2screwhole / sqrt(2); mainframemaxx = mainframeholex + mainframeextraside; mainframeminy = mainframeholey - mainframeextrafront; mainframemaxz = keepslotstartz + keepslotlen; module MainFrame(){ for (m=[0,1]) { mirror([m,0,0]) { translate([-1, mainframeminy, 0]) cube([mainframemaxx+1, -mainframeminy, basethick]); translate([-1, -rearwallthick, 0]) cube([mainframemaxx+1, rearwallthick, mainframemaxz]); translate([mainframemaxx,0,0]) rotate([90,0,-90]) linear_extrude(height=mainframeendthick) polygon([[-mainframeminy, 0], [0, mainframemaxz], [0, 0]]); translate([backslotedgespace/2, 0, 1]) mirror([0,0,1]) linear_extrude(height=slotplugheight+1) polygon([[0,0], [slotwidth * sqrt(2), 0], [slotplugdepth / sqrt(2) + slotwidth * sqrt(2), -slotplugdepth], [slotplugdepth / sqrt(2), -slotplugdepth]]); } } } module TubeThing(extralen, dia, extraheight, underheight){ effheight = tubetubetopslop + extraheight + underheight; len = -mainframeminy + extralen * 2; translate([0, mainframeminy - extralen, -underheight]) { translate([0,0, dia/2 + effheight]) rotate([-90,0,0]) cylinder(h=len, r=dia/2); translate([-dia/2, 0, 0]) cube([dia, len, effheight + dia/2]); } } module Jig(){ difference(){ union(){ MainFrame(); TubeThing(0, tubedia+tubetubethick*2, -tubetubethick, 0); } union(){ translate([0,0,-0.1]) TubeThing(10, tubedia, 0, 5); translate([-boltholedia/2, mainframeminy - 1, -5]) cube([boltholedia, -mainframeminy + 1 - rearwallthick - 0.1, mainframemaxz + 10]); for (m=[0,1]) { mirror([m,0,0]) { translate([mainframeholex, mainframeholey, -30]) cylinder(h=basethick+40, r=mainframeholedia/2); translate([keepslotx - keepslotwidth/2, -10, keepslotstartz]) cube([keepslotwidth, 20, keepslotlen + 10]); } } } } } //MainFrame(); //TubeThing(0, tubedia); Jig();