opencom-lte/Mechanical/OpenSCAD/Lid.scad

74 lines
2.6 KiB
OpenSCAD
Raw Normal View History

2023-04-05 20:24:53 +02:00
// The basic dimensions of an Expansion Card
base = [30.0, 32.0, 6.8];
// The extension for the mini PCIe slot
base_ext = [59, 33, 13];
// The default wall thickness
side_wall = 1.5;
// Size and location of the typical PCB
pcb_gap = 0.5;
pcb = [26.0, 30.0, 0.8];
pcb_h = 3.05;
// USB-C plug dimensions
usb_c_r = 1.315;
usb_c_w = 5.86+usb_c_r*2;
usb_c_h = 2.2;
rail_h = 4.25; // to top of rail
// Boss locations matching the other Framework Expansion Cards
boss_y = 10.5;
boss_x = 3.7;
// The cutout for the USB-C plug
module usb_c_cutout(open_top) {
// The plug is "pushed in" by an extra 0.6 to account for 3d printing tolerances
translate([-usb_c_w/2+usb_c_r, 7-10+0.6, usb_c_r]) rotate([-90, 0, 0]) union() {
translate([0, usb_c_r, 0]) cylinder(r = usb_c_r, h = 10, $fn = 64);
translate([usb_c_w-usb_c_r*2, usb_c_r, 0]) cylinder(r = usb_c_r, h = 10, $fn = 64);
cube([usb_c_w-usb_c_r*2, usb_c_r*2, 10]);
// Cutout for the pin side of the shell that expands out
translate([0, usb_c_r, 0]) cylinder(r2 = usb_c_r, r1 = 3.84/2, h = 10-7.7, $fn = 64);
translate([usb_c_w-usb_c_r*2, usb_c_r, 0]) cylinder(r2 = usb_c_r, r1 = 3.84/2, h = 10-7.7, $fn = 64);
translate([usb_c_w/2-usb_c_r, usb_c_r, 0]) scale([1.8, 1, 1]) rotate([0, 0, 45]) cylinder(r2 = usb_c_r*sqrt(2), r1 = 3.84/2*sqrt(2), h = 10-7.7, $fn = 4);
// If the card drops in from the top rather than sliding in from the front,
// cut out a slot for the USB-C plug to drop into.
if (open_top) {
translate([-usb_c_r, -10+usb_c_r, 0]) cube([usb_c_w, 10, 10]);
}
}
}
// Incomplete implementation of a lid to use with this shell
module expansion_card_lid() {
gap = 0.25;
difference() {
union() {
translate([side_wall+gap, side_wall+gap, base[2]-side_wall]) cube([base[0]-side_wall*2-gap*2, base[1]-side_wall*2-gap*2, side_wall]);
difference() {
translate([base[0]/2-usb_c_w/2+gap, base[1]-side_wall-gap, usb_c_r+usb_c_h]) cube([usb_c_w-gap*2, side_wall+gap, base[2]-(usb_c_r+usb_c_h)]);
translate([base[0]/2, base[1], usb_c_r+usb_c_h]) usb_c_cutout(false);
}
}
// engrave LES logo into lid
translate([3, 20, 6]) linear_extrude(height=1.6, center=true) {
offset(0.01) import("LES.svg"); // the offset fixes a weird error about the svg's mesh being incomplete
}
}
}
expansion_card_lid();
translate([3, 20, 6]) linear_extrude(height=1, center=true) {
offset(0.01) import("LES.svg"); // the offset fixes a weird error about the svg's mesh being incomplete
}