diff options
author | Jonas Gunz <himself@jonasgunz.de> | 2023-01-23 21:22:23 +0100 |
---|---|---|
committer | Jonas Gunz <himself@jonasgunz.de> | 2023-01-23 21:22:23 +0100 |
commit | f71d6271675282f121cca286a932cab236f8f542 (patch) | |
tree | 002a93c204849669c39e0174f381c28667832c4d | |
parent | ad581dba314fdbd54b9aad863189e4535ba75a14 (diff) | |
download | oscad_gridfinity-f71d6271675282f121cca286a932cab236f8f542.tar.gz |
add fill option
-rw-r--r-- | README.md | 8 | ||||
-rw-r--r-- | gridfinity.scad | 16 |
2 files changed, 19 insertions, 5 deletions
@@ -9,9 +9,11 @@ Create fully parameterized Templates for GridFinity. `gridfinity(<x>, <y>, <z>, lip=<>, magnets=<>);` * **x, y** Vertical size in *GridFinity* units -* **z** Height in GridFinity units (`z * 7mm`). This in excluding the base and stacking lip. -* **lip** `true/false` Sets wether to put a stacking lip on top. Only works with z >= 1. -* **magnets** `true/false` Sets wether to put holes for magnets in the base. +* **z** Height in GridFinity units (`z * 7mm`). This is excluding the base and stacking lip. +* **lip** `true/false` Sets wether to put a stacking lip on top. Only works with z >= 1. Default `true` +* **magnets** `true/false` Sets wether to put holes for magnets in the base. Default `false` +* **fill** `true/false` Sets wether the created object is solid or hollow. Default `true` +* **bottom_height** Height offset for floor. Only applicable, if `fill == false`. Default `0` ## Example diff --git a/gridfinity.scad b/gridfinity.scad index a26e758..c67fe3c 100644 --- a/gridfinity.scad +++ b/gridfinity.scad @@ -148,7 +148,7 @@ module bottom_cutout(units_x, units_y) { } } -module gridfinity(units_x, units_y, units_z, lip = true, magnets = false) { +module gridfinity(units_x, units_y, units_z, lip = true, magnets = false, fill = true, bottom_height = 0) { units_x = floor(abs(units_x)); units_y = floor(abs(units_y)); units_z = floor(abs(units_z)); @@ -167,7 +167,19 @@ module gridfinity(units_x, units_y, units_z, lip = true, magnets = false) { linear_extrude(extr) rounded_square(units_x * width - 0.5, units_y * width - 0.5, rounding); } - bottom_cutout(units_x, units_y); + union(){ + bottom_cutout(units_x, units_y); + + // remove solid block if set, leave walls + if (! fill) { + wall_thickness = 2.95; // thickness of stacking lip + extr = units_z * height - (4.75 + minimal_thickness) - bottom_height + 0.01; + + translate([coord_centered(units_x), coord_centered(units_y), 4.75 + minimal_thickness + bottom_height]) + linear_extrude(extr) + rounded_square(units_x * width - wall_thickness * 2, units_y * width - wall_thickness * 2, 0.7); + } + } } // Stacking Lip |