$fn = 100; w_board = 14; d_board = 12.75; h_board = 3.20; pad = 0.2; pad_top = 0.0; w_pad = w_board + pad; d_pad = d_board + pad; h_pad = h_board + pad; wall = 1; w_wall = w_pad + (wall * 2); d_wall = d_pad + (wall * 2); h_wall = h_pad + (wall * 2); w_usbm = 8.1; h_usbm = 2.4; w_usbm_pad = w_usbm + pad; h_usbm_pad = h_usbm + pad; w_usbf = 8.9; h_usbf = 3.2; w_usbf_pad = w_usbf + pad; h_usbf_pad = h_usbf + pad; r_usb_corner = 1.5; d_corner = 1.5; text_depth = 0.2; e = 0.01; difference() { outer(); translate([wall, wall, wall]) cube([w_pad, d_pad, h_pad + pad_top]); translate([(w_wall - w_usbm_pad) / 2 + r_usb_corner, 0, (h_wall - h_usbf_pad) / 2]) cube([w_usbm_pad - (r_usb_corner * 2), wall + e, h_usbf_pad]); translate([(w_wall - w_usbm_pad) / 2, 0, (h_wall - h_usbf_pad) / 2 + r_usb_corner]) cube([w_usbm_pad, wall + e, h_usbf_pad - r_usb_corner]); translate([(w_wall - w_usbm_pad) / 2 + r_usb_corner, wall + e, (h_wall - h_usbf_pad) / 2 + r_usb_corner]) rotate([90, 0, 0]) cylinder(h=(wall + e), r=r_usb_corner); translate([(w_wall - w_usbm_pad) / 2 + w_usbm_pad - r_usb_corner, wall + e, (h_wall - h_usbf_pad) / 2 + r_usb_corner]) rotate([90, 0, 0]) cylinder(h=(wall + e), r=r_usb_corner); translate([(w_wall - w_usbf_pad) / 2 + r_usb_corner, d_wall - wall - e, (h_wall - h_usbf_pad) / 2]) cube([w_usbf_pad - (r_usb_corner * 2), wall + e, h_usbf_pad]); translate([(w_wall - w_usbf_pad) / 2, d_wall - wall - e, (h_wall - h_usbf_pad) / 2 + r_usb_corner]) cube([w_usbf_pad, wall + e, h_usbf_pad - r_usb_corner]); translate([(w_wall - w_usbf_pad) / 2 + r_usb_corner, d_wall, (h_wall - h_usbf_pad) / 2 + r_usb_corner]) rotate([90, 0, 0]) cylinder(h=(wall + e), r=r_usb_corner); translate([(w_wall - w_usbf_pad) / 2 + w_usbf_pad - r_usb_corner, d_wall, (h_wall - h_usbf_pad) / 2 + r_usb_corner]) rotate([90, 0, 0]) cylinder(h=(wall + e), r=r_usb_corner); translate([1.5, 11.5, 0]) linear_extrude(height=text_depth) mirror([0, 1, 0]) text(text="RF", size=8, font="JetBrains Mono"); translate([1.5, 3.5, h_wall - text_depth]) linear_extrude(height=text_depth) text(text="RF", size=8, font="JetBrains Mono"); } module outer() { hull() { for (x = [0, w_wall - d_corner]) { for (y = [0, d_wall - d_corner]) { for (z = [0, h_wall + pad_top - d_corner]) { translate([x, y, z]) translate([d_corner / 2, d_corner / 2, d_corner / 2]) sphere(d=d_corner); } } } } }