$fn = 64; // --- Parametric Variables --- base_width = 25; // Width of the adhesive mounting base base_length = 15; // Length of the clip (extrusion depth) base_thickness = 2; // Thickness of the flat base cable_diameter = 10; // Inner diameter (optimized for 7-12mm cables) wall_thickness = 2.5; // Thickness of the holding arms opening_width = 7; // Top opening for snap-fitting the cable // --- Calculated Variables --- outer_diameter = cable_diameter + (wall_thickness * 2); center_y = base_thickness + wall_thickness + (cable_diameter / 2) - 1; // --- 3D Model --- // Rotate to lay flat on the build plate (Z=0) rotate([90, 0, 0]) linear_extrude(height = base_length, center = true) { difference() { // Main solid body union() { // Rectangular mounting base translate([-base_width / 2, 0]) square([base_width, base_thickness]); // Smooth sloped transition from base to the clip ring hull() { translate([-(base_width / 2) + 1.5, 0]) square([base_width - 3, base_thickness]); translate([0, center_y]) circle(d = outer_diameter); } } // Inner cutout for the cable translate([0, center_y]) circle(d = cable_diameter); // Flared top opening for easy cable insertion translate([0, center_y]) polygon([ [-opening_width / 2, cable_diameter / 4], [opening_width / 2, cable_diameter / 4], [(opening_width / 2) + 3, outer_diameter], [-(opening_width / 2) - 3, outer_diameter] ]); } }