// -------------------------------------------------------------------- // Build a plate with holesfor using it with the frames // -------------------------------------------------------------------- /* [Connector Options] */ // The width of the plate Plate_width = 240; // The deepth of the plate Plate_deepth = 210; // The height of the plate Plate_height = 3; // The diameter of the holes Hole_diameter = 10; // Use corner cutouts? Corner_cutouts = false; /* [Hidden] */ include include // -------------------------------------------------------------------- // A baseplate with holes and, if appliceable, cut outs at the corners // -------------------------------------------------------------------- module baseplate(width, deepth, height, diameter, corners) { platesize = [deepth, width, height]; difference () { cube(platesize, center = true); holes(platesize, diameter, corners); if (corners) corners(CONNECTOR_LENGTH, width, deepth); } } // -------------------------------------------------------------------- // Holes in the baseplate // Uses the convinient BOSL2 library for putting the holes on the plate // -------------------------------------------------------------------- module holes(ps = [0,0,0], dm = 20, c = false) { fact = 5 - floor(sqrt(dm)); translate([0,0,-ps[2]]) grid_copies(n = [11 * fact, 8 * fact], size = [ps[0] - (c ? 15 : 0) - dm * (fact+1), ps[1] - (c ? 15 : 0) - dm * (fact+1)], stagger = true) cylinder(d = dm, h = 2*ps[2]); } // -------------------------------------------------------------------- // Corner cutouts for the frame // Required only if the frame doesn't have the attachments to put the // baseplate on it. In that case the plate lies directly on the frame's // struts and the corners need to be cut out to place the plate. // -------------------------------------------------------------------- module corners(size, width, deepth) { x = (deepth - size) / 2; y = (width - size) / 2; translate([x, y, 0]) cube(size, center = true); translate([-x, y, 0]) cube(size, center = true); translate([-x, -y, 0]) cube(size, center = true); translate([x, -y, 0]) cube(size, center = true); } // do it! baseplate(width=Plate_width, deepth=Plate_deepth, height=Plate_height, diameter=Hole_diameter, corners = Corner_cutouts);