// Valve Index headset and controllers mount // length units are millimeters tableLegDiameter = 44.5; screwToLeg = 15.42; screwHeadDiameter = 9.00; screwThreadHole = 5.00; headsetBottomSupportWidth = 25.40; legWrapperWidth = 5.00; clampHeight = 100.0; circleResolution=360*2; // faces per rotation difference() { union() { // leg clamp difference() { cylinder(h=100, r=tableLegDiameter/2 + legWrapperWidth, $fn=circleResolution); union() { translate([0,0,-0.05]) { cylinder(h=clampHeight + 0.1, r=tableLegDiameter/2, $fn=circleResolution); } translate([-clampHeight,screwHeadDiameter, -0.05]) { cube([clampHeight*2, clampHeight, clampHeight + 0.1]); } } } // leg screw connection translate([-screwHeadDiameter,-(screwToLeg+screwHeadDiameter+tableLegDiameter/2),clampHeight-27.0]) { difference() { cube([screwHeadDiameter * 2, screwToLeg + screwHeadDiameter, 27.0]); union() { rotate([0, 90, 0]) { translate([42, -45, screwHeadDiameter+0.1 ]) { cylinder(h=screwHeadDiameter*2.5, r=78.0, center=true, $fn=circleResolution); } } // space for screw head translate([screwHeadDiameter, screwHeadDiameter/2, 15]) { cylinder(h=12.0, r=screwHeadDiameter*0.55, center=true, $fn=circleResolution); translate([-screwHeadDiameter*0.55,-screwHeadDiameter,-6]) cube([screwHeadDiameter*1.1, 10, 12]); } } } } // headset hook translate([-screwHeadDiameter,-(legWrapperWidth+headsetBottomSupportWidth*1.5+tableLegDiameter/2),0]) { union() { cube([screwHeadDiameter*2, legWrapperWidth+headsetBottomSupportWidth*1.5, legWrapperWidth*1.5]); translate([0, -legWrapperWidth*0.99, 0]) { cube([screwHeadDiameter*2, legWrapperWidth, legWrapperWidth*3]); } translate([0, (headsetBottomSupportWidth*1.5)-14, legWrapperWidth*1.5]) { difference() { cube([screwHeadDiameter*2, 12+legWrapperWidth,10]); translate([-50,0,12+legWrapperWidth]) { rotate([0,90,0]) { cylinder(h=100, r=12+legWrapperWidth, $fn=circleResolution); } } } } } } // left controller hook translate([-(legWrapperWidth+legWrapperWidth+tableLegDiameter/2), 0, 0]) { cube([legWrapperWidth+legWrapperWidth, screwHeadDiameter, legWrapperWidth]); translate([-legWrapperWidth*0.99,0,0]){ cube([legWrapperWidth, screwHeadDiameter, legWrapperWidth*2]); } } // right controller hook translate([tableLegDiameter/2, 0, 0]) { cube([legWrapperWidth+legWrapperWidth, screwHeadDiameter, legWrapperWidth]); translate([legWrapperWidth+legWrapperWidth*0.99,0,0]){ cube([legWrapperWidth, screwHeadDiameter, legWrapperWidth*2]); } } } // extra critical space deletion union() { // table leg translate([0,0,-0.05]) { cylinder(h=clampHeight + 0.1, r=tableLegDiameter/2, $fn=circleResolution); } translate([-clampHeight,10, -0.05]) { cube([clampHeight*2, clampHeight, clampHeight + 0.1]); } // screw hole translate([0, -(screwToLeg+screwHeadDiameter/2 + tableLegDiameter/2), 200]) { cylinder(h=250.0, r=screwThreadHole/2, center=true, $fn=circleResolution); } } }