diff --git a/README.md b/README.md
index d9640c0..304fd51 100644
--- a/README.md
+++ b/README.md
@@ -32,8 +32,10 @@ For inserting magnets, check out [the jig](#jig).
- [No Magnets](#no-magnets)
- [Press-Fit magnets](#press-fit-magnets)
- [Jig](#jig)
+ - [Release slot](#release-slot)
- [Glued magnets](#glued-magnets)
- [Rounded corner frame](#rounded-corner-frame)
+ - [Magnet border](#magnet-border)
- [Solid frame](#solid-frame)
- [Click Latch](#click-latch)
- [ClickGroove](#clickgroove)
@@ -185,11 +187,6 @@ Press-fit magnets require no glue. The magnets are simply pressed into the pocke
-On the bottom side of the plate there is a slot so you can push out any inserted magnet with a screwdriver.
-
-
-
-
The layers above and below the magnet can be configured using the `magnet_top` and `magnet_bottom` options.
Because the distance to the bin magnets is larger, press-fit magnets make for a weaker connection than glue-in magnets.
@@ -230,6 +227,17 @@ Pull the pusher back into its original position to release the baseplate. You ca
+### Release slot
+
+On the bottom side of the plate there is a slot so you can push out any inserted magnet with a screwdriver.
+
+
+
+
+The width of this slot can be adjusted with the `magnet_release_width` setting. Setting this to 0 disables the release slot.
+
+For glue-in magnets, there is a hole instead of a slot. The diameter of the hole is also controlled by `magnet_release_width`.
+
### Glued magnets
Magnets can also be glued in from the top:
@@ -252,6 +260,13 @@ By default, the vertical space for the magnet is not fully filled in to save fil
+#### Magnet border
+
+To save filament, you can set a lower `magnet_border`:
+
+
+
+
### Solid frame
Using the `magnet_frame_style` option, you can change the magnet layer to be fully filled in.
diff --git a/docs/images/edge-puzzle-full-height.png b/docs/images/edge-puzzle-full-height.png
index 7318d10..110f78a 100644
Binary files a/docs/images/edge-puzzle-full-height.png and b/docs/images/edge-puzzle-full-height.png differ
diff --git a/docs/images/edge-puzzle-multi.png b/docs/images/edge-puzzle-multi.png
index 00af6e9..b1becde 100644
Binary files a/docs/images/edge-puzzle-multi.png and b/docs/images/edge-puzzle-multi.png differ
diff --git a/docs/images/magnet-border-1.png b/docs/images/magnet-border-1.png
new file mode 100644
index 0000000..0eb1043
Binary files /dev/null and b/docs/images/magnet-border-1.png differ
diff --git a/docs/images/magnets-glue-in-bottom.png b/docs/images/magnets-glue-in-bottom.png
index bc0a0e6..2fbaa94 100644
Binary files a/docs/images/magnets-glue-in-bottom.png and b/docs/images/magnets-glue-in-bottom.png differ
diff --git a/docs/images/magnets-glue-in.png b/docs/images/magnets-glue-in.png
index 1621228..a54e905 100644
Binary files a/docs/images/magnets-glue-in.png and b/docs/images/magnets-glue-in.png differ
diff --git a/docs/images/magnets-press-fit-below.png b/docs/images/magnets-press-fit-below.png
index 229eba4..81e0093 100644
Binary files a/docs/images/magnets-press-fit-below.png and b/docs/images/magnets-press-fit-below.png differ
diff --git a/docs/images/magnets-solid.png b/docs/images/magnets-solid.png
index 932efe3..ba2ebee 100644
Binary files a/docs/images/magnets-solid.png and b/docs/images/magnets-solid.png differ
diff --git a/docs/images/thumb-screw-base-magnet.png b/docs/images/thumb-screw-base-magnet.png
index 500a5fb..4a2d3a7 100644
Binary files a/docs/images/thumb-screw-base-magnet.png and b/docs/images/thumb-screw-base-magnet.png differ
diff --git a/docs/images/thumb-screw-magnet.png b/docs/images/thumb-screw-magnet.png
index 345f754..941bbde 100644
Binary files a/docs/images/thumb-screw-magnet.png and b/docs/images/thumb-screw-magnet.png differ
diff --git a/editor.toml b/editor.toml
index 6787c03..15c236a 100644
--- a/editor.toml
+++ b/editor.toml
@@ -11,6 +11,7 @@ description-extra-html = """
For detailed documentation, check the README.
Feb 16: I've turned off magnets by default because most people don't use them. If you've saved a design with magnets, you will have to manually turn them on again below.
Feb 21: The do_half parameters have been superseded by the filler parameters.
+
Apr 8: Glue-in magnets now have a release slot, which can be disabled by setting magnet_release_width to 0.
The click latch can deform over time, especially if made of PLA. Prefer other materials like PETG.
The click latch can deform over time if used with non-ClickGroove bins, especially if made of PLA. Prefer other materials like PETG if you plan to use such bins.
You have enabled both the edge and intersection puzzle connectors. While technically possible, it is better to focus on and tune one connector type.
@@ -72,6 +73,12 @@ display-condition = {js = "magnets"}
display-condition = {js = "magnets"}
[model.param-metadata.magnet_bottom]
display-condition = {js = "magnets"}
+[model.param-metadata.magnet_border]
+display-condition = {js = "magnets"}
+help-link = "https://github.com/yawkat/GridFlock/blob/main/README.md#rounded-corner-frame"
+[model.param-metadata.magnet_release_width]
+display-condition = {js = "magnets"}
+help-link = "https://github.com/yawkat/GridFlock/blob/main/README.md#release-slot"
[model.tab-metadata."Intersection Puzzle Connector"]
control-boolean = "connector_intersection_puzzle"
diff --git a/gridflock.scad b/gridflock.scad
index 760c0f9..c10d0f2 100644
--- a/gridflock.scad
+++ b/gridflock.scad
@@ -23,6 +23,10 @@ magnet_height = 2.25; // 0.25
magnet_top = 0.5; // 0.25
// Floor below the magnet. Not structurally important, should be small to minimize filament use
magnet_bottom = 0.75; // 0.25
+// Horizontal strength of the frame holding the magnet in place
+magnet_border = 2; // 0.5
+// Width of the magnet release slot
+magnet_release_width = 3; // 0.5
/* [Click Latch (Experimental)] */
@@ -217,9 +221,9 @@ assert(!thumbscrews || solid_base > 0 || (magnets && magnet_frame_style == _MAGN
$fn=40;
// dimensions of the magnet extraction slot
-_magnet_extraction_dim = [magnet_diameter/2, magnet_diameter/2+2];
+_magnet_extraction_dim = [magnet_release_width, magnet_diameter/2+2];
// dimensions of the magnet extraction slot in negative mode. This is used to cut out slots out of the edge puzzle connector. This is a bit smaller to make the edge puzzle connector less frail
-_magnet_extraction_dim_negative = [magnet_diameter/2, magnet_diameter/2];
+_magnet_extraction_dim_negative = [magnet_release_width, magnet_diameter/2];
// actual height of a gridfinity profile with no extra clearance.
// gridfinity rebuilt adds extra clearance at the bottom, we cut that out. This is the height for z>0
@@ -243,7 +247,6 @@ _WEST = 3;
// distance of each magnet from the side of the base plate grid cell
_magnet_location = 0.25 + 2.15 + 0.8 + 4.8;
-_magnet_border = 2;
// Distance between edge connector pieces, if multiple configured
_edge_puzzle_stagger = edge_puzzle_dim.x + 2;
@@ -371,10 +374,10 @@ module cell(unit_size=[1, 1], connector=[false, false, false, false], bottom_cha
// round corners
if (magnet_frame_style == _MAGNET_ROUND_CORNERS) {
each_cell_corner(unit_size) {
- total_bounds = _magnet_location + magnet_diameter/2 + _magnet_border;
+ total_bounds = _magnet_location + magnet_diameter/2 + magnet_border;
square([_magnet_location, total_bounds]);
square([total_bounds, _magnet_location]);
- translate([_magnet_location, _magnet_location]) circle(r=magnet_diameter/2+_magnet_border);
+ translate([_magnet_location, _magnet_location]) circle(r=magnet_diameter/2+magnet_border);
}
}
// if we have a female edge connector here, add a bar for stability (edge_puzzle_magnet_border)
@@ -405,16 +408,24 @@ module cell(unit_size=[1, 1], connector=[false, false, false, false], bottom_cha
} else {
translate([0, 0, -_magnet_level_height + magnet_bottom]) linear_extrude(magnet_height) {
circle(d=magnet_diameter);
- if (magnet_style == _MAGNET_PRESS_FIT) rotate([0, 0, rot_slot]) translate([-magnet_diameter/2, 0]) square([magnet_diameter, magnet_diameter/2 + _magnet_border]);
+ if (magnet_style == _MAGNET_PRESS_FIT) rotate([0, 0, rot_slot]) translate([-magnet_diameter/2, 0]) square([magnet_diameter, magnet_diameter/2 + magnet_border]);
}
}
+ // magnet extraction slot
if (magnet_style == _MAGNET_PRESS_FIT) {
- // magnet extraction slot
- rotate([0, 0, rot_slot]) translate([0, 0, -_extra_height]) linear_extrude(_extra_height - _magnet_level_height + magnet_bottom + magnet_height) {
- extraction_dim = positive ? _magnet_extraction_dim : _magnet_extraction_dim_negative;
- translate([-extraction_dim.x/2, -extraction_dim.y]) square(extraction_dim);
- translate([0, -extraction_dim.y]) circle(extraction_dim.x/2);
- circle(extraction_dim.x/2);
+ // horizontal slot
+ extraction_dim = positive ? _magnet_extraction_dim : _magnet_extraction_dim_negative;
+ if (extraction_dim.x > 0 && extraction_dim.y > 0) {
+ rotate([0, 0, rot_slot]) translate([0, 0, -_extra_height]) linear_extrude(_extra_height - _magnet_level_height + magnet_bottom + magnet_height) {
+ translate([-extraction_dim.x/2, -extraction_dim.y]) square(extraction_dim);
+ translate([0, -extraction_dim.y]) circle(extraction_dim.x/2);
+ circle(extraction_dim.x/2);
+ }
+ }
+ } else {
+ // vertical slot
+ if (magnet_release_width > 0) {
+ translate([0, 0, -_extra_height]) cylinder(d=magnet_release_width, h=_extra_height);
}
}
}