gridfinity-rebuilt-openscad.../search/search_index.json

1 line
No EOL
51 KiB
JSON
Executable file

{"config":{"indexing":"full","lang":["en"],"min_search_length":3,"prebuild_index":false,"separator":"[\\s\\-]+"},"docs":[{"location":"","text":"Introduction Gridfinity rebuilt aims to remake the brilliant Gridfinity project from Zack Freedman in a more robust and open-source way than the original Fusion 360 files. Many major CAD suites struggle with making parametric models constructed from linear patterns, due to changing fillet edges and seams. Thus, a pure mathematical approach using OpenSCAD can allow a single solution for all possible bin variants. The project has expanded into more eccentric models that use modules from the original generator. This wiki aims to document these modules in great detail. Models are generated subtractively. First, the solid bin and bases are constructed, and then the compartments and holes are removed. This allows for internal fillets that nearly match the originals. However, they are not exactly perfect. There are some fillets that are too small and too difficult to be worth implementing, as most printers do not have a high enough resolution for it to matter. Getting Started For best results, use a version of OpenSCAD with the fast-csg feature. As of writing, this feature is only implemented in the development snapshots . To enable the feature, go to Edit > Preferences > Features > fast-csg. This can speed up rendering from 10 minutes down to a couple of seconds, even for comically large bins. It is not a requirement to use development versions of OpenSCAD. Most files will come ready-to-run, so parameters can be changed using OpenSCAD's built-in customizer window, and the bins will automatically generate. However, all modules are packed up nicely, so any module can be imported into other files or have more custom modifications beyond tweaking the parameters. Script Structure Information (Imports / Script Details) Parameters (Shown in Customizer) Implementation (Executing the Parameters) Construction (Script-Specific Modules and Constants) Examples The two files which do not follow these conventions are gridfinity-rebuilt-utility and gridfinity-rebuilt-constants . These files are not meant to be exposed to the user, except for special requirements that the normal parameters cannot handle. Their respective wiki pages go into more depth. NOTE: This documentation is a work in progress, just like the rest of the repository, so parts may still be under construction.","title":"Home"},{"location":"#introduction","text":"Gridfinity rebuilt aims to remake the brilliant Gridfinity project from Zack Freedman in a more robust and open-source way than the original Fusion 360 files. Many major CAD suites struggle with making parametric models constructed from linear patterns, due to changing fillet edges and seams. Thus, a pure mathematical approach using OpenSCAD can allow a single solution for all possible bin variants. The project has expanded into more eccentric models that use modules from the original generator. This wiki aims to document these modules in great detail. Models are generated subtractively. First, the solid bin and bases are constructed, and then the compartments and holes are removed. This allows for internal fillets that nearly match the originals. However, they are not exactly perfect. There are some fillets that are too small and too difficult to be worth implementing, as most printers do not have a high enough resolution for it to matter.","title":"Introduction"},{"location":"#getting-started","text":"For best results, use a version of OpenSCAD with the fast-csg feature. As of writing, this feature is only implemented in the development snapshots . To enable the feature, go to Edit > Preferences > Features > fast-csg. This can speed up rendering from 10 minutes down to a couple of seconds, even for comically large bins. It is not a requirement to use development versions of OpenSCAD. Most files will come ready-to-run, so parameters can be changed using OpenSCAD's built-in customizer window, and the bins will automatically generate. However, all modules are packed up nicely, so any module can be imported into other files or have more custom modifications beyond tweaking the parameters.","title":"Getting Started"},{"location":"#script-structure","text":"Information (Imports / Script Details) Parameters (Shown in Customizer) Implementation (Executing the Parameters) Construction (Script-Specific Modules and Constants) Examples The two files which do not follow these conventions are gridfinity-rebuilt-utility and gridfinity-rebuilt-constants . These files are not meant to be exposed to the user, except for special requirements that the normal parameters cannot handle. Their respective wiki pages go into more depth. NOTE: This documentation is a work in progress, just like the rest of the repository, so parts may still be under construction.","title":"Script Structure"},{"location":"baseplates/","text":"gridfinity-rebuilt-baseplate To round out the rebuilt catalog, we have baseplates. Originally, baseplates were not included as there was not anything really interesting to parameterize, unlike with bins. However, upon closer inspection, there is a couple things that would make peoples' lives easier. For instance, what is called here the \"skeletonized\" style, in that the baseplate is still thick to allow for magnets, but the center portion is removed. Additionally, being able to generate spacers for the sides of the bases, so that they fit perfectly inside your drawers. Script Parameters Parameter Range Description gridx { n>=0 | n\u2208R } number of bases along the x-axis If set to zero, will fill with as many bases that fit within distancex gridy { n>=0 | n\u2208R } number of bases along the y-axis If set to zero, will fill with as many bases that fit within distancey length { n>0 | n\u2208R } length of one unit of the base. default: 42 (The Answer to the Ultimate Question of Life, the Universe, and Everything.) distancex { n>0 | n\u2208R } minimum length of baseplate along x alternatively, how large is the drawer along x (leave zero to ignore) distancey { n>0 | n\u2208R } minimum length of baseplate along y alternatively, how large is the drawer along y (leave zero to ignore) style_plate { 0, 1, 2 } the style of baseplate \u2022 (0) thin (minimum material, only outline) \u2022 (1) weighted (thick with space for tire iron) \u2022 (2) skeletonized (thick, center hollowed) enable_magnet boolean toggle hole for magnet on top style_hole { 0, 1, 2 } the style of holes underneath the baseplate, if applicable \u2022 (0) none \u2022 (1) countersink \u2022 (2) counterbore Modules gridfinityBaseplate Generates a baseplate to use with gridfinity bins. gridfinityBaseplate(gridx, gridy, length, distancex, distancey, style_plate, enable_magnet, style_hole) Parameter Range Description gridx { n>=0 | n\u2208R } number of bases along the x-axis If set to zero, will fill with as many bases that fit within distancex gridy { n>=0 | n\u2208R } number of bases along the y-axis If set to zero, will fill with as many bases that fit within distancey length { n>0 | n\u2208R } length of one unit of the base. default: 42 (The Answer to the Ultimate Question of Life, the Universe, and Everything.) distancex { n>0 | n\u2208R } minimum length of baseplate along x alternatively, how large is the drawer along x (leave zero to ignore) distancey { n>0 | n\u2208R } minimum length of baseplate along y alternatively, how large is the drawer along y (leave zero to ignore) style_plate { 0, 1, 2 } the style of baseplate \u2022 (0) thin (minimum material, only outline) \u2022 (1) weighted (thick with space for tire iron) \u2022 (2) skeletonized (thick, center hollowed) enable_magnet boolean toggle hole for magnet on top style_hole { 0, 1, 2 } the style of holes underneath the baseplate, if applicable \u2022 (0) none \u2022 (1) countersink \u2022 (2) counterbore","title":"Baseplates"},{"location":"baseplates/#gridfinity-rebuilt-baseplate","text":"To round out the rebuilt catalog, we have baseplates. Originally, baseplates were not included as there was not anything really interesting to parameterize, unlike with bins. However, upon closer inspection, there is a couple things that would make peoples' lives easier. For instance, what is called here the \"skeletonized\" style, in that the baseplate is still thick to allow for magnets, but the center portion is removed. Additionally, being able to generate spacers for the sides of the bases, so that they fit perfectly inside your drawers.","title":"gridfinity-rebuilt-baseplate"},{"location":"baseplates/#script-parameters","text":"Parameter Range Description gridx { n>=0 | n\u2208R } number of bases along the x-axis If set to zero, will fill with as many bases that fit within distancex gridy { n>=0 | n\u2208R } number of bases along the y-axis If set to zero, will fill with as many bases that fit within distancey length { n>0 | n\u2208R } length of one unit of the base. default: 42 (The Answer to the Ultimate Question of Life, the Universe, and Everything.) distancex { n>0 | n\u2208R } minimum length of baseplate along x alternatively, how large is the drawer along x (leave zero to ignore) distancey { n>0 | n\u2208R } minimum length of baseplate along y alternatively, how large is the drawer along y (leave zero to ignore) style_plate { 0, 1, 2 } the style of baseplate \u2022 (0) thin (minimum material, only outline) \u2022 (1) weighted (thick with space for tire iron) \u2022 (2) skeletonized (thick, center hollowed) enable_magnet boolean toggle hole for magnet on top style_hole { 0, 1, 2 } the style of holes underneath the baseplate, if applicable \u2022 (0) none \u2022 (1) countersink \u2022 (2) counterbore","title":"Script Parameters"},{"location":"baseplates/#modules","text":"","title":"Modules"},{"location":"baseplates/#gridfinitybaseplate","text":"Generates a baseplate to use with gridfinity bins. gridfinityBaseplate(gridx, gridy, length, distancex, distancey, style_plate, enable_magnet, style_hole) Parameter Range Description gridx { n>=0 | n\u2208R } number of bases along the x-axis If set to zero, will fill with as many bases that fit within distancex gridy { n>=0 | n\u2208R } number of bases along the y-axis If set to zero, will fill with as many bases that fit within distancey length { n>0 | n\u2208R } length of one unit of the base. default: 42 (The Answer to the Ultimate Question of Life, the Universe, and Everything.) distancex { n>0 | n\u2208R } minimum length of baseplate along x alternatively, how large is the drawer along x (leave zero to ignore) distancey { n>0 | n\u2208R } minimum length of baseplate along y alternatively, how large is the drawer along y (leave zero to ignore) style_plate { 0, 1, 2 } the style of baseplate \u2022 (0) thin (minimum material, only outline) \u2022 (1) weighted (thick with space for tire iron) \u2022 (2) skeletonized (thick, center hollowed) enable_magnet boolean toggle hole for magnet on top style_hole { 0, 1, 2 } the style of holes underneath the baseplate, if applicable \u2022 (0) none \u2022 (1) countersink \u2022 (2) counterbore","title":"gridfinityBaseplate"},{"location":"bins/","text":"gridfinity-rebuilt-bins Generates stock bins, with a great number of variations. Script Parameters Parameter Range Description gridx { n>0 | n\u2208R } number of bases along the x-axis gridy { n>0 | n\u2208R } number of bases along the y-axis gridz { n>0 | n\u2208R } bin height. See bin height information and \"gridz_define\" below. length { n>0 | n\u2208R } length of one unit of the base. default: 42 (The Answer to the Ultimate Question of Life, the Universe, and Everything.) divx { n>0 | n\u2208Z } number of compartments along X divy { n>0 | n\u2208Z } number of compartments along Y enable_scoop boolean toggles the fillet on bottom edge for easy removal of items enable_zsnap boolean automatically snap the bin size to the nearest 7mm increment. default: true style_lip {0, 1, 2} if you are not stacking the bin, you can disable the top lip to save space. \u2022 (0) Regular lip \u2022 (1) Subtract lip to save space \u2022 (2) Disable lip while retaining height gridz_define { n>0 | n\u2208R } determine what the variable \"gridz\" applies to based on your use case. default: 0. \u2022 (0) gridz is the height in # of 7mm increments (Zack) \u2022 (1) gridz is the internal height in millimeters \u2022 (2) gridz is the overall external height of the bin in millimeters height_internal { n>0 | n\u2208R } height of the internal block. Can be lower than bin height to save filament on custom bins. default of 0 means use the calculated height. style_tab { 0, 1, 2, 3, 4, 5 } how the tabs for labels are generated. \u2022 (0) Full tabs across the entire compartment \u2022 (1) automatic tabs - left aligned tabs on the left edge - right aligned tabs on right edge - center tabs otherwise \u2022 (2) left aligned tabs \u2022 (3) center aligned tabs \u2022 (4) right aligned tabs \u2022 (5) no tabs style_hole { 0, 1, 2, 3 } the style of holes in the bases \u2022 (0) No holes \u2022 (1) Magnet holes only \u2022 (2) Magnet and screw holes - no printable slit \u2022 (3) Magnet and screw holes - with printable slit div_base_x { n>=0 | n\u2208Z } number of divisions per 1 unit of base along the X axis. (default 1, only use integers. 0 means automatically guess the division) div_base_y { n>=0 | n\u2208Z } number of divisions per 1 unit of base along the Y axis. (default 1, only use integers. 0 means automatically guess the division) Modules gridfinityInit Initializes the top part of the bin (walls and solid section). All bins have to use this module, and have the compartments cut out from it. gridfinityInit (gridx, gridy, height, height_internal, length) Parameter Range Description gridx { n>0 | n\u2208R } number of bases along the x-axis gridy { n>0 | n\u2208R } number of bases along the y-axis height { n>0 | n\u2208R } height of the bin, in millimeters (but not exactly). See the height() function for more info. height_internal { n>0 | n\u2208R } height of the internal block. Can be lower than bin height to save filament on custom bins. default of 0 means use the calculated height. length { n>0 | n\u2208R } length of one unit of the base. default: 42 (The Answer to the Ultimate Question of Life, the Universe, and Everything.) // Example: generate a 3x3x6 bin with a 42mm unit size gridfinityInit(3, 3, height(6), 0, 42) { cutEqual(n_divx = 3, n_divy = 3, style_tab = 0, enable_scoop = true); } height Calculates the proper height for bins. height (gridz, gridz_define, style_lip, enable_zsnap) Parameter Range Description gridz { n>0 | n\u2208R } bin height. See bin height information and \"gridz_define\" below. gridz_define { n>0 | n\u2208R } determine what the variable \"gridz\" applies to based on your use case. default: 0. \u2022 (0) gridz is the height in # of 7mm increments (Zack) \u2022 (1) gridz is the internal height in millimeters \u2022 (2) gridz is the overall external height of the bin in millimeters style_lip {0, 1, 2} if you are not stacking the bin, you can disable the top lip to save space. \u2022 (0) Regular lip \u2022 (1) Subtract lip to save space \u2022 (2) Disable lip while retaining height enable_zsnap boolean automatically snap the bin size to the nearest 7mm increment. default: true // Example: height for a 6 unit high bin height(6); // Example: height for a bin that can fit (at maximum) a 30mm high object inside height(30, 1, 0, false); gridfinityBase Generates the bases for bins. Has various different hole styles, and can be subdivided. gridfinityBase (gridx, gridy, length, div_base_x, div_base_y, style_hole) Parameter Range Description gridx { n>0 | n\u2208R } number of bases along the x-axis gridy { n>0 | n\u2208R } number of bases along the y-axis length { n>0 | n\u2208R } length of one unit of the base. default: 42 div_base_x { n>=0 | n\u2208Z } number of divisions per 1 unit of base along the X axis. (default 1, only use integers. 0 means automatically guess the division) div_base_y { n>=0 | n\u2208Z } number of divisions per 1 unit of base along the Y axis. (default 1, only use integers. 0 means automatically guess the division) style_hole { 0, 1, 2, 3 } the style of holes in the bases \u2022 (0) No holes \u2022 (1) Magnet holes only \u2022 (2) Magnet and screw holes - no printable slit \u2022 (3) Magnet and screw holes - with printable slit // Example: generate a 3x3 base with a 42mm unit size and clean magnet holes gridfinityBase(3, 3, 42, 0, 0, 1); cutEqual Generates the \"traditional\" bin cutters. It is a utility function that creates evenly distributed compartments. cutEqual (n_divx, n_divy, style_tab, enable_scoop) Parameter Range Description n_divx { n>0 | n\u2208Z } number of compartments along X n_divy { n>0 | n\u2208Z } number of compartments along Y style_tab { 0, 1, 2, 3, 4, 5 } how the tabs for labels are generated. \u2022 (0) Full tabs across the entire compartment \u2022 (1) automatic tabs - left aligned tabs on the left edge - right aligned tabs on right edge - center tabs otherwise \u2022 (2) left aligned tabs \u2022 (3) center aligned tabs \u2022 (4) right aligned tabs \u2022 (5) no tabs enable_scoop boolean toggles the fillet on bottom edge for easy removal of items // Example: this generates 9 compartments in a 3x3 grid, and all compartments have a full tab and a scoop gridfinityInit(3, 3, height(6), 0, 42) { cutEqual(n_divx = 3, n_divy = 3, style_tab = 0, enable_scoop = true); } cut Cuts a single compartment into the bin at the provided location with the provided attributes. The coordinate system for compartments originates (0,0) at the bottom left corner of the bin, where 1 unit is the length of 1 base. Positive X and positive Y are in the same direction as the global coordinate system. cut (x, y, w, h, t, s) Parameter Range Description x { n>=0 | n\u2208R } X coordinate of the compartment (position of left edge of compartment) y { n>=0 | n\u2208R } Y coordinate of the compartment (position of bottom edge of compartment) w { n>0 | n\u2208R } Width of the compartment, in base units (1 unit = 1 length ) h { n>0 | n\u2208R } Height of the compartment, in base units (1 unit = 1 length ) style_tab { 0, 1, 2, 3, 4, 5 } how the tabs for labels are generated for this compartment. \u2022 (0) Full tabs across the entire compartment \u2022 (1) automatic tabs - left aligned tabs on the left edge - right aligned tabs on right edge - center tabs otherwise \u2022 (2) left aligned tabs \u2022 (3) center aligned tabs \u2022 (4) right aligned tabs \u2022 (5) no tabs s boolean toggles the fillet on bottom edge for easy removal of items, only for this specific compartment // Example: // this cuts two compartments that are both 1 wide and 2 high. // One is on the bottom left, and the other is at the top right. gridfinityInit(3, 3, height(6), 0, 42) { cut(0, 0, 1, 2, 0, true); cut(2, 1, 1, 2, 0, true); } cut_move Moves all of its children from the global origin to the center of the area that a compartment would normally fill, and uses them to cut from the bin. This allows you to easily make custom cutouts in the bin. cut_move (x, y, w, h) Parameter Range Description x { n>=0 | n\u2208R } X coordinate of the area (position of left edge) y { n>=0 | n\u2208R } Y coordinate of the area (position of bottom edge) w { n>0 | n\u2208R } Width of the area, in base units (1 unit = 1 length ) h { n>0 | n\u2208R } Height of the area, in base units (1 unit = 1 length ) // Example: // cuts a cylindrical hole of radius 5 // hole center is located 1/2 units from the right edge of the bin, and 1 unit from the top gridfinityInit(3, 3, height(6), 0, 42) { cut_move(x=2, y=1, w=1, h=2) { cylinder(r=5, h=100, center=true); } }","title":"Bins"},{"location":"bins/#gridfinity-rebuilt-bins","text":"Generates stock bins, with a great number of variations.","title":"gridfinity-rebuilt-bins"},{"location":"bins/#script-parameters","text":"Parameter Range Description gridx { n>0 | n\u2208R } number of bases along the x-axis gridy { n>0 | n\u2208R } number of bases along the y-axis gridz { n>0 | n\u2208R } bin height. See bin height information and \"gridz_define\" below. length { n>0 | n\u2208R } length of one unit of the base. default: 42 (The Answer to the Ultimate Question of Life, the Universe, and Everything.) divx { n>0 | n\u2208Z } number of compartments along X divy { n>0 | n\u2208Z } number of compartments along Y enable_scoop boolean toggles the fillet on bottom edge for easy removal of items enable_zsnap boolean automatically snap the bin size to the nearest 7mm increment. default: true style_lip {0, 1, 2} if you are not stacking the bin, you can disable the top lip to save space. \u2022 (0) Regular lip \u2022 (1) Subtract lip to save space \u2022 (2) Disable lip while retaining height gridz_define { n>0 | n\u2208R } determine what the variable \"gridz\" applies to based on your use case. default: 0. \u2022 (0) gridz is the height in # of 7mm increments (Zack) \u2022 (1) gridz is the internal height in millimeters \u2022 (2) gridz is the overall external height of the bin in millimeters height_internal { n>0 | n\u2208R } height of the internal block. Can be lower than bin height to save filament on custom bins. default of 0 means use the calculated height. style_tab { 0, 1, 2, 3, 4, 5 } how the tabs for labels are generated. \u2022 (0) Full tabs across the entire compartment \u2022 (1) automatic tabs - left aligned tabs on the left edge - right aligned tabs on right edge - center tabs otherwise \u2022 (2) left aligned tabs \u2022 (3) center aligned tabs \u2022 (4) right aligned tabs \u2022 (5) no tabs style_hole { 0, 1, 2, 3 } the style of holes in the bases \u2022 (0) No holes \u2022 (1) Magnet holes only \u2022 (2) Magnet and screw holes - no printable slit \u2022 (3) Magnet and screw holes - with printable slit div_base_x { n>=0 | n\u2208Z } number of divisions per 1 unit of base along the X axis. (default 1, only use integers. 0 means automatically guess the division) div_base_y { n>=0 | n\u2208Z } number of divisions per 1 unit of base along the Y axis. (default 1, only use integers. 0 means automatically guess the division)","title":"Script Parameters"},{"location":"bins/#modules","text":"","title":"Modules"},{"location":"bins/#gridfinityinit","text":"Initializes the top part of the bin (walls and solid section). All bins have to use this module, and have the compartments cut out from it. gridfinityInit (gridx, gridy, height, height_internal, length) Parameter Range Description gridx { n>0 | n\u2208R } number of bases along the x-axis gridy { n>0 | n\u2208R } number of bases along the y-axis height { n>0 | n\u2208R } height of the bin, in millimeters (but not exactly). See the height() function for more info. height_internal { n>0 | n\u2208R } height of the internal block. Can be lower than bin height to save filament on custom bins. default of 0 means use the calculated height. length { n>0 | n\u2208R } length of one unit of the base. default: 42 (The Answer to the Ultimate Question of Life, the Universe, and Everything.) // Example: generate a 3x3x6 bin with a 42mm unit size gridfinityInit(3, 3, height(6), 0, 42) { cutEqual(n_divx = 3, n_divy = 3, style_tab = 0, enable_scoop = true); }","title":"gridfinityInit"},{"location":"bins/#height","text":"Calculates the proper height for bins. height (gridz, gridz_define, style_lip, enable_zsnap) Parameter Range Description gridz { n>0 | n\u2208R } bin height. See bin height information and \"gridz_define\" below. gridz_define { n>0 | n\u2208R } determine what the variable \"gridz\" applies to based on your use case. default: 0. \u2022 (0) gridz is the height in # of 7mm increments (Zack) \u2022 (1) gridz is the internal height in millimeters \u2022 (2) gridz is the overall external height of the bin in millimeters style_lip {0, 1, 2} if you are not stacking the bin, you can disable the top lip to save space. \u2022 (0) Regular lip \u2022 (1) Subtract lip to save space \u2022 (2) Disable lip while retaining height enable_zsnap boolean automatically snap the bin size to the nearest 7mm increment. default: true // Example: height for a 6 unit high bin height(6); // Example: height for a bin that can fit (at maximum) a 30mm high object inside height(30, 1, 0, false);","title":"height"},{"location":"bins/#gridfinitybase","text":"Generates the bases for bins. Has various different hole styles, and can be subdivided. gridfinityBase (gridx, gridy, length, div_base_x, div_base_y, style_hole) Parameter Range Description gridx { n>0 | n\u2208R } number of bases along the x-axis gridy { n>0 | n\u2208R } number of bases along the y-axis length { n>0 | n\u2208R } length of one unit of the base. default: 42 div_base_x { n>=0 | n\u2208Z } number of divisions per 1 unit of base along the X axis. (default 1, only use integers. 0 means automatically guess the division) div_base_y { n>=0 | n\u2208Z } number of divisions per 1 unit of base along the Y axis. (default 1, only use integers. 0 means automatically guess the division) style_hole { 0, 1, 2, 3 } the style of holes in the bases \u2022 (0) No holes \u2022 (1) Magnet holes only \u2022 (2) Magnet and screw holes - no printable slit \u2022 (3) Magnet and screw holes - with printable slit // Example: generate a 3x3 base with a 42mm unit size and clean magnet holes gridfinityBase(3, 3, 42, 0, 0, 1);","title":"gridfinityBase"},{"location":"bins/#cutequal","text":"Generates the \"traditional\" bin cutters. It is a utility function that creates evenly distributed compartments. cutEqual (n_divx, n_divy, style_tab, enable_scoop) Parameter Range Description n_divx { n>0 | n\u2208Z } number of compartments along X n_divy { n>0 | n\u2208Z } number of compartments along Y style_tab { 0, 1, 2, 3, 4, 5 } how the tabs for labels are generated. \u2022 (0) Full tabs across the entire compartment \u2022 (1) automatic tabs - left aligned tabs on the left edge - right aligned tabs on right edge - center tabs otherwise \u2022 (2) left aligned tabs \u2022 (3) center aligned tabs \u2022 (4) right aligned tabs \u2022 (5) no tabs enable_scoop boolean toggles the fillet on bottom edge for easy removal of items // Example: this generates 9 compartments in a 3x3 grid, and all compartments have a full tab and a scoop gridfinityInit(3, 3, height(6), 0, 42) { cutEqual(n_divx = 3, n_divy = 3, style_tab = 0, enable_scoop = true); }","title":"cutEqual"},{"location":"bins/#cut","text":"Cuts a single compartment into the bin at the provided location with the provided attributes. The coordinate system for compartments originates (0,0) at the bottom left corner of the bin, where 1 unit is the length of 1 base. Positive X and positive Y are in the same direction as the global coordinate system. cut (x, y, w, h, t, s) Parameter Range Description x { n>=0 | n\u2208R } X coordinate of the compartment (position of left edge of compartment) y { n>=0 | n\u2208R } Y coordinate of the compartment (position of bottom edge of compartment) w { n>0 | n\u2208R } Width of the compartment, in base units (1 unit = 1 length ) h { n>0 | n\u2208R } Height of the compartment, in base units (1 unit = 1 length ) style_tab { 0, 1, 2, 3, 4, 5 } how the tabs for labels are generated for this compartment. \u2022 (0) Full tabs across the entire compartment \u2022 (1) automatic tabs - left aligned tabs on the left edge - right aligned tabs on right edge - center tabs otherwise \u2022 (2) left aligned tabs \u2022 (3) center aligned tabs \u2022 (4) right aligned tabs \u2022 (5) no tabs s boolean toggles the fillet on bottom edge for easy removal of items, only for this specific compartment // Example: // this cuts two compartments that are both 1 wide and 2 high. // One is on the bottom left, and the other is at the top right. gridfinityInit(3, 3, height(6), 0, 42) { cut(0, 0, 1, 2, 0, true); cut(2, 1, 1, 2, 0, true); }","title":"cut"},{"location":"bins/#cut_move","text":"Moves all of its children from the global origin to the center of the area that a compartment would normally fill, and uses them to cut from the bin. This allows you to easily make custom cutouts in the bin. cut_move (x, y, w, h) Parameter Range Description x { n>=0 | n\u2208R } X coordinate of the area (position of left edge) y { n>=0 | n\u2208R } Y coordinate of the area (position of bottom edge) w { n>0 | n\u2208R } Width of the area, in base units (1 unit = 1 length ) h { n>0 | n\u2208R } Height of the area, in base units (1 unit = 1 length ) // Example: // cuts a cylindrical hole of radius 5 // hole center is located 1/2 units from the right edge of the bin, and 1 unit from the top gridfinityInit(3, 3, height(6), 0, 42) { cut_move(x=2, y=1, w=1, h=2) { cylinder(r=5, h=100, center=true); } }","title":"cut_move"},{"location":"constants/","text":"gridfinity-rebuilt-constants This file contains dimensions that are critical to the constructiuon of the other models, but are not values that often need to be changed. Thus, they were outsourced to this file such that the rest of the files would retain parity. All values here have the same range, this is positive real numbers. Some can be zero, but that may result in strange or invalid geometry, Parameter Description h_base height of the base r_base outside rounded radius of bin r_c1 lower base chamfer \"radius\" r_c2 upper base chamfer \"radius\" h_bot bottom thiccness of bin r_fo1 outside radii 1 r_fo2 outside radii 2 r_fo3 outside radii 3 r_hole1 screw hole radius r_hole2 magnet hole radius d_hole center-to-center distance between holes h_hole magnet hole depth h_slit slit depth (printer layer height) r_f1 top edge fillet radius r_f2 internal fillet radius d_div width of divider between compartments d_wall minimum wall thickness d_clear tolerance fit factor d_tabh height of tab (yaxis, measured from inner wall) d_tabw maximum width of tab a_tab angle of tab bp_h_bot Baseplate bottom part height (part added with weigthed=true) bp_cut_size Baseplate bottom cutout rectangle size bp_cut_depth Baseplate bottom cutout rectangle depth bp_rcut_width Baseplate bottom cutout finger gap width bp_rcut_length Baseplate bottom cutout finger gap left bp_rcut_depth Baseplate bottom cutout finger gap depth d_cs countersink diameter for baseplate r_skel radius of cutout for skeletonized baseplate r_cb baseplate counterbore radius h_cb baseplate counterbore depth h_skel minimum baseplate thickness (when skeletonized)","title":"Constants"},{"location":"constants/#gridfinity-rebuilt-constants","text":"This file contains dimensions that are critical to the constructiuon of the other models, but are not values that often need to be changed. Thus, they were outsourced to this file such that the rest of the files would retain parity. All values here have the same range, this is positive real numbers. Some can be zero, but that may result in strange or invalid geometry, Parameter Description h_base height of the base r_base outside rounded radius of bin r_c1 lower base chamfer \"radius\" r_c2 upper base chamfer \"radius\" h_bot bottom thiccness of bin r_fo1 outside radii 1 r_fo2 outside radii 2 r_fo3 outside radii 3 r_hole1 screw hole radius r_hole2 magnet hole radius d_hole center-to-center distance between holes h_hole magnet hole depth h_slit slit depth (printer layer height) r_f1 top edge fillet radius r_f2 internal fillet radius d_div width of divider between compartments d_wall minimum wall thickness d_clear tolerance fit factor d_tabh height of tab (yaxis, measured from inner wall) d_tabw maximum width of tab a_tab angle of tab bp_h_bot Baseplate bottom part height (part added with weigthed=true) bp_cut_size Baseplate bottom cutout rectangle size bp_cut_depth Baseplate bottom cutout rectangle depth bp_rcut_width Baseplate bottom cutout finger gap width bp_rcut_length Baseplate bottom cutout finger gap left bp_rcut_depth Baseplate bottom cutout finger gap depth d_cs countersink diameter for baseplate r_skel radius of cutout for skeletonized baseplate r_cb baseplate counterbore radius h_cb baseplate counterbore depth h_skel minimum baseplate thickness (when skeletonized)","title":"gridfinity-rebuilt-constants"},{"location":"lite/","text":"gridfinity-rebuilt-lite Generates stock bins, but with a twist: the bases are hollow. This is unable to be implemented directly into gridfinity-rebuilt-bins due to its surprisingly complex construction. It couldn't be a toggle without causing the structure of the script to fundamentally change (and become more complex) so it was moved to a separate file. Notably, there are some parameters missing, as they are incompatible with the lite variation. Additionally, the complex geometry means rendering is fairly slow, and currently causes many CSG errors. Script Parameters Parameter Range Description gridx { n>0 | n\u2208R } number of bases along the x-axis gridy { n>0 | n\u2208R } number of bases along the y-axis gridz { n>0 | n\u2208R } bin height. See bin height information and \"gridz_define\" below. length { n>0 | n\u2208R } length of one unit of the base. default: 42 (The Answer to the Ultimate Question of Life, the Universe, and Everything.) divx { n>0 | n\u2208Z } number of compartments along X divy { n>0 | n\u2208Z } number of compartments along Y enable_zsnap boolean automatically snap the bin size to the nearest 7mm increment. default: true enable_lip boolean if you are not stacking the bin, you can disable the top lip to save space. default: true gridz_define { n>0 | n\u2208R } determine what the variable \"gridz\" applies to based on your use case. default: 0. \u2022 (0) gridz is the height in # of 7mm increments (Zack) \u2022 (1) gridz is the internal height in millimeters \u2022 (2) gridz is the overall external height of the bin in millimeters style_tab { 0, 1, 2, 3, 4, 5 } how the tabs for labels are generated. \u2022 (0) Full tabs across the entire compartment \u2022 (1) automatic tabs - left aligned tabs on the left edge - right aligned tabs on right edge - center tabs otherwise \u2022 (2) left aligned tabs \u2022 (3) center aligned tabs \u2022 (4) right aligned tabs \u2022 (5) no tabs style_hole { 0, 1, 2, 3 } the style of holes in the bases \u2022 (0) No holes \u2022 (1) Magnet holes only \u2022 (2) Magnet and screw holes - no printable slit \u2022 (3) Magnet and screw holes - with printable slit div_base_x { n>=0 | n\u2208Z } number of divisions per 1 unit of base along the X axis. (default 1, only use integers. 0 means automatically guess the division) div_base_y { n>=0 | n\u2208Z } number of divisions per 1 unit of base along the Y axis. (default 1, only use integers. 0 means automatically guess the division) Modules gridfinityLite Wrapper function that calls gridfinityInit and gridfinityBase functions (hence the sheer quantity of parameters). Like gridfinityInit , it uses its children as cutters for the compartments. gridfinityLite(gridx, gridy, gridz, gridz_define, enable_lip, enable_zsnap, length, div_base_x, div_base_y, style_hole) Parameter Range Description gridx { n>0 | n\u2208R } number of bases along the x-axis gridy { n>0 | n\u2208R } number of bases along the y-axis gridz { n>0 | n\u2208R } bin height. See bin height information and \"gridz_define\" below. gridz_define { n>0 | n\u2208R } determine what the variable \"gridz\" applies to based on your use case. default: 0. \u2022 (0) gridz is the height in # of 7mm increments (Zack) \u2022 (1) gridz is the internal height in millimeters \u2022 (2) gridz is the overall external height of the bin in millimeters enable_lip boolean if you are not stacking the bin, you can disable the top lip to save space. default: true enable_zsnap boolean automatically snap the bin size to the nearest 7mm increment. default: true length { n>0 | n\u2208R } length of one unit of the base. default: 42 (The Answer to the Ultimate Question of Life, the Universe, and Everything.) div_base_x { n>=0 | n\u2208Z } number of divisions per 1 unit of base along the X axis. (default 1, only use integers. 0 means automatically guess the division) div_base_y { n>=0 | n\u2208Z } number of divisions per 1 unit of base along the Y axis. (default 1, only use integers. 0 means automatically guess the division) style_hole { 0, 1, 2, 3 } the style of holes in the bases \u2022 (0) No holes \u2022 (1) Magnet holes only \u2022 (2) Magnet and screw holes - no printable slit \u2022 (3) Magnet and screw holes - with printable slit // Example: generate a 3x3x6 bin with 2x2 compartments, that is hollow gridfinityLite(gridx=3, gridy=3, gridz=6, gridz_define=0, enable_lip=true, enable_zsnap=false, length=42, div_base_x=0, div_base_y=0, style_hole=1) { cutEqual(n_divx=2, n_divy=2, style_tab=1, enable_scoop = false); }","title":"Lite"},{"location":"lite/#gridfinity-rebuilt-lite","text":"Generates stock bins, but with a twist: the bases are hollow. This is unable to be implemented directly into gridfinity-rebuilt-bins due to its surprisingly complex construction. It couldn't be a toggle without causing the structure of the script to fundamentally change (and become more complex) so it was moved to a separate file. Notably, there are some parameters missing, as they are incompatible with the lite variation. Additionally, the complex geometry means rendering is fairly slow, and currently causes many CSG errors.","title":"gridfinity-rebuilt-lite"},{"location":"lite/#script-parameters","text":"Parameter Range Description gridx { n>0 | n\u2208R } number of bases along the x-axis gridy { n>0 | n\u2208R } number of bases along the y-axis gridz { n>0 | n\u2208R } bin height. See bin height information and \"gridz_define\" below. length { n>0 | n\u2208R } length of one unit of the base. default: 42 (The Answer to the Ultimate Question of Life, the Universe, and Everything.) divx { n>0 | n\u2208Z } number of compartments along X divy { n>0 | n\u2208Z } number of compartments along Y enable_zsnap boolean automatically snap the bin size to the nearest 7mm increment. default: true enable_lip boolean if you are not stacking the bin, you can disable the top lip to save space. default: true gridz_define { n>0 | n\u2208R } determine what the variable \"gridz\" applies to based on your use case. default: 0. \u2022 (0) gridz is the height in # of 7mm increments (Zack) \u2022 (1) gridz is the internal height in millimeters \u2022 (2) gridz is the overall external height of the bin in millimeters style_tab { 0, 1, 2, 3, 4, 5 } how the tabs for labels are generated. \u2022 (0) Full tabs across the entire compartment \u2022 (1) automatic tabs - left aligned tabs on the left edge - right aligned tabs on right edge - center tabs otherwise \u2022 (2) left aligned tabs \u2022 (3) center aligned tabs \u2022 (4) right aligned tabs \u2022 (5) no tabs style_hole { 0, 1, 2, 3 } the style of holes in the bases \u2022 (0) No holes \u2022 (1) Magnet holes only \u2022 (2) Magnet and screw holes - no printable slit \u2022 (3) Magnet and screw holes - with printable slit div_base_x { n>=0 | n\u2208Z } number of divisions per 1 unit of base along the X axis. (default 1, only use integers. 0 means automatically guess the division) div_base_y { n>=0 | n\u2208Z } number of divisions per 1 unit of base along the Y axis. (default 1, only use integers. 0 means automatically guess the division)","title":"Script Parameters"},{"location":"lite/#modules","text":"","title":"Modules"},{"location":"lite/#gridfinitylite","text":"Wrapper function that calls gridfinityInit and gridfinityBase functions (hence the sheer quantity of parameters). Like gridfinityInit , it uses its children as cutters for the compartments. gridfinityLite(gridx, gridy, gridz, gridz_define, enable_lip, enable_zsnap, length, div_base_x, div_base_y, style_hole) Parameter Range Description gridx { n>0 | n\u2208R } number of bases along the x-axis gridy { n>0 | n\u2208R } number of bases along the y-axis gridz { n>0 | n\u2208R } bin height. See bin height information and \"gridz_define\" below. gridz_define { n>0 | n\u2208R } determine what the variable \"gridz\" applies to based on your use case. default: 0. \u2022 (0) gridz is the height in # of 7mm increments (Zack) \u2022 (1) gridz is the internal height in millimeters \u2022 (2) gridz is the overall external height of the bin in millimeters enable_lip boolean if you are not stacking the bin, you can disable the top lip to save space. default: true enable_zsnap boolean automatically snap the bin size to the nearest 7mm increment. default: true length { n>0 | n\u2208R } length of one unit of the base. default: 42 (The Answer to the Ultimate Question of Life, the Universe, and Everything.) div_base_x { n>=0 | n\u2208Z } number of divisions per 1 unit of base along the X axis. (default 1, only use integers. 0 means automatically guess the division) div_base_y { n>=0 | n\u2208Z } number of divisions per 1 unit of base along the Y axis. (default 1, only use integers. 0 means automatically guess the division) style_hole { 0, 1, 2, 3 } the style of holes in the bases \u2022 (0) No holes \u2022 (1) Magnet holes only \u2022 (2) Magnet and screw holes - no printable slit \u2022 (3) Magnet and screw holes - with printable slit // Example: generate a 3x3x6 bin with 2x2 compartments, that is hollow gridfinityLite(gridx=3, gridy=3, gridz=6, gridz_define=0, enable_lip=true, enable_zsnap=false, length=42, div_base_x=0, div_base_y=0, style_hole=1) { cutEqual(n_divx=2, n_divy=2, style_tab=1, enable_scoop = false); }","title":"gridfinityLite"},{"location":"vase/","text":"gridfinity-spiral-vase Some assembly required! Adaptation of Gridfinity bins to work with spiral vase mode, as to save filament and print time. A big drawback of using vase mode for Gridfinity bins was that they would be very flimsy, and would lack the features that make Gridfinity such a good organizational tool. The goal of this implementation was to maintain the design philosophy while working under the constraints of vase mode. Instructions Normal Gridfinity is impossible to convert to vase mode due to the geometry of the bases, meaning most existing vase mode Gridfinity models are limited to 1x1 bins. How this script gets around the impossible is to use two separate pieces. The bin and bases must be printed separately, and then glued together to form the final bin. While this is slightly more work, there is an added bonus to this method, as for larger bins you may not need every single grid slot to have a base, you only really need them on the corners, or the edges, with some in the middle for support. Using less bases saves filament and print time. All parameters are global. The customizer has descriptions for all parameters. It is essential that the section Printer Settings matches your preferred slicer's settings, otherwise the model will not slice correctly. Additionally, you have to turn on the spiral vase parameter in your slicer. If you do not know what vase mode is, this is a helpful video. Change the Printer Settings parameters to match your slicer and printer settings. Run the gridfinityVaseBase() module. This will generate a single spiral-capable base. Export as an STL file. You will need to print multiple of these, so it recommended to fill a base plate with them using the \"complete individual objects\" option (or equivilant) in your slicer. You only need to do this step initially, and then each time your printer settings change afterwards. Change the bin parameters and run gridfinityVase() module to generate the main bin. Glue bases to the bottom of the bin. I recommend superglue on the corners and the top of the magnet holes. How your sliced files should look (cross section shown for 1x1 bin): Example sliced files can be found on the Printables page. Statistics Given how it has become a bit of a challenge to reduce the weight and print time for these bins, here is a comparison for a large bin: Type Weight Time Plain 4x2x6 Bin 114.66g 3h58m Vase 4x2x6 Bin with 8 Bases 68.31g 2h27m Vase 4x2x6 Bin with 4 Bases (only corners) 56.43g 1h59m Clearly, vase mode is very quick and quite lightweight. However, this fundamentally means the bins will be weaker, so keep that in mind. Script Parameters Parameter Range Description type { 0 , 1 } generate the bin (0) or base (1) nozzle { n>0 | n\u2208R } extrusion width in slicer layer { n>0 | n\u2208R } size of layers in slicer bottom_layer { n>0 | n\u2208Z } number of layers on the bottom of the print gridx { n>0 | n\u2208R } number of bases along the x-axis gridy { n>0 | n\u2208R } number of bases along the y-axis gridz { n>0 | n\u2208R } bin height. See bin height information and \"gridz_define\" below. length { n>0 | n\u2208R } length of one unit of the base. default: 42 (The Answer to the Ultimate Question of Life, the Universe, and Everything.) n_divx { n>0 | n\u2208Z } number of compartments along X enable_holes boolean toggle holes inside the base enable_zsnap boolean automatically snap the bin size to the nearest 7mm increment. default: true enable_lip boolean if you are not stacking the bin, you can disable the top lip to save space. default: true enable_scoop_chamfer boolean toggles the chamfer on bottom edge for easy removal of items enable_funnel boolean toggles funnel on back of tab. acts as a finger grip and pour spout for small parts. enable_inset boolean toggles an inset on the front of the bin. adds strength when using scoop. enable_pinch boolean toggles an outside pinch at the top lip of the bin. adds strength. gridz_define { n>0 | n\u2208R } determine what the variable \"gridz\" applies to based on your use case. default: 0. \u2022 (0) gridz is the height in # of 7mm increments (Zack) \u2022 (1) gridz is the internal height in mm \u2022 (2) gridz is the overall external height of the bin in mm style_tab { 0, 1, 2, 3, 4, 5 } how the tabs for labels are generated. \u2022 (0) Full tabs across the entire compartment \u2022 (1) automatic tabs - left aligned tabs on the left edge - right aligned tabs on right edge - center tabs otherwise \u2022 (2) left aligned tabs \u2022 (3) center aligned tabs \u2022 (4) right aligned tabs \u2022 (5) no tabs style_base { 0, 1, 2, 3, 4} specifies the locations for the \"X\" cutouts for bases. \u2022 (0) all \u2022 (1) corners \u2022 (2) edges \u2022 (3) automatic \u2022 (4) none a_tab { n>0 | n\u2208R } angle of the tab Modules gridfinityVase Generates the compartment section of the bin. No parameters as it uses the global parameters for construction. gridfinityVase() gridfinityVaseBase Generates the base section of the bin. No parameters as it uses the global parameters for construction. It only generates a single base, as all of them are the same. Use your slicer with the \"outpuit individual objects\" option to print a full sheet of these, or as many as you need to fit your bins. gridfinityVaseBase()","title":"Vase"},{"location":"vase/#gridfinity-spiral-vase","text":"Some assembly required! Adaptation of Gridfinity bins to work with spiral vase mode, as to save filament and print time. A big drawback of using vase mode for Gridfinity bins was that they would be very flimsy, and would lack the features that make Gridfinity such a good organizational tool. The goal of this implementation was to maintain the design philosophy while working under the constraints of vase mode.","title":"gridfinity-spiral-vase"},{"location":"vase/#instructions","text":"Normal Gridfinity is impossible to convert to vase mode due to the geometry of the bases, meaning most existing vase mode Gridfinity models are limited to 1x1 bins. How this script gets around the impossible is to use two separate pieces. The bin and bases must be printed separately, and then glued together to form the final bin. While this is slightly more work, there is an added bonus to this method, as for larger bins you may not need every single grid slot to have a base, you only really need them on the corners, or the edges, with some in the middle for support. Using less bases saves filament and print time. All parameters are global. The customizer has descriptions for all parameters. It is essential that the section Printer Settings matches your preferred slicer's settings, otherwise the model will not slice correctly. Additionally, you have to turn on the spiral vase parameter in your slicer. If you do not know what vase mode is, this is a helpful video. Change the Printer Settings parameters to match your slicer and printer settings. Run the gridfinityVaseBase() module. This will generate a single spiral-capable base. Export as an STL file. You will need to print multiple of these, so it recommended to fill a base plate with them using the \"complete individual objects\" option (or equivilant) in your slicer. You only need to do this step initially, and then each time your printer settings change afterwards. Change the bin parameters and run gridfinityVase() module to generate the main bin. Glue bases to the bottom of the bin. I recommend superglue on the corners and the top of the magnet holes. How your sliced files should look (cross section shown for 1x1 bin): Example sliced files can be found on the Printables page.","title":"Instructions"},{"location":"vase/#statistics","text":"Given how it has become a bit of a challenge to reduce the weight and print time for these bins, here is a comparison for a large bin: Type Weight Time Plain 4x2x6 Bin 114.66g 3h58m Vase 4x2x6 Bin with 8 Bases 68.31g 2h27m Vase 4x2x6 Bin with 4 Bases (only corners) 56.43g 1h59m Clearly, vase mode is very quick and quite lightweight. However, this fundamentally means the bins will be weaker, so keep that in mind.","title":"Statistics"},{"location":"vase/#script-parameters","text":"Parameter Range Description type { 0 , 1 } generate the bin (0) or base (1) nozzle { n>0 | n\u2208R } extrusion width in slicer layer { n>0 | n\u2208R } size of layers in slicer bottom_layer { n>0 | n\u2208Z } number of layers on the bottom of the print gridx { n>0 | n\u2208R } number of bases along the x-axis gridy { n>0 | n\u2208R } number of bases along the y-axis gridz { n>0 | n\u2208R } bin height. See bin height information and \"gridz_define\" below. length { n>0 | n\u2208R } length of one unit of the base. default: 42 (The Answer to the Ultimate Question of Life, the Universe, and Everything.) n_divx { n>0 | n\u2208Z } number of compartments along X enable_holes boolean toggle holes inside the base enable_zsnap boolean automatically snap the bin size to the nearest 7mm increment. default: true enable_lip boolean if you are not stacking the bin, you can disable the top lip to save space. default: true enable_scoop_chamfer boolean toggles the chamfer on bottom edge for easy removal of items enable_funnel boolean toggles funnel on back of tab. acts as a finger grip and pour spout for small parts. enable_inset boolean toggles an inset on the front of the bin. adds strength when using scoop. enable_pinch boolean toggles an outside pinch at the top lip of the bin. adds strength. gridz_define { n>0 | n\u2208R } determine what the variable \"gridz\" applies to based on your use case. default: 0. \u2022 (0) gridz is the height in # of 7mm increments (Zack) \u2022 (1) gridz is the internal height in mm \u2022 (2) gridz is the overall external height of the bin in mm style_tab { 0, 1, 2, 3, 4, 5 } how the tabs for labels are generated. \u2022 (0) Full tabs across the entire compartment \u2022 (1) automatic tabs - left aligned tabs on the left edge - right aligned tabs on right edge - center tabs otherwise \u2022 (2) left aligned tabs \u2022 (3) center aligned tabs \u2022 (4) right aligned tabs \u2022 (5) no tabs style_base { 0, 1, 2, 3, 4} specifies the locations for the \"X\" cutouts for bases. \u2022 (0) all \u2022 (1) corners \u2022 (2) edges \u2022 (3) automatic \u2022 (4) none a_tab { n>0 | n\u2208R } angle of the tab","title":"Script Parameters"},{"location":"vase/#modules","text":"","title":"Modules"},{"location":"vase/#gridfinityvase","text":"Generates the compartment section of the bin. No parameters as it uses the global parameters for construction. gridfinityVase()","title":"gridfinityVase"},{"location":"vase/#gridfinityvasebase","text":"Generates the base section of the bin. No parameters as it uses the global parameters for construction. It only generates a single base, as all of them are the same. Use your slicer with the \"outpuit individual objects\" option to print a full sheet of these, or as many as you need to fit your bins. gridfinityVaseBase()","title":"gridfinityVaseBase"}]}