Created
May 24, 2016 05:39
-
-
Save joejulian/7fd66d971bf6761b6fee344c5093833b to your computer and use it in GitHub Desktop.
Mounting cage for amazon powered 4 port hub (ver 0.90)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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