mirror of
https://github.com/kennetek/gridfinity-rebuilt-openscad.git
synced 2024-11-22 08:20:50 +00:00
added documentation images
This commit is contained in:
parent
ac70740163
commit
7674ead5c9
6 changed files with 37 additions and 82 deletions
|
@ -1,51 +0,0 @@
|
|||
# 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.
|
||||
|
||||
[<img src="../images/vase_features_front.gif" width="320">]()
|
||||
[<img src="../images/vase_features_back.gif" width="320">]()
|
||||
[<img src="../images/vase_dividers.gif" width="320">]()
|
||||
[<img src="../images/vase_bottom.gif" width="320">]()
|
||||
[<img src="../images/vase_base.gif" width="320">]()
|
||||
[<img src="../images/vase_tabs.gif" width="320">]()
|
||||
|
||||
## Features
|
||||
As this script is a child of the `gridfinity-rebuilt-base.scad` script, it has most of the same features. Of course, vase mode does have some limitations (it can only do compartments along the X-axis, not the Y-axis). This script is not stand-alone, you must download the full repository for it to work. See the full list of features [here](https://github.com/kennetek/gridfinity-rebuilt-openscad).
|
||||
|
||||
## 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](https://www.youtube.com/watch?v=HZSFoFYpBaA) is a helpful video.
|
||||
|
||||
1. Change the *Printer Settings* parameters to match your slicer and printer settings.
|
||||
2. 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.
|
||||
3. Change the bin parameters and run `gridfinityVase()` module to generate the main bin.
|
||||
4. 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):
|
||||
|
||||
[<img src="../images/slicer_bin.png" height="200">]()
|
||||
[<img src="../images/slicer_base.png" height="200">]()
|
||||
|
||||
Example sliced files can be found on the [Printables](https://www.printables.com/model/284371-spiral-vase-gridfinity-in-openscad) page.
|
||||
|
||||
## Statistics
|
||||
Given how it has become a bit of a [challenge](https://www.printables.com/model/265271-gridfinity-lite-economical-plain-storage-bins) 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.
|
||||
|
||||
## Recommendations
|
||||
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](https://openscad.org/downloads.html). To enable the feature, go to Edit > Preferences > Features > fast-csg. On my computer, this sped up rendering from 10 minutes down to a couple of seconds, even for comically large bins.
|
||||
|
||||
## Enjoy!
|
||||
|
||||
[<img src="../images/spin.gif" width="160">]()
|
||||
|
||||
[Gridfinity](https://www.youtube.com/watch?v=ra_9zU-mnl8) by [Zack Freedman](https://www.youtube.com/c/ZackFreedman/about)
|
|
@ -16,9 +16,9 @@ $fs = 0.25;
|
|||
|
||||
/* [General Settings] */
|
||||
// number of bases along x-axis
|
||||
gridx = 2;
|
||||
gridx = 4;
|
||||
// number of bases along y-axis
|
||||
gridy = 2;
|
||||
gridy = 4;
|
||||
// base unit
|
||||
length = 42;
|
||||
|
||||
|
|
|
@ -43,7 +43,7 @@ gridz_define = 0; // [0:gridz is the height of bins in units of 7mm increments -
|
|||
style_tab = 1; //[0:Full,1:Auto,2:Left,3:Center,4:Right,5:None]
|
||||
|
||||
/* [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]
|
||||
style_hole = 0; // [0:no holes, 1:magnet holes only, 2: magnet and screw holes - no printable slit, 3: magnet and screw holes - printable slit]
|
||||
// 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)
|
||||
|
@ -53,39 +53,45 @@ div_base_y = 0;
|
|||
// ===== IMPLEMENTATION ===== //
|
||||
|
||||
// Input all the cutter types in here
|
||||
module cutterInput() {
|
||||
cutEqual(n_divx = divx, n_divy = divy, style_tab = style_tab, enable_scoop = false);
|
||||
//color("tomato")
|
||||
//gridfinityLite(gridx, gridy, gridz, gridz_define, enable_lip, enable_zsnap, length, div_base_x, div_base_y, style_hole) {
|
||||
// cutEqual(n_divx = divx, n_divy = divy, style_tab = style_tab, enable_scoop = false);
|
||||
//}
|
||||
color("tomato")
|
||||
gridfinityLite(gridx=3, gridy=3, gridz=5, gridz_define=0, enable_lip=true, enable_zsnap=false, length=42, div_base_x=0, div_base_y=0, style_hole=0) {
|
||||
cutEqual(n_divx=1, n_divy=1, style_tab=5, enable_scoop = false);
|
||||
}
|
||||
|
||||
// ===== CONSTRUCTION ===== //
|
||||
|
||||
color("tomato")
|
||||
difference() {
|
||||
union() {
|
||||
gridfinityInit(gridx, gridy, height(gridz, gridz_define, enable_lip, enable_zsnap), 0, length) {
|
||||
cutterInput();
|
||||
}
|
||||
gridfinityBase(gridx, gridy, length, div_base_x, div_base_y, style_hole);
|
||||
}
|
||||
|
||||
module gridfinityLite(gridx, gridy, gridz, gridz_define, enable_lip, enable_zsnap, length, div_base_x, div_base_y, style_hole) {
|
||||
difference() {
|
||||
union() {
|
||||
intersection() {
|
||||
difference() {
|
||||
gridfinityBase(gridx, gridy, length, div_base_x, div_base_y, style_hole, -d_wall*2, false);
|
||||
translate([-gridx*length/2,-gridy*length/2,2*h_base])
|
||||
cube([gridx*length,gridy*length,1000]);
|
||||
}
|
||||
translate([0,0,-1])
|
||||
rounded_rectangle(gridx*length-0.5005-d_wall*2, gridy*length-0.5005-d_wall*2, 1000, r_f2);
|
||||
}
|
||||
translate([0,0,h_base+d_clear])
|
||||
rounded_rectangle(gridx*length-0.5005-d_wall*2, gridy*length-0.5005-d_wall*2, h_base, r_f2);
|
||||
gridfinityInit(gridx, gridy, height(gridz, gridz_define, enable_lip, enable_zsnap), 0, length)
|
||||
children();
|
||||
gridfinityBase(gridx, gridy, length, div_base_x, div_base_y, style_hole);
|
||||
}
|
||||
|
||||
translate([0,0,-4*h_base])
|
||||
gridfinityInit(gridx, gridy, height(20,0), 0, length)
|
||||
cutterInput();
|
||||
}
|
||||
difference() {
|
||||
union() {
|
||||
intersection() {
|
||||
difference() {
|
||||
gridfinityBase(gridx, gridy, length, div_base_x, div_base_y, style_hole, -d_wall*2, false);
|
||||
translate([-gridx*length/2,-gridy*length/2,2*h_base])
|
||||
cube([gridx*length,gridy*length,1000]);
|
||||
}
|
||||
translate([0,0,-1])
|
||||
rounded_rectangle(gridx*length-0.5005-d_wall*2, gridy*length-0.5005-d_wall*2, 1000, r_f2);
|
||||
}
|
||||
translate([0,0,h_base+d_clear])
|
||||
rounded_rectangle(gridx*length-0.5005-d_wall*2, gridy*length-0.5005-d_wall*2, h_base, r_f2);
|
||||
}
|
||||
|
||||
translate([0,0,-4*h_base])
|
||||
gridfinityInit(gridx, gridy, height(20,0), 0, length)
|
||||
children();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
|
@ -27,15 +27,15 @@ bottom_layer = 3;
|
|||
|
||||
/* [General Settings] */
|
||||
// number of bases along x-axis
|
||||
gridx = 2;
|
||||
gridx = 1;
|
||||
// number of bases along y-axis
|
||||
gridy = 2;
|
||||
gridy = 1;
|
||||
// bin height. See bin height information and "gridz_define" below.
|
||||
gridz = 6;
|
||||
// base unit
|
||||
length = 42;
|
||||
// number of compartments along x-axis
|
||||
n_divx = 3;
|
||||
n_divx = 2;
|
||||
|
||||
/* [Toggles] */
|
||||
// toggle holes on the base for magnet
|
||||
|
|
BIN
images/baseplate.gif
Normal file
BIN
images/baseplate.gif
Normal file
Binary file not shown.
After Width: | Height: | Size: 121 KiB |
BIN
images/lite.gif
Normal file
BIN
images/lite.gif
Normal file
Binary file not shown.
After Width: | Height: | Size: 177 KiB |
Loading…
Reference in a new issue