344 lines
15 KiB
OpenSCAD
Raw Normal View History

// Parametric Expansion Card
// An OpenSCAD implementation of a basic enclosure of an Expansion Card for
// use with Framework products like the Framework Laptop.
//
// See https://frame.work for more information about Framework products and
// additional documentation around Expansion Cards.
// Parametric Expansion Card © 2021 by Nirav Patel at Framework Computer LLC
// is licensed under Attribution 4.0 International.
// To view a copy of this license, visit http://creativecommons.org/licenses/by/4.0/
// The basic dimensions of an Expansion Card
base = [30.0, 32.0, 6.8];
// The extension for the SMA connectors & EG95
base_ext = [40, 20.2, 16.5];
2023-07-26 19:03:01 +01:00
// The dimensions of the NSCCP sim holder
sim = [13.5, 13, 1.37];
bay = [12, 8.95, 0.8];
// 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_inc_y = 10.5;
boss_inc_x = 4.2;
boss_r = 3;
boss_ext_y = 8.75;
boss_ext_x = 4;
boss_ext_top_y = 6;
lid_boss_depth = 3;
lid_wall_thickness = lid_boss_depth+side_wall;
gap = 0.25;
sma_height = 11.28;
sma = 10.035;
hollow_bottom_z = 0.7;
bottom_thickness = hollow_bottom_z+0.2;
ext_screw_hole = 2.5+side_wall;
ledge_cut = 0.6;
ledge_cut_d = 3.2;
// The rail cutout in the sides of the card
module rail(make_printable) {
rail_depth = 0.81;
rail_flat_h = 0.32;
mirror([0, 1, 0]) {
// The rail that holds the card
bottom_angle = 43.54;
difference() {
union() {
translate([rail_depth, 0, -rail_flat_h]) rotate([0, 180+bottom_angle, 0]) cube([2, base[1]-side_wall, 2]);
translate([-2+rail_depth, 0, -rail_flat_h]) cube([2, base[1]-side_wall, rail_flat_h]);
}
translate([-5+rail_depth, 0, 0]) cube([5, base[1]-side_wall, 5]);
}
pyramid_b = 3.23*sqrt(2);
pyramid_t = 1.75*sqrt<