diff --git a/Gridfinity/Rulers/ruler.3mf b/Gridfinity/Rulers/ruler.3mf new file mode 100644 index 0000000..87aa49b --- /dev/null +++ b/Gridfinity/Rulers/ruler.3mf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:69e05141c8988ce47c14eef8fd7040cd5f8aa27c1dafb16be3a9193779f31325 +size 38146 diff --git a/Gridfinity/Rulers/ruler.scad b/Gridfinity/Rulers/ruler.scad new file mode 100644 index 0000000..6cc26d1 --- /dev/null +++ b/Gridfinity/Rulers/ruler.scad @@ -0,0 +1,94 @@ +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]); + } + } +} \ No newline at end of file