Skip to content

Instantly share code, notes, and snippets.

@joejulian
Created May 24, 2016 05:39
Show Gist options
  • Save joejulian/7fd66d971bf6761b6fee344c5093833b to your computer and use it in GitHub Desktop.
Save joejulian/7fd66d971bf6761b6fee344c5093833b to your computer and use it in GitHub Desktop.
Mounting cage for amazon powered 4 port hub (ver 0.90)
module roundedRect(size, radius) {
x = size[0];
y = size[1];
z = size[2];
linear_extrude(height=z)
hull() {
// place 4 circles in the corners,
// with the given radius
translate([
(-x/2)+(radius/2),
(-y/2)+(radius/2),
0])
circle(r=radius);
translate([
(x/2)-(radius/2),
(-y/2)+(radius/2),
0])
circle(r=radius);
translate([
(-x/2)+(radius/2),
(y/2)-(radius/2),
0])
circle(r=radius);
translate([
(x/2)-(radius/2),
(y/2)-(radius/2),
0])
circle(r=radius);
}
}
module USBHubPositive(dimensions) {
r = dimensions[3];
rect = [
dimensions[0]-r,
dimensions[1]-r,
dimensions[2]];
roundedRect(rect, r, true);
translate([0,10-rect[1]/2,rect[2]/2]) rotate([90,90,0]) cylinder(20,2.5,2.5);
}
module USBHub(dimensions) {
rect = [
dimensions[0],
dimensions[1],
dimensions[2]];
r = dimensions[3];
flen = (dimensions[1]-dimensions[3]);
difference() {
USBHubPositive(dimensions);
x = rect[0]/2;
z = rect[2]/2;
translate([x,-3 * flen/8 ,z])
cube([40,16,7.5],true);
translate([x,-1 * flen/8,z])
cube([40,16,7.5],true);
translate([x, 1 * flen/8,z])
cube([40,16,7.5],true);
translate([x, 3 * flen/8,z])
cube([40,16,7.5],true);
translate([rect[0]/4,10-rect[1]/2,rect[2]/2])
rotate([90,90,0])
cylinder(20,2.5,2.5);
}
}
module hc_column(length, cell_size, wall_thickness) {
no_of_cells = floor(length / (cell_size + wall_thickness)) ;
for (i = [0 : no_of_cells]) {
translate([0,(i * (cell_size + wall_thickness)),0])
circle($fn = 6, r = cell_size * (sqrt(3)/3));
}
}
module honeycomb (length, width, height, cell_size, wall_thickness) {
no_of_rows = floor(1.2 * length / (cell_size +
wall_thickness)) ;
tr_mod = cell_size + wall_thickness;
tr_x = sqrt(3)/2 * tr_mod;
tr_y = tr_mod / 2;
off_x = -1 * wall_thickness / 2;
off_y = wall_thickness / 2;
linear_extrude(height = height, center = true, convexity = 10,
twist = 0, slices = 1)
difference(){
square([length, width]);
for (i = [0 : no_of_rows]) {
translate([i * tr_x + off_x, (i % 2) *
tr_y + off_y,0])
hc_column(width, cell_size,
wall_thickness);
}
}
}
//honeycomb(length, width, height, cell_size, wall_thickness);
module mountingCage(dimensions) {
r = dimensions[3];
rect = [
dimensions[0]+1,
dimensions[1]+1,
dimensions[2]+1];
h = ((rect[1]/3 + 2)/3 * sqrt(3))/3;
translate([-rect[0]/2,-rect[1]/2,rect[2]])
honeycomb(rect[0], rect[1], 1, h, 1);
// cord side
translate([0,-rect[1]/2,rect[2]])
cube([rect[0]+1,1,1],true);
translate([0,-rect[1]/2,.5])
cube([rect[0]+1,1,1],true);
translate([-rect[0]/2,-rect[1]/2,0])
rotate([90,0,0])
honeycomb(rect[0]*2/5, rect[2], 1, h, 1);
translate([-(rect[0]+1)/2 + rect[0] * 2 / 5,-(rect[1]+1)/2,0])
cube([1,1,rect[2]]);
// short side opposite cord
translate([0,rect[1]/2,rect[2]])
cube([rect[0]+1,1,1],true);
translate([0,rect[1]/2,0.5])
cube([rect[0]+1,1,1],true);
translate([-rect[0]/2,rect[1]/2,0])
rotate([90,0,0])
honeycomb(rect[0], rect[2], 1, h, 1);
// starboard side
translate([-rect[0]/2,0,rect[2]])
cube([1,rect[1]+1,1],true);
translate([-rect[0]/2,0,0.5])
cube([1,rect[1]+1,1],true);
translate([-rect[0]/2,-rect[1]/2,0])
rotate([90,0,90])
honeycomb(rect[1], rect[2], 1, h, 1);
// port side
translate([rect[0]/2,0,rect[2]-1])
cube([1,rect[1]+1,3],true);
translate([rect[0]/2,0,1.5])
cube([1,rect[1]+1,3],true);
// corners
translate([(rect[0]-1)/2,(rect[1]-1)/2-2,0])
cube([1,3,rect[2]]);
translate([(rect[0]-1)/2,-(rect[1]+1)/2,0])
cube([1,3,rect[2]]);
translate([(rect[0]-1)/2-2,-(rect[1]+1)/2,0])
cube([3,1,rect[2]]);
translate([-(rect[0]+1)/2,(rect[1]-1)/2,0])
cube([1,1,rect[2]]);
translate([-(rect[0]+1)/2,-(rect[1]+1)/2,0])
cube([1,1,rect[2]]);
// screw tabs
difference() {
translate([-(rect[0]+1)/2,-(rect[1]+1)/2-15,0])
cube([15,15,1]);
translate([-(rect[0]+1)/2+7.5,-(rect[1]+1)/2-7.5,-2])
rotate([0,0,90])
cylinder(10,1.8,1.8);
}
difference() {
translate([(rect[0]+1)/2-15,(rect[1]+1)/2,0])
cube([15,15,1]);
translate([(rect[0]+1)/2-7.5,(rect[1]+1)/2+7.5,-2])
rotate([0,0,90])
cylinder(10,1.8,1.8);
}
}
USBHubBase = [40.65,91.35,16,5];
USBHub(USBHubBase);
mountingCage(USBHubBase);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment