include include t = 2; t2 = 4; $fn = 36; // connection to the camera cam_out_width = 25; cam_width = 15; cam_hex = "M3"; cam_head_d = 5.5; cam_screw_l = 23.5; cam_hole_d = 4; cam_clearance = 3; // connection between parts conn_clearance = 0.2; conn_cam_distance = 25; conn_wall_distance = 23; conn_screw_d = 6; // wall mount mount_h = 20; mount_screw_d = 5; mount_bror_dist = 17; mount_bror_width = 5; // NOT EDIT: helper functions cam_out_width2 = (cam_out_width - cam_width)/2; h = cam_hole_d + 2*t; // connection to the camera yrot(90) difference() { // body union() { cyl(h=cam_out_width, d=h); cuboid([h,h,cam_out_width], anchor=FWD); } // cutout from the middle cyl(h=cam_width, d=h + cam_clearance); // hole for the screw cyl(h=cam_out_width+t, d=cam_hole_d); // hole for the screw heads: hex and round up(cam_screw_l/2) cyl(d=cam_head_d, h=cam_out_width2, anchor=BOTTOM); down(cam_screw_l/2) nut(spec=cam_hex, thickness=cam_out_width2, anchor=TOP); } // connection between parts back(conn_cam_distance) difference() { // main body union() { cyl(h=h, d=cam_out_width); up(h/2) cuboid([cam_out_width,conn_cam_distance - h,h/2-conn_clearance], anchor=TOP+BACK); down(h/2) cuboid([cam_out_width,conn_wall_distance - t,h/2-conn_clearance], anchor=BOTTOM+FWD); } // slit in the middle cyl(h=conn_clearance, d=cam_out_width*2); // hole for screw cyl(h=h, d=conn_screw_d); } // wall mount back(conn_cam_distance + conn_wall_distance) difference() { union() { // bottom chamfer down(conn_clearance) cuboid([cam_out_width,t2,2*t], anchor=BOTTOM+BACK, rounding=-2*t, edges=BOTTOM+FWD); // wall mount body down(h/2) cuboid([cam_out_width,t2,mount_h+h/2],anchor=BOTTOM+BACK, rounding=cam_out_width/2, edges=[TOP+LEFT, TOP+RIGHT]); } // hole for screw up(mount_h/2 - t) xrot(90) cyl(h=t2, d=mount_screw_d, anchor=BOTTOM, chamfer2=-1); // holes for Ikea BROR mount up(mount_screw_d) left(mount_bror_dist/2) fwd(t2/2) wedge([mount_h,mount_bror_width,mount_bror_width], anchor=TOP+FWD, orient=LEFT); up(mount_screw_d) yrot(180) fwd(t2/2) left(mount_bror_dist/2) wedge([mount_h,mount_bror_width,mount_bror_width], anchor=TOP+FWD, orient=LEFT); }