70 lines
1.9 KiB
OpenSCAD
70 lines
1.9 KiB
OpenSCAD
// ============================================
|
|
// Template: L-Bracket with Mounting Holes
|
|
// Description: Adjustable L-bracket for wall/shelf mounting
|
|
// ============================================
|
|
|
|
// --- Parameters ---
|
|
arm_length = 50; // [mm] horizontal arm
|
|
leg_length = 40; // [mm] vertical leg
|
|
width = 25; // [mm] bracket width
|
|
thickness = 4; // [mm] material thickness
|
|
fillet_r = 8; // [mm] inner fillet radius
|
|
|
|
// Mounting holes
|
|
hole_d = 5; // [mm] hole diameter
|
|
hole_inset = 10; // [mm] hole center from edges
|
|
countersink = true; // countersink holes
|
|
cs_d = 9; // [mm] countersink diameter
|
|
cs_depth = 2; // [mm] countersink depth
|
|
|
|
// --- Quality ---
|
|
$fn = 64;
|
|
|
|
// --- Render ---
|
|
bracket();
|
|
|
|
// --- Modules ---
|
|
module bracket() {
|
|
difference() {
|
|
union() {
|
|
// Horizontal arm
|
|
cube([arm_length, width, thickness]);
|
|
|
|
// Vertical leg
|
|
cube([thickness, width, leg_length]);
|
|
|
|
// Inner fillet for strength
|
|
translate([thickness, 0, thickness])
|
|
fillet(fillet_r, width);
|
|
}
|
|
|
|
// Arm mounting holes
|
|
translate([arm_length - hole_inset, width/2, -0.01])
|
|
mounting_hole(hole_d, thickness, countersink, cs_d, cs_depth);
|
|
|
|
// Leg mounting holes
|
|
translate([-0.01, width/2, leg_length - hole_inset])
|
|
rotate([0, 90, 0])
|
|
mounting_hole(hole_d, thickness, countersink, cs_d, cs_depth);
|
|
}
|
|
}
|
|
|
|
module fillet(r, w) {
|
|
difference() {
|
|
cube([r, w, r]);
|
|
translate([r, -0.01, r])
|
|
rotate([-90, 0, 0])
|
|
cylinder(r=r, h=w + 0.02);
|
|
}
|
|
}
|
|
|
|
module mounting_hole(d, h, countersink=false, cs_d=0, cs_depth=0) {
|
|
union() {
|
|
cylinder(d=d, h=h + 0.02);
|
|
if (countersink) {
|
|
translate([0, 0, h - cs_depth + 0.01])
|
|
cylinder(d1=d, d2=cs_d, h=cs_depth);
|
|
}
|
|
}
|
|
}
|