// Chromebook screen and motherboard assembly // length units are millimeters screenHeight = 157; screenHeightAndChin = 167; screenChinHeight = screenHeightAndChin - screenHeight; screenWidth = 267; screenChinWidth = 188.5; screenWidthWithNoChin = screenWidth - screenChinWidth; screenTabsDistance = 136; // top of top tab to bottom of bottom tab screenTabHeight = 11.49; screenTabWidth = 4.96; screenTabDistanceToBottom = 16.81; // from bottom-most point of tab screenTopTabDistanceToBottom = screenTabsDistance + screenTabDistanceToBottom - screenTabHeight; // from bottom-most point of top tab screenTopTabDistanceToTop = screenHeight - screenTabsDistance - screenTabDistanceToBottom; // from top-most point of tab screenBezel = 4.50; screenThickness = 2.60; batteryWidth = 199; batteryHeight = 84; batteryThickness = 6; batteryTabHeight = 16.40; batteryTabWidth = 7.37; batteryTabThickness = 1.55 + 0.4; batteryTabDistanceToBottom = 25.23; motherboardLeftHolesDistanceHeight = 95.72; motherboardLeftHoleRadius = 2.50 / 2; motherboardLeftHolesRealHeightDistance = motherboardLeftHolesDistanceHeight - (2 * motherboardLeftHoleRadius); motherboardRightHoleDistanceWidth = 211; motherboardRightHoleRadius = 3.16 / 2; motherboardRightHoleRealWidthDistance = motherboardRightHoleDistanceWidth - motherboardRightHoleRadius; motherboardRightHoleDistanceToBottom = 45 - motherboardRightHoleRadius; motherboardBatteryDistanceHeight = motherboardLeftHolesRealHeightDistance - 20; motherboardBatteryDistanceWidth = 31; screwThreadRadius = 1.90 * 0.49; screwSupportRadius = 4.50 / 2; globalThickness = 2.00; motherboardElevation = 6.00 + (globalThickness / 3); include ; module motherboardMount(thickness) { translate([screwSupportRadius, screwSupportRadius, 0]) union () { // y-axis support bar translate([-screwSupportRadius,-screwSupportRadius,0]) { //#cube([screwSupportRadius * 2, motherboardLeftHolesRealHeightDistance + (2 * screwSupportRadius), thickness]); } // x-axis support bar translate([-screwSupportRadius, motherboardRightHoleDistanceToBottom -screwSupportRadius, 0]) { //#cube([motherboardRightHoleRealWidthDistance + (2 * screwSupportRadius), screwSupportRadius * 2, thickness]); } translate([0, 0, -motherboardElevation]) { // bottom left hole hollowCylinder(screwThreadRadius, screwSupportRadius, motherboardElevation); // top left hole translate ([0, motherboardLeftHolesRealHeightDistance, 0]) { hollowCylinder(screwThreadRadius, screwSupportRadius, motherboardElevation); } // right hole translate ([motherboardRightHoleRealWidthDistance, motherboardRightHoleDistanceToBottom, 0]) { hollowCylinder(screwThreadRadius, screwSupportRadius, motherboardElevation); } } } } module batteryMount(thickness) { union() { //#cube([batteryWidth + (2 * batteryTabWidth), thickness, thickness]); // left side mount translate([0,0,0]) { cube([batteryTabWidth, batteryTabDistanceToBottom + batteryTabHeight, thickness]); translate([0, 0, -batteryTabThickness]) { cube([batteryTabWidth, batteryTabDistanceToBottom, batteryTabThickness + thickness]); translate([0, 0, -thickness]) { cube([batteryTabWidth, batteryTabDistanceToBottom + batteryTabHeight, thickness]); } } } // right side mount translate([batteryWidth + batteryTabWidth, 0, 0]) { cube([batteryTabWidth, batteryTabDistanceToBottom + batteryTabHeight, thickness]); translate([0, 0, -batteryTabThickness]) { cube([batteryTabWidth, batteryTabDistanceToBottom, batteryTabThickness + thickness]); translate([0, 0, -thickness]) { cube([batteryTabWidth, batteryTabDistanceToBottom + batteryTabHeight, thickness]); } } } } } module screenMount(thickness) { // top bar slot translate([screwThreadRadius, -thickness, 0]) { cube([screenWidth / 2, thickness, screenThickness + (2 * thickness)]); translate([0, -screenBezel, 0]) cube([screenWidth / 2, screenBezel, thickness]); translate([0, -screenBezel, screenThickness + thickness]) cube([screenWidth / 2, screenBezel, thickness]); } // side slot translate([(screenWidth / 2) + screwThreadRadius, -thickness, 0]) { translate([0, -screenTopTabDistanceToTop, 0]) cube([thickness, screenTopTabDistanceToTop + thickness, screenThickness + (2 * thickness)]); translate([0, screenTabDistanceToBottom + screenTabHeight - screenHeight]) cube([thickness, screenTabsDistance - (2 * screenTabHeight), screenThickness + (2 * thickness)]); translate([0, -screenHeight, 0]) cube([thickness, screenTabDistanceToBottom, screenThickness + (2 * thickness)]); translate([-screenBezel, -screenHeight, 0]) { cube([screenBezel + thickness, screenHeight, thickness]); translate([0, 0, thickness + screenThickness]) cube([screenBezel + thickness, screenHeight, thickness]); } } // bottom slot translate([(screenWidth / 2) + screwThreadRadius - (screenWidthWithNoChin / 2), -(screenHeight + (thickness * 2)), 0]) { cube([(screenWidthWithNoChin / 2) + thickness, thickness, screenThickness + (2 * thickness)]); cube([(screenWidthWithNoChin / 2) + thickness, screenHeight, thickness]); translate([0, 0, screenThickness + thickness]) cube([(screenWidthWithNoChin / 2) + thickness, screenBezel, thickness]); } } module screenMountR(thickness) { hollowCylinder(screwThreadRadius, screwSupportRadius, (screenThickness + (2 * thickness)) / 2); screenMount(thickness); circleSupportRadius = (screenWidth / 6); // backplate cut circle translate([screenWidth * 0.4, -screenHeight * 0.6, 0]) difference() { cylinder(r=circleSupportRadius, h = thickness, $fn=360); translate([-0.01, -(circleSupportRadius + 0.01), -0.01]) cube([circleSupportRadius + 0.02, (circleSupportRadius * 2) + 0.02, thickness + 0.02]); /*translate([-(circleSupportRadius + 0.01), -0.01, -0.01]) cube([circleSupportRadius + 0.02, (screenWidth / 2) + 0.02, thickness + 0.02]);*/ } } module screenMountL(thickness) { translate([0, 0, (screenThickness + (2 * thickness)) / 2]) hollowCylinder(screwThreadRadius, screwSupportRadius, (screenThickness + (2 * thickness)) / 2); mirror([1, 0, 0]) screenMount(thickness); circleSupportRadius = (screenWidth / 3); // backplate cut circle translate([-(screenWidth / 2), 0, 0]) difference() { cylinder(r=circleSupportRadius, h = thickness, $fn=360); translate([-circleSupportRadius, -circleSupportRadius, -0.01]) cube([circleSupportRadius + 0.02, screenWidth + 0.02, thickness + 0.02]); translate([0, 0, -0.01]) cube([circleSupportRadius + 0.02, circleSupportRadius + 0.02, thickness + 0.02]); } } motherboardMount(globalThickness); translate([motherboardBatteryDistanceWidth, motherboardBatteryDistanceHeight, -(globalThickness / 3)]) batteryMount(globalThickness); /*translate([screwSupportRadius * 2, motherboardRightHoleDistanceToBottom + (screwSupportRadius * 2), 0]) #cube([motherboardBatteryDistanceWidth, motherboardLeftHolesRealHeightDistance - motherboardRightHoleDistanceToBottom, globalThickness]);*/ translate([screenWidth / 2 - globalThickness, screenHeight + globalThickness, 0]) { screenMountR(globalThickness); screenMountL(globalThickness); }