diff --git a/gridfinity-rebuilt-holes.scad b/gridfinity-rebuilt-holes.scad index e629a4c..f4da3e0 100644 --- a/gridfinity-rebuilt-holes.scad +++ b/gridfinity-rebuilt-holes.scad @@ -95,7 +95,7 @@ module magnet_and_screw_hole(screw_radius, magnet_radius, screw_depth, magnet_de */ module magnet_and_screw_hole_printable(screw_radius, magnet_radius, screw_depth, magnet_depth) { difference() { - magnet_and_screw_hole(screw_radius, magnet_radius, screw_depth, magnet_depth + h_slit); + magnet_and_screw_hole(screw_radius, magnet_radius, screw_depth, magnet_depth + LAYER_HEIGHT); translate([-1.5*magnet_radius, screw_radius+0.1, magnet_depth]) cube([magnet_radius*3, magnet_radius*3, 10]); diff --git a/gridfinity-rebuilt-utility.scad b/gridfinity-rebuilt-utility.scad index 29e403d..cd1002f 100644 --- a/gridfinity-rebuilt-utility.scad +++ b/gridfinity-rebuilt-utility.scad @@ -236,7 +236,7 @@ module gridfinityBase(gx, gy, l, dx, dy, style_hole, off=0, final_cut=true, only translate_coordinates = [ (gx/2)*l_grid - d_hole_from_side, (gy/2) * l_grid - d_hole_from_side, - h_slit*2 + 0 ]; translate(translate_coordinates) refined_hole(); @@ -281,11 +281,10 @@ module block_base(gx, gy, l, dbnx, dbny, style_hole, off) { if (style_hole > 0) pattern_circular(abs(l-d_hole_from_side/2)<0.001?1:4) + translate([l/2-d_hole_from_side, l/2-d_hole_from_side, 0]) if (style_hole == 4) - translate([l/2-d_hole_from_side, l/2-d_hole_from_side, h_slit*2]) refined_hole(); else - translate([l/2-d_hole_from_side, l/2-d_hole_from_side, 0]) block_base_hole(style_hole, off); } } @@ -325,29 +324,26 @@ module block_base_solid(dbnx, dbny, l, o) { * @see https://www.printables.com/model/413761-gridfinity-refined */ module refined_hole() { - // Meassured magnet hole diameter to be 5.86mm (meassured in fusion360 - r = MAGNET_HOLE_RADIUS-0.32; - - // Magnet height - m = 2; - mh = m-0.1; + refined_offset = LAYER_HEIGHT * REFINED_HOLE_BOTTOM_LAYERS; // Poke through - For removing a magnet using a toothpick - ptl = h_slit*3; // Poke Through Layers - pth = mh+ptl; // Poke Through Height - ptr = 2.5; // Poke Through Radius + ptl = refined_offset + LAYER_HEIGHT; // Additional layer just in case + poke_through_height = REFINED_HOLE_HEIGHT + ptl; + poke_hole_radius = 2.5; + poke_hole_center = [-12.53 + 5.60, 0, -ptl]; + translate([0, 0, refined_offset]) union() { - hull() { - // Magnet hole - smaller than the magnet to keep it squeezed - translate([10, -r, 0]) cube([1, r*2, mh]); - cylinder(1.9, r=r); - } - hull() { - // Poke hole - translate([-9+5.60, -ptr/2, -ptl]) cube([1, ptr, pth]); - translate([-12.53+5.60, 0, -ptl]) cylinder(pth, d=ptr); - } + // Magnet hole + translate([0, -REFINED_HOLE_RADIUS, 0]) + cube([11, REFINED_HOLE_RADIUS*2, REFINED_HOLE_HEIGHT]); + cylinder(REFINED_HOLE_HEIGHT, r=REFINED_HOLE_RADIUS); + + // Poke hole + translate([poke_hole_center.x, -poke_hole_radius/2, poke_hole_center.z]) + cube([abs(poke_hole_center.x), poke_hole_radius, poke_through_height]); + translate(poke_hole_center) + cylinder(poke_through_height, d=poke_hole_radius); } } diff --git a/standard.scad b/standard.scad index 4bc35ac..9a25d68 100644 --- a/standard.scad +++ b/standard.scad @@ -21,23 +21,29 @@ l_grid = 42; // **************************************** // Magnet / Screw Hole Constants // **************************************** +LAYER_HEIGHT = 0.2; +MAGNET_HEIGHT = 2; SCREW_HOLE_RADIUS = 3 / 2; MAGNET_HOLE_RADIUS = 6.5 / 2; -MAGNET_HOLE_DEPTH = 2.4; +MAGNET_HOLE_DEPTH = MAGNET_HEIGHT + (LAYER_HEIGHT * 2); // center-to-center distance between holes d_hole = 26; // distance of hole from side of bin d_hole_from_side=8; -// slit depth (printer layer height) -h_slit = 0.2; + +// Meassured diameter in Fusion360. +// Smaller than the magnet to keep it squeezed. +REFINED_HOLE_RADIUS = 5.86 / 2; +REFINED_HOLE_HEIGHT = MAGNET_HEIGHT - 0.1; +// How many layers are between a Gridfinity Refined Hole and the bottom +REFINED_HOLE_BOTTOM_LAYERS = 2; // Experimentally chosen for a press fit. MAGNET_HOLE_CRUSH_RIB_INNER_RADIUS = 5.9 / 2; // Mostly arbitrarily chosen. // 30 ribs does not print with a 0.4mm nozzle. -// 10 ribs print well with a 0.4mm nozzle. // Anything 5 or under produces a hole that is not round. MAGNET_HOLE_CRUSH_RIB_COUNT = 8;