+module sonar_holder_2d(holder_radius,
+ between_sonar_centers,
+ sonar_radius,
+ between_sonar_centers_variation) {
+ difference() {
+ sonar_holder_outline_2d(holder_radius,
+ between_sonar_centers);
+ sonar_holder_holes_2d(sonar_radius,
+ between_sonar_centers,
+ between_sonar_centers_variation); } }
+
+module binder_clip_holder_holes_2d(screw_radius) {
+ circle(screw_radius); }
+
+module binder_clip_holder_outline_2d(holder_radius) {
+ smaller_radius = holder_radius / 4;
+ inside_radius = holder_radius - smaller_radius;
+ offset(r = smaller_radius){
+ square([inside_radius * 2, inside_radius * 2], center=true); } }
+
+module binder_clip_holder_2d(holder_radius,
+ screw_radius) {
+ difference() {
+ binder_clip_holder_outline_2d(holder_radius);
+ binder_clip_holder_holes_2d(screw_radius); } }
+
+module binder_clip_holder(holder_radius,
+ screw_radius,
+ sonar_binder_clip_holder_height) {
+ linear_extrude(height = sonar_binder_clip_holder_height) {
+ binder_clip_holder_2d(holder_radius,
+ screw_radius); } }
+
+module sonar_binder_clip_holder_2d(sonar_radius,
+ between_sonar_centers,
+ between_sonar_centers_variation,
+ screw_radius,
+ wall_thickness) {
+ holder_radius = sonar_radius + wall_thickness;
+ sonar_holder_2d(holder_radius,
+ between_sonar_centers,
+ sonar_radius,
+ between_sonar_centers_variation);
+ arm_length = between_sonar_centers + 2 * holder_radius;
+ difference() {
+ translate([0, -holder_radius]) {
+ square([arm_length, holder_radius * 2]); }
+ sonar_holder_outline_2d(holder_radius, between_sonar_centers);
+ translate([arm_length, 0]) {
+ binder_clip_holder_outline_2d(holder_radius); } }
+ translate([arm_length, 0]) {
+ binder_clip_holder_2d(holder_radius, screw_radius); } }
+