1
0
Fork 0
3d/monitor headphone mount.scad
2024-11-20 21:28:34 -05:00

80 lines
No EOL
3.9 KiB
OpenSCAD

// LG Ultrawide monitor headphone mount
// Mounted on back of monitor instead of monitor stand
// length units are millimeters
mountHeightEnd = 22.52;
mountHeightStart = 26.46;
mountWidthEnd = 15.00;
mountWidthStart = 14.52;
mountWidthScrewInset = 8.43;
screwHoleDistanceInner = 8.56;
screwHoleDistanceOuter = 14.68;
screwHoleToMountBottom = 4.27;
screwHoleToMountTop = 4.16;
screwDiameter = 4.50;
screwRadius = screwDiameter / 2;
mountToScreenBottomHeight = 30.00; //27.55;
screenBaseThickness = 45.00;
mountProtrusionFromScreenBack = 33.10;
headphoneArmLength = 50.00;
horizontalThickness = 8.00;
verticalThickness = 6.50;
circleResolution=360*4; // faces per rotation
union() {
translate([0, 0, mountToScreenBottomHeight + horizontalThickness]) mountEnd(verticalThickness);
headphoneMount(horizontalThickness, verticalThickness);
//mountEnd(miscThickness);
}
module mountEnd(thickness) {
difference() {
cube([mountWidthEnd, thickness, mountHeightEnd]);
union() {
translate([mountWidthEnd / 2, thickness / 2, screwHoleToMountBottom + screwRadius])
rotate([-90, 0, 0])
cylinder(r = screwRadius, h = thickness + 0.02, center=true, $fn=circleResolution);
translate([mountWidthEnd / 2, thickness / 2, screwHoleToMountBottom])
rotate([-90, 0, 0])
cylinder(r = screwRadius, h = thickness + 0.02, center=true, $fn=circleResolution);
translate([mountWidthEnd / 2, thickness / 2, screwHoleToMountBottom + screwRadius/2])
rotate([-90, 0, 0])
cylinder(r = screwRadius, h = thickness + 0.02, center=true, $fn=circleResolution);
translate([mountWidthEnd / 2, thickness / 2, mountHeightEnd - (screwHoleToMountTop + screwRadius)])
rotate([-90, 0, 0])
cylinder(r = screwRadius, h = thickness + 0.02, center=true, $fn=circleResolution);
}
}
}
module headphoneMount(zThickness, yThickness) {
// stock down from monitor mount to clear bottom of monitor
cube([mountWidthEnd, yThickness, mountToScreenBottomHeight + zThickness]);
//color("red") cube([mountWidthEnd, thickness + screenBaseThickness + mountProtrusionFromScreenBack, thickness]);
// quarter circle under monitor
translate ([mountWidthEnd/2, screenBaseThickness + mountProtrusionFromScreenBack, 0]) difference() {
cylinder(r = screenBaseThickness + mountProtrusionFromScreenBack, h = zThickness, $fn=circleResolution);
translate([0,0,-0.01])
cylinder(r = (screenBaseThickness + mountProtrusionFromScreenBack) - (mountWidthEnd), h = zThickness + 0.02, $fn=circleResolution);
translate([-(screenBaseThickness + mountProtrusionFromScreenBack) - 0.01, yThickness, -0.01])
cube([(screenBaseThickness + mountProtrusionFromScreenBack) * 2.01, (screenBaseThickness + mountProtrusionFromScreenBack), zThickness + 0.02]);
translate([mountWidthEnd/2, -(screenBaseThickness + mountProtrusionFromScreenBack)-0.01, -0.01])
cube([screenBaseThickness + mountProtrusionFromScreenBack, screenBaseThickness + mountProtrusionFromScreenBack + yThickness+0.02, zThickness + 0.02]);
}
// right angle connection reinforcement quarter circle
difference() {
cube([mountWidthEnd, mountWidthEnd + 0.25, mountWidthEnd + zThickness]);
translate([-0.01, mountWidthEnd + yThickness, mountWidthEnd + zThickness])
rotate([0,90,0])
cylinder(r = mountWidthEnd * 1.02, h = mountWidthEnd + 0.02, $fn=circleResolution);
}
// headphone arm
translate([-(screenBaseThickness + mountProtrusionFromScreenBack) + (mountWidthEnd / 2), (screenBaseThickness + mountProtrusionFromScreenBack + yThickness), 0]) {
cube([mountWidthEnd,headphoneArmLength + yThickness,zThickness]);
translate([0, headphoneArmLength + yThickness, 0])
cube([mountWidthEnd, yThickness / 2, zThickness * 2]);
}
}