mcopy/scad/oxberry_control_panel.scad

82 lines
2.5 KiB
OpenSCAD

PANEL_X = 72;
PANEL_Y = 147;
PANEL_Z = 3;
CONNECTOR_D = 15.75; //?
CONNECTOR_D2 = 18.1;
CONNECTOR_D3 = 29;
CONNECTOR_Z = 4;
CONNECTOR_OFFSET_Y = 40;
//max spacing of holes = 140
//min spacing = 131
SPACING_MIN = 131;
SPACING_MAX = 140;
SPACING = SPACING_MIN + ((SPACING_MAX - SPACING_MIN) / 2);
SCREW_D = (SPACING_MAX - SPACING_MIN) / 2;
RELAY_X = 44.4;
RELAY_Y = 33.1;
RELAY_D1 = 5;
RELAY_D2 = 2.6;
RELAY_H1 = 2;
RELAY_H2 = 2;
RELAY_OFFSET_Y = -30;
module relay_post () {
$fn = 60;
union () {
cylinder(r = RELAY_D1 / 2, h = RELAY_H1 + (PANEL_Z / 2), center = true);
translate([0, 0, (RELAY_H1 / 2) + (RELAY_H2 / 2) + (PANEL_Z / 4)]) cylinder(r = RELAY_D2 / 2, h = RELAY_H2, center = true);
}
}
module oxberry_control_panel () {
$fn = 60;
difference () {
union () {
cube([PANEL_X, PANEL_Y, PANEL_Z], center = true);
//relay_mount
translate ([0, RELAY_OFFSET_Y, (PANEL_Z / 2) + (RELAY_H1 / 2)]) {
translate([RELAY_X / 2, RELAY_Y / 2, 0]) relay_post();
translate([-RELAY_X / 2, RELAY_Y / 2, 0]) relay_post();
translate([RELAY_X / 2, -RELAY_Y / 2, 0]) relay_post();
translate([-RELAY_X / 2, -RELAY_Y / 2, 0]) relay_post();
}
//reinforcement for connector
translate([0, CONNECTOR_OFFSET_Y, PANEL_Z / 2]) difference () {
cylinder(r = CONNECTOR_D3 / 2, h = CONNECTOR_Z, center = true, $fn = 100);
cylinder(r = CONNECTOR_D2 / 2, h = CONNECTOR_Z + 1, center = true, $fn = 100);
}
}
//voids for screws
translate([0, SPACING / 2, 0]) cylinder(r = SCREW_D / 2, h = PANEL_Z + 1, center = true);
translate([0, -SPACING / 2, 0]) cylinder(r = SCREW_D / 2, h = PANEL_Z + 1, center = true);
//void for connector
translate([0, CONNECTOR_OFFSET_Y, 0]) cylinder(r = CONNECTOR_D / 2, h = PANEL_Z + 1, center = true, $fn = 100);
}
}
module oxberry_control_panel_a () {
difference () {
oxberry_control_panel();
translate([0, PANEL_Y / 2, 0]) cube([PANEL_X + 1, PANEL_Y, 20], center = true);
cube([PANEL_X / 3, 10, 40], center = true);
}
}
module oxberry_control_panel_b () {
difference () {
oxberry_control_panel();
oxberry_control_panel_a();
}
translate([0, 0, PANEL_Z]) cube([PANEL_X - 10, 15, PANEL_Z], center = true);
}
oxberry_control_panel();
//oxberry_control_panel_a();
//oxberry_control_panel_b();