diff --git a/light-switches/blank.stl b/light-switches/blank.stl new file mode 100644 index 0000000..107592a Binary files /dev/null and b/light-switches/blank.stl differ diff --git a/light-switches/gfci-paddle-switch-extended-offset.scad b/light-switches/gfci-paddle-switch-extended-offset.scad index 2270c71..593fc1b 100644 --- a/light-switches/gfci-paddle-switch-extended-offset.scad +++ b/light-switches/gfci-paddle-switch-extended-offset.scad @@ -35,12 +35,18 @@ screw_holes_enabled = true; screw_hole_height = 6.0; // mm - vertical dimension (was diameter) screw_hole_width = 14.0; // mm - horizontal dimension (250% of height) screw_hole_spacing = 83.3; // mm - distance between main screw holes +main_screw_recess_depth = 3.5; // mm - depth from back face (Z=5), leaves solid wall on front // Outer screw holes (smaller, beyond the main holes) outer_screw_holes_enabled = true; outer_screw_hole_offset = 6.35; // mm (0.25 inches) beyond main holes outer_screw_hole_diameter = 2.68; // mm (67% of main hole diameter) +// Countersink around outer screw holes (front face) +countersink_enabled = true; +countersink_diameter = 5.0; // mm - total diameter of recess +countersink_depth = 2.0; // mm - depth of recess into front face + /* [Resolution] */ $fn = 64; @@ -100,25 +106,42 @@ module paddle_opening_3d() { module screw_holes() { if (screw_holes_enabled) { + // Main screw holes: recessed from back face (positive Z), solid wall on front + main_screw_start_z = plate_thickness - main_screw_recess_depth; + // Top main screw hole (pill-shaped, horizontal) - translate([0, screw_hole_spacing/2, -0.1]) - linear_extrude(height = plate_thickness + 0.2) + translate([0, screw_hole_spacing/2, main_screw_start_z]) + linear_extrude(height = main_screw_recess_depth + 0.1) rect([screw_hole_width, screw_hole_height], rounding=screw_hole_height/2); // Bottom main screw hole (pill-shaped, horizontal) - translate([0, -screw_hole_spacing/2, -0.1]) - linear_extrude(height = plate_thickness + 0.2) + translate([0, -screw_hole_spacing/2, main_screw_start_z]) + linear_extrude(height = main_screw_recess_depth + 0.1) rect([screw_hole_width, screw_hole_height], rounding=screw_hole_height/2); } if (outer_screw_holes_enabled) { // Top outer screw hole (above top main hole) - translate([0, screw_hole_spacing/2 + outer_screw_hole_offset, -0.1]) - cylinder(h = plate_thickness + 0.2, d = outer_screw_hole_diameter); + translate([0, screw_hole_spacing/2 + outer_screw_hole_offset, 0]) { + // Through-hole + translate([0, 0, -0.1]) + cylinder(h = plate_thickness + 0.2, d = outer_screw_hole_diameter); + // Countersink on front face + if (countersink_enabled) + translate([0, 0, -0.1]) + cylinder(h = countersink_depth + 0.1, d = countersink_diameter); + } // Bottom outer screw hole (below bottom main hole) - translate([0, -screw_hole_spacing/2 - outer_screw_hole_offset, -0.1]) - cylinder(h = plate_thickness + 0.2, d = outer_screw_hole_diameter); + translate([0, -screw_hole_spacing/2 - outer_screw_hole_offset, 0]) { + // Through-hole + translate([0, 0, -0.1]) + cylinder(h = plate_thickness + 0.2, d = outer_screw_hole_diameter); + // Countersink on front face + if (countersink_enabled) + translate([0, 0, -0.1]) + cylinder(h = countersink_depth + 0.1, d = countersink_diameter); + } } } diff --git a/light-switches/gfci-paddle-switch-extended.scad b/light-switches/gfci-paddle-switch-extended.scad index 39dc986..ca397e4 100644 --- a/light-switches/gfci-paddle-switch-extended.scad +++ b/light-switches/gfci-paddle-switch-extended.scad @@ -32,11 +32,17 @@ screw_holes_enabled = true; screw_hole_height = 6.0; // mm - vertical dimension (was diameter) screw_hole_width = 14.0; // mm - horizontal dimension (250% of height) screw_hole_spacing = 83.3; // mm - distance between main screw holes +main_screw_recess_depth = 3.5; // mm - depth from back face (Z=5), leaves solid wall on front // Outer screw holes (smaller, beyond the main holes) outer_screw_holes_enabled = true; outer_screw_hole_offset = 6.35; // mm (0.25 inches) beyond main holes -outer_screw_hole_diameter = 2.68; // mm (67% of main hole diameter) +outer_screw_hole_diameter = 3.175; // mm (67% of main hole diameter) + +// Countersink around outer screw holes (front face) +countersink_enabled = true; +countersink_diameter = 5.0; // mm - total diameter of recess +countersink_depth = 2.0; // mm - depth of recess into front face /* [Resolution] */ $fn = 64; @@ -94,25 +100,42 @@ module paddle_opening_3d() { module screw_holes() { if (screw_holes_enabled) { + // Main screw holes: recessed from back face (positive Z), solid wall on front + main_screw_start_z = plate_thickness - main_screw_recess_depth; + // Top main screw hole (pill-shaped, horizontal) - translate([0, screw_hole_spacing/2, -0.1]) - linear_extrude(height = plate_thickness + 0.2) + translate([0, screw_hole_spacing/2, main_screw_start_z]) + linear_extrude(height = main_screw_recess_depth + 0.1) rect([screw_hole_width, screw_hole_height], rounding=screw_hole_height/2); // Bottom main screw hole (pill-shaped, horizontal) - translate([0, -screw_hole_spacing/2, -0.1]) - linear_extrude(height = plate_thickness + 0.2) + translate([0, -screw_hole_spacing/2, main_screw_start_z]) + linear_extrude(height = main_screw_recess_depth + 0.1) rect([screw_hole_width, screw_hole_height], rounding=screw_hole_height/2); } if (outer_screw_holes_enabled) { // Top outer screw hole (above top main hole) - translate([0, screw_hole_spacing/2 + outer_screw_hole_offset, -0.1]) - cylinder(h = plate_thickness + 0.2, d = outer_screw_hole_diameter); + translate([0, screw_hole_spacing/2 + outer_screw_hole_offset, 0]) { + // Through-hole + translate([0, 0, -0.1]) + cylinder(h = plate_thickness + 0.2, d = outer_screw_hole_diameter); + // Countersink on front face + if (countersink_enabled) + translate([0, 0, -0.1]) + cylinder(h = countersink_depth + 0.1, d = countersink_diameter); + } // Bottom outer screw hole (below bottom main hole) - translate([0, -screw_hole_spacing/2 - outer_screw_hole_offset, -0.1]) - cylinder(h = plate_thickness + 0.2, d = outer_screw_hole_diameter); + translate([0, -screw_hole_spacing/2 - outer_screw_hole_offset, 0]) { + // Through-hole + translate([0, 0, -0.1]) + cylinder(h = plate_thickness + 0.2, d = outer_screw_hole_diameter); + // Countersink on front face + if (countersink_enabled) + translate([0, 0, -0.1]) + cylinder(h = countersink_depth + 0.1, d = countersink_diameter); + } } } diff --git a/light-switches/gfci-paddle-switch-extended.stl b/light-switches/gfci-paddle-switch-extended.stl new file mode 100644 index 0000000..aaed147 Binary files /dev/null and b/light-switches/gfci-paddle-switch-extended.stl differ diff --git a/light-switches/gfci-paddle-switch.stl b/light-switches/gfci-paddle-switch.stl new file mode 100644 index 0000000..af866f3 Binary files /dev/null and b/light-switches/gfci-paddle-switch.stl differ diff --git a/light-switches/outlet.stl b/light-switches/outlet.stl new file mode 100644 index 0000000..55a90c8 Binary files /dev/null and b/light-switches/outlet.stl differ diff --git a/light-switches/switch-switch.stl b/light-switches/switch-switch.stl new file mode 100644 index 0000000..1c61d72 Binary files /dev/null and b/light-switches/switch-switch.stl differ diff --git a/light-switches/switch.stl b/light-switches/switch.stl new file mode 100644 index 0000000..0f5627d Binary files /dev/null and b/light-switches/switch.stl differ