Skip to content

Instantly share code, notes, and snippets.

@fadenb
Last active December 7, 2025 16:15
Show Gist options
  • Select an option

  • Save fadenb/a507dc0a2c89bad78fe94c7c3c161348 to your computer and use it in GitHub Desktop.

Select an option

Save fadenb/a507dc0a2c89bad78fe94c7c3c161348 to your computer and use it in GitHub Desktop.
I needed a really simple backstop for the iPad mounting angles I installed on the underside of a desk to ensure it is not pushed in to deep
// Parametric Backstop with Counterbore & Chamfers
// All units in mm
$fn = 25;
// Part Dimensions
stop_thickness = 12; // Y-axis dimension
stop_width = 20; // X-axis dimension
stop_height = 15; // Z-axis dimension (Screw axis)
chamfer_size = 1.0;
// Screw & Tool Dimensions
screw_hole_dia = 2.25;
web_thickness = 3.0; // Solid material thickness for the screw
tool_access_dia = 8.0; // Clearance for screwdriver shaft/bit
module backstop() {
difference() {
// Main Body (Chamfered)
// Z-axis is now defined by stop_height
translate([0, 0, stop_height/2])
chamfer_cube([stop_width, stop_thickness, stop_height], chamfer_size);
// Holes
// 1. The small screw hole (goes all the way through)
cylinder(h=stop_height + 1, d=screw_hole_dia, center=false);
// 2. The tool access channel (counterbore)
translate([0, 0, web_thickness])
cylinder(h=stop_height, d=tool_access_dia, center=false);
}
}
// Module to create a cube with chamfered edges/corners
module chamfer_cube(size, c) {
hull() {
// Plate X-axis
cube([size.x, size.y - 2*c, size.z - 2*c], center=true);
// Plate Y-axis
cube([size.x - 2*c, size.y, size.z - 2*c], center=true);
// Plate Z-axis
cube([size.x - 2*c, size.y - 2*c, size.z], center=true);
}
}
backstop();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment