80 lines
No EOL
3.9 KiB
OpenSCAD
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]);
|
|
}
|
|
} |