$fn = 64; // --- Parameters --- mount_width = 90; // Total width of the wall mount mount_height = 110; // Total height of the wall plate wall_thickness = 8; // Thickness of the back plate arm_length = 80; // Length of the support arms (fits standard packing tape guns) arm_thickness = 20; // Width of each support arm support_drop = 80; // 45-degree overhang drop for support-free 3D printing lip_height = 15; // Height of the front retaining lip screw_d = 5.5; // Diameter of the screw shaft screw_head_d = 12; // Diameter of the screw head difference() { union() { // Back wall plate cube([mount_width, wall_thickness, mount_height]); // Left Arm translate([0, 0, 0]) arm(); // Right Arm translate([mount_width - arm_thickness, 0, 0]) arm(); } // --- Screw Holes --- // Top screw hole (centered between arms) translate([mount_width / 2, -1, mount_height - 15]) screw_hole(); // Bottom screw hole (centered below arms) translate([mount_width / 2, -1, 15]) screw_hole(); } module arm() { union() { // Main arm with 45-degree triangular support for support-free printing hull() { // Top horizontal section translate([0, 0, mount_height - arm_thickness]) cube([arm_thickness, wall_thickness + arm_length, arm_thickness]); // Wall support base translate([0, 0, mount_height - arm_thickness - support_drop]) cube([arm_thickness, wall_thickness, 0.1]); } // End lip to prevent the dispenser from sliding off translate([0, arm_length, mount_height - arm_thickness]) cube([arm_thickness, wall_thickness, arm_thickness + lip_height - wall_thickness/2]); // Rounded top of the lip translate([0, arm_length + wall_thickness/2, mount_height + lip_height - wall_thickness/2]) rotate([0, 90, 0]) cylinder(d=wall_thickness, h=arm_thickness); } } module screw_hole() { rotate([-90, 0, 0]) { // Shaft clearance cylinder(d=screw_d, h=wall_thickness + 2); // Screw head recess translate([0, 0, wall_thickness - 2]) cylinder(d=screw_head_d, h=5); // Printable chamfer for screw head translate([0, 0, wall_thickness - 2 - (screw_head_d - screw_d)/2]) cylinder(d1=screw_d, d2=screw_head_d, h=(screw_head_d - screw_d)/2 + 0.01); } }