--- /dev/null
+// -*- C -*-
+
+rearwallthick = 3;
+basethick = 3;
+mainframeendthick = 2.5;
+
+tubedia=16;
+tubetubethick=2;
+tubetubetopslop=1;
+
+boltholedia = 6.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;
+
+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]) {
+ }
+ }
+ }
+}
+
+//MainFrame();
+//TubeThing(0, tubedia);
+
+Jig();