Skip to content

Instantly share code, notes, and snippets.

@kazuho
Last active March 17, 2023 21:53
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kazuho/3a5d3f6ebdb4125467218096d01e6be6 to your computer and use it in GitHub Desktop.
Save kazuho/3a5d3f6ebdb4125467218096d01e6be6 to your computer and use it in GitHub Desktop.
width = 65.3;
depth = 30.6;
space_bottom = 3;
mb_thick = 1.5;
space_top = 10;
height = space_bottom + mb_thick + space_top;
case_thick = 2.5;
holder_size = 5;
corner_radius = 3;
hex_size = 10;
usbc_width = 9.5;
usbc1_offset = 6.5;
usbc2_offset = 18.8;
mhdmi_width = 7;
mhdmi_offset = 49.5;
msd_width = 12;
msd_depth = 2;
connector_height = 3;
connector_hangout = 1.5;
module holder() {
linear_extrude(height = holder_size) {
difference () {
square([depth + case_thick * 2, height + case_thick * 2]);
translate([case_thick, case_thick + space_bottom])
square([depth,mb_thick]);
translate([case_thick + holder_size, case_thick])
square([depth - holder_size * 2, height]);
}
}
}
module hull() {
linear_extrude(height = width - holder_size * 2) {
difference() {
square([depth + case_thick * 2, height + case_thick * 2]);
translate([case_thick, case_thick])
square([depth, height]);
}
}
}
module angle() {
intersection() {
rotate([-90,0,0])
translate([corner_radius,-corner_radius,0])
cylinder(r = corner_radius, h = height + case_thick * 2, $fn = 24);
cube([corner_radius, height + case_thick * 2, corner_radius]);
}
}
module side() {
union() {
translate([corner_radius, 0, 0])
cube([depth + case_thick * 2 - corner_radius * 2, height + case_thick * 2, corner_radius]);
angle();
translate([depth + case_thick * 2, 0, 0])
rotate([0,-90,0])
angle();
}
}
module honeycomb() {
height = 70;
for (x = [0 : 2]) {
translate([x * hex_size * sqrt(3), hex_size, 0])
cylinder(h = height, r = hex_size * 0.45, $fn = 6);
translate([(x * 2 + 1) * hex_size / 2 * sqrt(3), 1.5 * hex_size, 0])
cylinder(h = height, r = hex_size * 0.45, $fn = 6);
translate([x * hex_size * sqrt(3), 2 * hex_size, 0])
cylinder(h = height, r = hex_size * 0.45, $fn = 6);
translate([(x * 2 + 1) * hex_size / 2 * sqrt(3), 2.5 * hex_size, 0])
cylinder(h = height, r = hex_size * 0.45, $fn = 6);
}
}
difference() {
union () {
translate([0,0,-corner_radius])
side();
holder();
}
translate([case_thick + (depth - msd_width) / 2,0,-10])
cube([msd_width,case_thick+space_bottom,10+msd_depth]);
}
difference() {
translate([0,0,holder_size])
hull();
translate([depth,case_thick + space_bottom + mb_thick,usbc1_offset])
cube([case_thick * 3,connector_height,usbc_width]);
translate([depth,case_thick + space_bottom + mb_thick,usbc2_offset])
cube([case_thick * 3,connector_height,usbc_width]);
translate([depth,case_thick + space_bottom + mb_thick,mhdmi_offset])
cube([case_thick * 3,connector_height,mhdmi_width]);
translate([depth,case_thick + space_bottom + mb_thick,usbc1_offset])
cube([case_thick + connector_hangout,connector_height,100]);
translate([0, 50, 53])
rotate([90,90,0])
honeycomb();
}
translate([depth + case_thick * 2, 0, 100]) rotate([180,0,180]) {
hook_length = 2;
translate([0,0,-corner_radius])
side();
holder();
translate([case_thick, case_thick, 0])
cube([5, 1, holder_size + hook_length]);
translate([case_thick + depth - 5, case_thick, 0])
cube([5, 1, holder_size + hook_length]);
translate([case_thick, case_thick + height - 5, 0])
cube([depth, 5, holder_size + hook_length]);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment