/* * Kabeljau - Wall mounted cable holder * * Copyright (C) 2023 Matthias Neeracher */ $fn = $preview ? 32 : 64; // Number of slots slots = 4; // [1:1:20] /* [Other Parameters - Tune if Needed] */ // Thickness of Walls thickness = 3.0; // [2.0:0.25:5.0] // Spacing Between Slots spacing = 15.0; // [10.0:1.0:20.0] // Width of Slots width = 4.8; // [3.0:0.1:8.0] // Diameter of Slot Aperture aperture = 6.5; // [0.0:0.1:12.0] // Length of Slots length = 10.0; // [5.0:1.0:30.0] // Height of Slip Barrier barrier = 10.0; // [0.0:1.0:20.0] // Height of Wall Plate wall_height = 20.0; // [10.0:1.0:50.0] // Diameter of Mounting Hole mount_hole = 2.1; // [1.0:0.1:10.0] module round_plate(x, y, z) { r = thickness*0.5; hull() { // left back bottom translate([r, r, r]) sphere(r); // right back bottom translate([x-r, r, r]) sphere(r); // left back top translate([r, y-r, r]) sphere(r); // right back top translate([x-r, y-r, r]) sphere(r); // left front bottom translate([r, r, z-r]) sphere(r); // right front bottom translate([x-r, r, z-r]) sphere(r); // left front top translate([r, y-r, z-r]) sphere(r); // right front top translate([x-r, y-r, z-r]) sphere(r); } } module round_l(x) { round_plate(x, thickness, length+2*thickness); translate([0, 0, length+thickness]) round_plate(x, barrier+thickness, thickness); } module kabeljau() { // Back plate offset=0.5*(wall_height-barrier); difference() { round_plate(slots*spacing, thickness+wall_height, thickness); translate([offset, thickness+wall_height-offset, 0]) cylinder(h=thickness, d=mount_hole); translate([slots*spacing-offset, thickness+wall_height-offset, 0]) cylinder(h=thickness, d=mount_hole); } difference() { union() { round_l(0.5*(spacing-width)); translate([(slots-1)*spacing+0.5*(spacing+width), 0, 0]) round_l(0.5*(spacing-width)); for (slot=[1:1:slots-1]) { translate([(slot-1)*spacing+0.5*(spacing+width), 0, 0]) { round_l(spacing-width); } } } for (slot=[1:1:slots]) { translate([(slot-0.5)*spacing, 0, thickness+0.5*length]) rotate(-90, [1, 0, 0]) cylinder(h=thickness, d=aperture); } } } kabeljau();