70 lines
2.4 KiB
OpenSCAD
70 lines
2.4 KiB
OpenSCAD
// --------------------------------------------------------------------
|
|
// 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 <BOSL2/std.scad>
|
|
|
|
include <static.scad>
|
|
|
|
// --------------------------------------------------------------------
|
|
// 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); |