include ; include ; include ; /* * A general-purpose mount for the PD Buddy Sink */ module sink_mount(layer_thickness=0.25*mm, height=8*mm, nut_depth=4*mm, cutout=0.5*mm, bolt_tolerance=0.3*mm, nut_tolerance=0.05*mm) { /* Width of the PD Buddy Sink */ sink_width = 26*mm; difference() { /* Body of the mount */ cube([8*mm, sink_width, height]); /* Bolt hole bottom height. Leave one layer_thickness as a bridge. */ bhbot = nut_depth + layer_thickness; /* Bolt holes */ translate([4*mm, 4*mm, bhbot]) polyhole(d=3*mm + bolt_tolerance, h=height - bhbot + epsilon); translate([4*mm, sink_width-4*mm, bhbot]) polyhole(d=3*mm + bolt_tolerance, h=height - bhbot + epsilon); /* Nut holes */ translate([4*mm, 4*mm, -epsilon]) rotate([0, 0, 30]) cylinder(r=6.4*mm / 2 + nut_tolerance, h=nut_depth + epsilon, $fn=6); translate([4*mm, sink_width - 4*mm, -epsilon]) rotate([0, 0, 30]) cylinder(r=6.4*mm / 2 + nut_tolerance, h=nut_depth + epsilon, $fn=6); /* Small cutout to clear any solder bulges under the USB connector */ translate([-epsilon, 8*mm, height - cutout]) cube([8*mm + 2*epsilon, sink_width - 2*8*mm, cutout + epsilon]); } } /* * A bracket for mounting the PD Buddy Sink on a panel */ module sink_bracket(layer_thickness=0.25*mm, height=8*mm, nut_depth=4*mm, cutout=0.5*mm, bolt_tolerance=0.3*mm, nut_tolerance=0.05*mm) { sink_width = 26*mm; halfend_width = 8*mm; bracket_width = sink_width + 2*halfend_width; mount_distance = 5*mm; difference() { union() { cube([8*mm, halfend_width, height]); translate([0, halfend_width, 0]) sink_mount(layer_thickness=layer_thickness, height=height, nut_depth=nut_depth, cutout=cutout, bolt_tolerance=bolt_tolerance, nut_tolerance=nut_tolerance); translate([0, halfend_width + sink_width, 0]) cube([8*mm, halfend_width, height]); } /* Bolt holes */ translate([-epsilon, mount_distance, height/2]) truncated_teardrop(radius=(3*mm + bolt_tolerance)/2, length=8*mm + 2*epsilon); translate([-epsilon, bracket_width - mount_distance, height/2]) truncated_teardrop(radius=(3*mm + bolt_tolerance)/2, length=8*mm + 2*epsilon); /* Nut holes */ translate([4*mm, mount_distance, height/2]) rotate([0, 90, 0]) rotate([0, 0, 30]) cylinder(r=6.4*mm / 2 + nut_tolerance, h=nut_depth + epsilon, $fn=6); translate([4*mm, bracket_width - mount_distance, height/2]) rotate([0, 90, 0]) rotate([0, 0, 30]) cylinder(r=6.4*mm / 2 + nut_tolerance, h=nut_depth + epsilon, $fn=6); } } sink_bracket(layer_thickness=0.25);