3D-prints/Gridfinity/Rulers/ruler.scad

94 lines
3.4 KiB
OpenSCAD
Raw Permalink Normal View History

2024-01-15 16:13:00 -06:00
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]);
}
}
}