1
0
Fork 0
3d/valve index desk mount.scad
2024-04-13 12:48:55 -04:00

98 lines
3.7 KiB
OpenSCAD

// 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);
}
}
}