94 lines
3.4 KiB
OpenSCAD
94 lines
3.4 KiB
OpenSCAD
include <../../lib/gridfinity-rebuilt-openscad/gridfinity-rebuilt-utility.scad>
|
|
|
|
// There are 2 variants of the rulers, 2 "small" ones and 2 "large" ones.
|
|
|
|
// bin height. See bin height information and "gridz_define" below.
|
|
gridz = 2;
|
|
// determine what the variable "gridz" applies to based on your use case
|
|
gridz_define = 0; // [0:gridz is the height of bins in units of 7mm increments - Zack's method,1:gridz is the internal height in millimeters, 2:gridz is the overall external height of the bin in millimeters]
|
|
|
|
thicknessSmall = 1.25;
|
|
thicknessLarge = 1.25;
|
|
widthSmall = 21.00;
|
|
widthLarge = 28.00;
|
|
depth = 7 * gridz - 5;
|
|
// The positioning and gaps between the rulers
|
|
gap = 8.4;
|
|
offset = -10;
|
|
// slide the rules slightly along the X axis to make them easier to grab
|
|
xSlide = 3;
|
|
xOffset = -14;
|
|
// Put the rulers at a slight angle so they are easier to grab
|
|
rot = -18;
|
|
|
|
|
|
module __hide_parameters() {};
|
|
|
|
$fn = $preview ? 12 : 24;
|
|
/* [General Settings] */
|
|
// number of bases along x-axis
|
|
gridx = 1;
|
|
// number of bases along y-axis
|
|
gridy = 1;
|
|
|
|
/* [Compartments] */
|
|
// number of X Divisions (set to zero to have solid bin)
|
|
divx = 0;
|
|
// number of y Divisions (set to zero to have solid bin)
|
|
divy = 0;
|
|
|
|
/* [Height] */
|
|
// overrides internal block height of bin (for solid containers). Leave zero for default height. Units: mm
|
|
height_internal = 0;
|
|
// snap gridz height to nearest 7mm increment
|
|
enable_zsnap = false;
|
|
|
|
/* [Features] */
|
|
// the type of tabs
|
|
style_tab = 5; //[0:Full,1:Auto,2:Left,3:Center,4:Right,5:None]
|
|
// how should the top lip act
|
|
style_lip = 0; //[0: Regular lip, 1:remove lip subtractively, 2: remove lip and retain height]
|
|
// scoop weight percentage. 0 disables scoop, 1 is regular scoop. Any real number will scale the scoop.
|
|
scoop = 1; //[0:0.1:1]
|
|
// only cut magnet/screw holes at the corners of the bin to save uneccesary print time
|
|
only_corners = false;
|
|
|
|
/* [Base] */
|
|
style_hole = 3; // [0:no holes, 1:magnet holes only, 2: magnet and screw holes - no printable slit, 3: magnet and screw holes - printable slit, 4: Gridfinity Refined hole - no glue needed]
|
|
// number of divisions per 1 unit of base along the X axis. (default 1, only use integers. 0 means automatically guess the right division)
|
|
div_base_x = 0;
|
|
// number of divisions per 1 unit of base along the Y axis. (default 1, only use integers. 0 means automatically guess the right division)
|
|
div_base_y = 0;
|
|
|
|
|
|
difference() {
|
|
color("tomato") {
|
|
gridfinityInit(gridx, gridy, height(gridz, gridz_define, style_lip, enable_zsnap), height_internal) {
|
|
|
|
if (divx > 0 && divy > 0)
|
|
cutEqual(n_divx = divx, n_divy = divy, style_tab = style_tab, scoop_weight = scoop);
|
|
}
|
|
gridfinityBase(gridx, gridy, l_grid, div_base_x, div_base_y, style_hole, only_corners=only_corners);
|
|
|
|
}
|
|
|
|
for (i = [0:1:3]) {
|
|
thickness = i < 2 ? thicknessSmall : thicknessLarge;
|
|
width = i < 2 ? widthSmall : widthLarge;
|
|
extraXOffset = i < 2 ? 0 : -7;
|
|
taperDepth = 5;
|
|
taperRatio = 1.2;
|
|
taperWidth = width * taperRatio;
|
|
|
|
translate([xOffset + extraXOffset + xSlide * i, gap * i + offset, 5.4])
|
|
rotate([0, 0, rot])
|
|
union() {
|
|
translate([taperWidth / 2.5, thickness / 2, depth - taperDepth])
|
|
linear_extrude(height = taperDepth, scale = [taperRatio, 3])
|
|
// move square a bit to get a taper equal on both sides
|
|
translate([-taperWidth / 2.5, -thickness / 2, 0])
|
|
square(size=[width, thickness]);
|
|
cube([width, thickness, depth]);
|
|
}
|
|
}
|
|
} |