248 lines
5.5 KiB
OpenSCAD
248 lines
5.5 KiB
OpenSCAD
include <enclosure.h>
|
|
use <PSU.scad>
|
|
|
|
//*** DIMENSIONS ***//
|
|
|
|
//*** ASSEMBLY ***//
|
|
|
|
if (render_supports) {
|
|
supports();
|
|
} else {
|
|
difference() {
|
|
union() {
|
|
if (render_placeholders) {
|
|
placeholder_board();
|
|
*color("grey", 0.5) placeholder_jbox();
|
|
}
|
|
color("cyan") jbox_mounting_ears();
|
|
*color("white") relay_plate();
|
|
*color("blue") label();
|
|
*color("pink") sidewalls();
|
|
*color("cyan") face_hooks();
|
|
}
|
|
*color("red") relay_passthrough();
|
|
translate([0,0,-1])
|
|
*relay_mounting_stems(0);
|
|
}
|
|
*relay_mounting_stems(mounting_hole_r);
|
|
}
|
|
|
|
psu_case_attached();
|
|
|
|
*color("grey") placeholder_jbox();
|
|
|
|
//*** MODULES ***//
|
|
|
|
module psu_case_attached() {
|
|
translate([18.155/2+1,30,-24.0])
|
|
rotate([0,0,90])
|
|
psu_case();
|
|
}
|
|
|
|
module sidewalls() {
|
|
rotate([0,180,0]) {
|
|
translate([ -relay_dim.x/2,
|
|
relay_pos.y,
|
|
-relay_pos.z]) {
|
|
difference() {
|
|
cube(size=[ relay_dim.x,
|
|
relay_dim.y,
|
|
mounting_hole_depth]);
|
|
translate([ relay_sidewalls,
|
|
relay_sidewalls,
|
|
-1]) {
|
|
cube(size=[ relay_dim.x - (2 * relay_sidewalls),
|
|
relay_dim.y - (2 * relay_sidewalls),
|
|
mounting_hole_depth + 2]);
|
|
}
|
|
for(i = [0:len(relay_mounting_holes)-1]) {
|
|
translate(relay_mounting_holes[i]) {
|
|
mounting_stem(mounting_hole_depth + thickness,
|
|
hole_r = 0);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
module relay_mounting_stems(r) {
|
|
stem_depth = relay_threaded_insert_depth - relay_pcb_inset + relay_dim.z + 2;
|
|
translate([jbox_dim.x/2,0,stem_depth]) {
|
|
rotate([0,0,180]) {
|
|
translate([relay_pos.x, -relay_pos.y - relay_dim.y, relay_pos.z]) {
|
|
for(i = [0:len(relay_mounting_holes)-1]) {
|
|
translate(relay_mounting_holes[i]) {
|
|
translate([0,0, 0]) {
|
|
rotate([180,0,0]) {
|
|
mounting_stem(stem_depth, stem_r = relay_mounting_stem_r, hole_r = r);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
module supports() {
|
|
relay_mounting_stems(0);
|
|
}
|
|
|
|
module label() {
|
|
translate([ relay_pos.x + 0,
|
|
relay_pos.y + 10,
|
|
relay_pos.z+thickness])
|
|
rotate([0,0,90])
|
|
linear_extrude(0.75)
|
|
text(label_text, size=label_size);
|
|
}
|
|
|
|
module face_hooks() {
|
|
for(i = [0:len(face_hook_pos[1])-1]) {
|
|
translate([0,face_hook_pos[1][i],relay_pos.z]) {
|
|
face_hook_right();
|
|
}
|
|
}
|
|
for (i = [0:len(face_hook_pos[0])-1]) {
|
|
translate([0,face_hook_pos[0][i],relay_pos.z]) {
|
|
face_hook_left();
|
|
}
|
|
}
|
|
}
|
|
|
|
module face_hook_left() {
|
|
mirror([1,0,0])
|
|
face_hook_right();
|
|
}
|
|
|
|
module face_hook_right() {
|
|
//difference() {
|
|
translate([jbox_dim.x/2 - face_hook_dim_1.x - face_hook_jbox_clearance - thickness,0,0]) {
|
|
if (!render_supports) {
|
|
cube(size=face_hook_dim_1);
|
|
}
|
|
translate([face_hook_dim_1.x,0,0]) {
|
|
cube(size=face_hook_dim_2);
|
|
translate([0,0,face_hook_dim_2.z]) {
|
|
cube(size=face_hook_dim_3);
|
|
translate([face_hook_dim_3.x,0,0]) {
|
|
difference() {
|
|
cube(size=face_hook_dim_4);
|
|
translate(face_hook_slot_pos) {
|
|
cube(size=face_hook_slot_dim);
|
|
translate([ 0,
|
|
12,
|
|
-5.5]) {
|
|
rotate([45,0,0]) {
|
|
cube(size=10);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
module placeholder_jbox() {
|
|
translate([-jbox_dim.x/2,0,-jbox_dim.z]) {
|
|
difference() {
|
|
translate([-3,-3,-3])
|
|
cube([jbox_dim.x + 6,
|
|
jbox_dim.y + 6,
|
|
jbox_dim.z + 3]);
|
|
cube([jbox_dim.x, jbox_dim.y, jbox_dim.z + 1]);
|
|
}
|
|
translate([(jbox_dim.x/2) - (jbox_mount_dim.x/2), 0, 0]) {
|
|
cube(jbox_mount_dim);
|
|
translate([0,jbox_dim.y - jbox_mount_dim.y ,0])
|
|
cube(jbox_mount_dim);
|
|
}
|
|
}
|
|
}
|
|
|
|
module placeholder_board() {
|
|
rotate([0,180,0])
|
|
translate([-jbox_dim.x/2,0,2 * -relay_pos.z + relay_pcb_inset - relay_dim.z])
|
|
color("green") {
|
|
translate(relay_pos) {
|
|
difference() {
|
|
cube(size=relay_dim);
|
|
for(i = [0:len(relay_mounting_holes)-1]) {
|
|
translate([0,0,-1])
|
|
translate(relay_mounting_holes[i]) {
|
|
linear_extrude(zdim) {
|
|
circle(r=2.1);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
module relay_plate() {
|
|
rotate([0,180,0])
|
|
translate([0,0,2 * -relay_pos.z - thickness])
|
|
translate([-jbox_dim.x/2,0,0])
|
|
translate([relay_pos.x - relay_cover_thickness,relay_pos.y,relay_pos.z]) {
|
|
cube(size=[relay_dim.x + (2 * relay_cover_thickness), relay_dim.y, thickness]);
|
|
}
|
|
}
|
|
|
|
module relay_passthrough() {
|
|
rotate([0,180,0])
|
|
translate([0,0,2 * -relay_pos.z - thickness ])
|
|
translate([-jbox_dim.x/2,0,0])
|
|
translate([relay_pos.x - relay_cover_thickness,relay_pos.y,relay_pos.z]) {
|
|
translate([ relay_dim.x - relay_passthrough_pos.x,
|
|
relay_dim.y - relay_passthrough_pos.y] ) {
|
|
cube(size=relay_passthrough_dim, center=true);
|
|
}
|
|
}
|
|
}
|
|
|
|
module jbox_mounting_ears() {
|
|
translate([0,jbox_hole_inset,0]) {
|
|
jbox_mounting_ear();
|
|
translate([0,jbox_screw_distance,0]) {
|
|
rotate([0,0,180]) {
|
|
jbox_mounting_ear();
|
|
}
|
|
}
|
|
}
|
|
translate([-jbox_ear_width/2, jbox_mount_dim.y, relay_pos.z]) {
|
|
difference() {
|
|
cube([jbox_ear_width,
|
|
jbox_dim.y - (2 * jbox_mount_dim.y) - 2,
|
|
thickness]);
|
|
translate([15,21.5,-5])
|
|
cube([4, 6,10]);
|
|
}
|
|
}
|
|
}
|
|
|
|
module jbox_mounting_ear() {
|
|
linear_extrude(jbox_ear_thickness) {
|
|
difference() {
|
|
intersection() {
|
|
square([jbox_ear_width, 12], center=true);
|
|
translate([0, jbox_ear_pleatau, 0]) {
|
|
rotate([0,0,45]) {
|
|
square([50,50]);
|
|
}
|
|
}
|
|
}
|
|
circle(r=jbox_screw_dia);
|
|
}
|
|
}
|
|
translate([-jbox_ear_width/2, jbox_mount_dim.y - jbox_hole_inset, relay_pos.z]) {
|
|
cube([jbox_ear_width, thickness, -relay_pos.z + jbox_ear_thickness]);
|
|
}
|
|
}
|
|
|
|
module fplate_mount() {
|
|
|
|
} |