initial commit
This commit is contained in:
82
backplate_numpad.scad
Normal file
82
backplate_numpad.scad
Normal file
@@ -0,0 +1,82 @@
|
||||
// --- Parameters ---
|
||||
columns = 4;
|
||||
rows = 6;
|
||||
u_size = 19.05;
|
||||
|
||||
switch_outer_width = 14.2;
|
||||
switch_inner_width = 13.2;
|
||||
switch_total_height = 14.2;
|
||||
notch_height = 4.0;
|
||||
|
||||
plate_thickness = 1.5;
|
||||
margin = 5.0;
|
||||
|
||||
// --- Calculated Plate Dimensions ---
|
||||
plate_width = (columns - 1) * u_size + switch_outer_width + (margin * 2);
|
||||
plate_height = (rows - 1) * u_size + switch_total_height + (margin * 2);
|
||||
|
||||
// --- Modules ---
|
||||
module switch_cutout() {
|
||||
union() {
|
||||
cube([switch_inner_width, switch_total_height, plate_thickness + 2], center=true);
|
||||
translate([0, (switch_total_height - (switch_total_height-notch_height)/2)/2, 0])
|
||||
cube([switch_outer_width, (switch_total_height-notch_height)/2, plate_thickness + 2], center=true);
|
||||
translate([0, -(switch_total_height - (switch_total_height-notch_height)/2)/2, 0])
|
||||
cube([switch_outer_width, (switch_total_height-notch_height)/2, plate_thickness + 2], center=true);
|
||||
}
|
||||
}
|
||||
|
||||
module stabilizer_cutout(is_vertical=false) {
|
||||
dist = 23.85; // Standard 2u stabilizer distance
|
||||
union() {
|
||||
switch_cutout();
|
||||
rotate([0, 0, is_vertical ? 90 : 0]) {
|
||||
for(m = [-1, 1]) {
|
||||
translate([m * dist/2, 0, 0]) {
|
||||
cube([3.3, 14.0, plate_thickness + 2], center=true);
|
||||
translate([m * 0.5, 0, 0])
|
||||
cube([4.3, 8.0, plate_thickness + 2], center=true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
module whole_plate() {
|
||||
difference() {
|
||||
cube([plate_width, plate_height, plate_thickness]);
|
||||
|
||||
translate([margin + switch_outer_width/2, margin + switch_total_height/2, plate_thickness/2]) {
|
||||
for (r = [0 : rows - 1]) {
|
||||
for (c = [0 : columns - 1]) {
|
||||
translate([c * u_size, r * u_size, 0]) {
|
||||
|
||||
// 1. COLUMN 3: (Enter, Plus, and 2 1U Keys)
|
||||
if (c == 3) {
|
||||
if (r == 0 || r == 2) {
|
||||
// Bottom 2 2U Vertical keys
|
||||
translate([0, u_size/2, 0]) stabilizer_cutout(true);
|
||||
} else if (r == 4 || r == 5) {
|
||||
// Top 2 1U keys
|
||||
switch_cutout();
|
||||
}
|
||||
}
|
||||
|
||||
// 2. BOTTOM ROW: 2U '0' Key (Cols 0 and 1)
|
||||
else if (r == 0 && (c == 0 || c == 1)) {
|
||||
if (c == 0) translate([u_size/2, 0, 0]) stabilizer_cutout(false);
|
||||
}
|
||||
|
||||
// 3. OTHER 1U KEYS
|
||||
else {
|
||||
switch_cutout();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// --- full render ---
|
||||
whole_plate();
|
||||
Reference in New Issue
Block a user