$fn=64; // --- Parameters --- base_length = 20; base_width = 12; base_thickness = 2; cable_diameter = 6; // Optimized for 4-7mm cables wall_thickness = 2.5; opening_width = 4.5; // Narrower than cable for snap-fit // --- Model --- // Rotate to sit flat on the XY build plate rotate([90, 0, 0]) linear_extrude(height = base_width, center = true) { difference() { union() { // Flat mounting base translate([0, base_thickness / 2]) square([base_length, base_thickness], center = true); // Main curved grip body translate([0, base_thickness + cable_diameter / 2 - 0.5]) circle(r = cable_diameter / 2 + wall_thickness); } // Cable channel cutout translate([0, base_thickness + cable_diameter / 2 - 0.5]) circle(r = cable_diameter / 2); // Top opening and insertion flare for easy cable snap-in translate([0, base_thickness + cable_diameter / 2 - 0.5]) polygon([ [-opening_width / 2, 1.5], [opening_width / 2, 1.5], [opening_width / 2, cable_diameter / 2 + 0.5], [opening_width / 2 + 2.5, cable_diameter / 2 + wall_thickness + 1], [-opening_width / 2 - 2.5, cable_diameter / 2 + wall_thickness + 1], [-opening_width / 2, cable_diameter / 2 + 0.5] ]); // Trim the bottom perfectly flat to ensure optimal bed adhesion translate([0, -5]) square([base_length + 10, 10], center = true); } }