252 lines
5.6 KiB
OpenSCAD
252 lines
5.6 KiB
OpenSCAD
// for board_support()
|
|
bs_height = 5;
|
|
bs_width = 8;
|
|
|
|
// for connector_holes()
|
|
hole_height = 6;
|
|
hole_width = 15;
|
|
hole_bottom_offset = 4;
|
|
|
|
connector_space = 5.5;
|
|
|
|
// for microusb_hole()
|
|
microusb_height = 6;
|
|
microusb_width = 8;
|
|
microusb_border_offset = 14;
|
|
microusb_bottom_offset = 14;
|
|
|
|
// for dc_hole()
|
|
dc_plug_offset = 25;
|
|
dc_width = 9;
|
|
dc_depth = 3.5;
|
|
dc_height = 11;
|
|
dc_outer_strength = 2;
|
|
dc_support_height = 10;
|
|
dc_support_hole_support_bottom_offset = 3;
|
|
|
|
// for case()
|
|
base_cube = [68, 50, 25 + bs_height];
|
|
wall_strength = 2;
|
|
|
|
module case() {
|
|
difference() {
|
|
cube(size = base_cube, center = true);
|
|
translate([0, 0, wall_strength]) {
|
|
cube(size = [base_cube[0] - wall_strength, base_cube[1] - wall_strength, base_cube[2]], center = true);
|
|
};
|
|
};
|
|
};
|
|
|
|
module board_support() {
|
|
bs_offset_y = base_cube[1] / 2 - bs_width / 2;
|
|
bs_offset_z = base_cube[2] / 2 - bs_height / 2;
|
|
bs_offset_x = base_cube[0] / 2 - bs_width / 2;
|
|
translate([bs_offset_x, -0, -bs_offset_z]) {
|
|
cube(size = [bs_width, base_cube[1], bs_height] , center = true);
|
|
};
|
|
|
|
translate([-bs_offset_x, 0, -bs_offset_z]) {
|
|
cube(size = [bs_width, base_cube[1], bs_height] , center = true);
|
|
}
|
|
}
|
|
|
|
module connector_holes() {
|
|
conn_offset_x = base_cube[0] / 2;
|
|
conn_offset_y = hole_width / 2 + connector_space / 2;
|
|
conn_offset_z = base_cube[2] / 2 - hole_height / 2 - hole_bottom_offset - bs_height;
|
|
translate([conn_offset_x, conn_offset_y, -conn_offset_z]) {
|
|
cube(size=[wall_strength, hole_width, hole_height], center=true);
|
|
}
|
|
|
|
translate([conn_offset_x, -conn_offset_y, - conn_offset_z]) {
|
|
cube(size=[wall_strength, hole_width, hole_height], center=true);
|
|
}
|
|
}
|
|
|
|
module microusb_hole() {
|
|
musb_offset_x = base_cube[0] / 2;
|
|
musb_offset_y = base_cube[1] / 2 - microusb_width / 2 - microusb_border_offset;
|
|
musb_offset_z = base_cube[2] / 2 - microusb_height / 2 - microusb_bottom_offset - bs_height;
|
|
|
|
translate([-musb_offset_x, musb_offset_y, -musb_offset_z]) {
|
|
cube(size=[wall_strength, microusb_width, microusb_height], center=true);
|
|
}
|
|
}
|
|
|
|
|
|
module top_support_corner() {
|
|
polyhedron(
|
|
points=[ [6,6,0],
|
|
[6,-6,0],
|
|
[-6,-6,0],,
|
|
[6,-6,-10] ],
|
|
faces=[ [1,0,3],
|
|
[2,0,1],
|
|
[3,2,1],
|
|
[0,2,3]
|
|
]
|
|
);
|
|
};
|
|
|
|
module corner_with_hole() {
|
|
difference() {
|
|
top_support_corner();
|
|
support_corner_holes();
|
|
};
|
|
}
|
|
|
|
module support_corners() {
|
|
sc_offset_x = base_cube[0] / 2 - 6;
|
|
sc_offset_y = base_cube[1] / 2 - 6;
|
|
sc_offset_z = base_cube[2] / 2;
|
|
|
|
translate([sc_offset_x, -sc_offset_y, sc_offset_z]) {
|
|
rotate([0,0,0]) {
|
|
corner_with_hole();
|
|
};
|
|
};
|
|
|
|
translate([sc_offset_x, sc_offset_y, sc_offset_z]) {
|
|
rotate([0,0,90]) {
|
|
corner_with_hole();
|
|
};
|
|
};
|
|
|
|
translate([-sc_offset_x, sc_offset_y, sc_offset_z]) {
|
|
rotate([0,0,180]) {
|
|
corner_with_hole();
|
|
};
|
|
};
|
|
|
|
/* Disabled for DC hole
|
|
translate([-sc_offset_x, -sc_offset_y, sc_offset_z]) {
|
|
rotate([0,0,270]) {
|
|
corner_with_hole();
|
|
};
|
|
};
|
|
*/
|
|
}
|
|
|
|
module support_corner_holes() {
|
|
translate([2.5, -2.5, -6]) {
|
|
cylinder(r=1.75,h=6,$fn=50);
|
|
};
|
|
}
|
|
|
|
module top_base_hole() {
|
|
sc_offset_x = base_cube[0] / 2 - 6;
|
|
sc_offset_y = base_cube[1] / 2 - 6;
|
|
sc_offset_z = base_cube[2] / 2;
|
|
translate([sc_offset_x, -sc_offset_y, wall_strength / 2]) {
|
|
support_corner_holes();
|
|
};
|
|
}
|
|
|
|
module top_diagonal_hole_set() {
|
|
top_base_hole();
|
|
|
|
rotate(180) {
|
|
top_base_hole();
|
|
};
|
|
}
|
|
|
|
module top_holes() {
|
|
top_diagonal_hole_set();
|
|
mirror([1, 0, 0]) {
|
|
top_diagonal_hole_set();
|
|
};
|
|
}
|
|
|
|
module top() {
|
|
translate([0, 0, -base_cube[2] / 2 + wall_strength / 2]) {
|
|
difference() {
|
|
cube(size = [base_cube[0], base_cube[1], wall_strength], center = true);
|
|
top_holes();
|
|
};
|
|
};
|
|
}
|
|
|
|
|
|
module dc_hole() {
|
|
translate([-dc_plug_offset, -(base_cube[1]/2), (dc_width/2) + dc_support_hole_support_bottom_offset - dc_outer_strength/2]) {
|
|
rotate([0, 0, 90]){
|
|
cube(size=[wall_strength,dc_width,dc_width], center=true);
|
|
}
|
|
};
|
|
}
|
|
|
|
module dc_support() {
|
|
translate([-dc_plug_offset, -(base_cube[1]/2)+dc_depth-wall_strength/2, 0]) {
|
|
rotate([0, 0, 90]){
|
|
dc_support_ramp();
|
|
dc_support_frame();
|
|
}
|
|
};
|
|
};
|
|
|
|
module dc_support_frame() {
|
|
pillar_offset_y = (dc_width/2)+(dc_outer_strength/2);
|
|
pillar_offset_z = (dc_height/2);
|
|
beam_offset_z = dc_height + dc_outer_strength/2;
|
|
|
|
translate([0, -pillar_offset_y, pillar_offset_z]) {
|
|
dc_support_pillar();
|
|
}
|
|
|
|
translate([0, pillar_offset_y, pillar_offset_z]) {
|
|
dc_support_pillar();
|
|
}
|
|
|
|
|
|
translate([0, 0, beam_offset_z]) {
|
|
dc_support_beam();
|
|
};
|
|
}
|
|
|
|
module dc_support_pillar() {
|
|
cube(size=[dc_depth, dc_outer_strength, dc_height], center=true);
|
|
}
|
|
|
|
module dc_support_beam() {
|
|
dc_support_width = dc_width + dc_outer_strength*2;
|
|
cube(size=[dc_depth, dc_support_width, dc_outer_strength], center=true);
|
|
}
|
|
|
|
module dc_support_ramp() {
|
|
dc_support_width = dc_width + dc_outer_strength*2;
|
|
|
|
translate([-(dc_depth/2),-(dc_support_width/2),0]) {
|
|
polyhedron(
|
|
points=[ [0,0,0],
|
|
[dc_depth,0,0],
|
|
[dc_depth,dc_support_width,0],
|
|
[0,dc_support_width,0],
|
|
[0,0,-dc_support_height],
|
|
[0,dc_support_width,-dc_support_height],
|
|
],
|
|
faces=[ [0,1,2,3],
|
|
[5,4,0,3],
|
|
[4,1,0],
|
|
[3,2,5],
|
|
[2,1,4,5],
|
|
]
|
|
);
|
|
};
|
|
}
|
|
|
|
|
|
translate([0, base_cube[1] + 10, 0]) {
|
|
translate([0, base_cube[1] + 10, 0]) {
|
|
difference() {
|
|
case();
|
|
connector_holes();
|
|
microusb_hole();
|
|
dc_hole();
|
|
}
|
|
dc_support();
|
|
board_support();
|
|
support_corners();
|
|
};
|
|
|
|
top();
|
|
}; |