From 4c7c8f2dc3b2ea4e46e975c161c5cbda4e3c0698 Mon Sep 17 00:00:00 2001 From: kellervater Date: Sun, 18 May 2025 16:06:39 +0200 Subject: [PATCH] feat: gridfinity baseplate --- models/gridfinity/base.scad | 98 +++++++++++++++++++++++++++++++++++++ 1 file changed, 98 insertions(+) create mode 100644 models/gridfinity/base.scad diff --git a/models/gridfinity/base.scad b/models/gridfinity/base.scad new file mode 100644 index 0000000..6e0c4c9 --- /dev/null +++ b/models/gridfinity/base.scad @@ -0,0 +1,98 @@ +// import BOSL2 +include + +/* [Hidden] */ +// constants which shouldn't be changed +$fn=100; + +// This is the HomeRacker base unit. don't change this! +BASE_UNIT=15; // mm +// Standard tolerance for the mount. This is a sane default. +TOLERANCE=0.2; // mm +// Base strength. This is a sane default. +BASE_STRENGTH=2; // mm +// Chamfer size. This is a sane default. +CHAMFER=2.5; // mm +// Lock Pin side length +LOCK_PIN_SIDE=3; // mm +// lock pin edge distance +LOCK_PIN_EDGE_DISTANCE=5.5; // mm +// lock pin chamfer +LOCK_PIN_CHAMFER=0.8; // mm + +GRIDFINITY_BASEPLATE_SIDE_LENGTH=42; // mm +GRIDFINITY_BASEPLATE_STRENGTH=8; // mm +GRIDFINITY_BASEPLATE_SIDE_LENGTH_INNER=GRIDFINITY_BASEPLATE_SIDE_LENGTH-GRIDFINITY_BASEPLATE_STRENGTH/2; // mm + +GRIDFINITY_INCLINE_1=0.7; // mm +GRIDFINITY_INCLINE_2=1.8; // mm +GRIDFINITY_INCLINE_3=2.15; // mm +GRIDFINITY_BASEPLATE_HEIGHT=GRIDFINITY_INCLINE_1+GRIDFINITY_INCLINE_2+GRIDFINITY_INCLINE_3; // mm + +/* [Grdifinity] */ +x_units=1; // [1:1:10] +y_units=1; // [1:1:10] + +module recess(side_length,chamfer){ + //chamfer + rotate([180,0,0]) + prismoid( + size1=[side_length,side_length], + rounding=chamfer, + h=chamfer, + xang=45, + yang=45 + ); +} + +module gridfinity_unit(){ + difference(){ + //outer cube + cuboid( + size=[GRIDFINITY_BASEPLATE_SIDE_LENGTH,GRIDFINITY_BASEPLATE_SIDE_LENGTH,GRIDFINITY_BASEPLATE_HEIGHT], + anchor=CENTER+BOTTOM + ); + //1st recess + + translate([0,0,GRIDFINITY_BASEPLATE_HEIGHT]) + recess( + GRIDFINITY_BASEPLATE_SIDE_LENGTH, + GRIDFINITY_INCLINE_3); + //2nd recess + translate([0,0,GRIDFINITY_BASEPLATE_HEIGHT-GRIDFINITY_INCLINE_3-GRIDFINITY_INCLINE_2]) + cuboid( + size=[ + GRIDFINITY_BASEPLATE_SIDE_LENGTH-GRIDFINITY_INCLINE_3*2, + GRIDFINITY_BASEPLATE_SIDE_LENGTH-GRIDFINITY_INCLINE_3*2, + GRIDFINITY_INCLINE_2 + ], + rounding=GRIDFINITY_INCLINE_2, + except=[BOTTOM,TOP], + anchor=CENTER+BOTTOM + ); + // //3rd recess + translate([0,0,GRIDFINITY_INCLINE_1+0.01]) + recess( + GRIDFINITY_BASEPLATE_SIDE_LENGTH_INNER, + GRIDFINITY_INCLINE_1+0.01 + ); + } +} + +module grid(x,y){ + intersection(){ + grid_copies(spacing=[GRIDFINITY_BASEPLATE_SIDE_LENGTH,GRIDFINITY_BASEPLATE_SIDE_LENGTH],n=[x,y]) + gridfinity_unit(); + // roundings + cuboid( + size=[GRIDFINITY_BASEPLATE_SIDE_LENGTH*x,GRIDFINITY_BASEPLATE_SIDE_LENGTH*y,GRIDFINITY_BASEPLATE_HEIGHT*2], + anchor=CENTER+BOTTOM, + rounding=CHAMFER, + except=[BOTTOM,TOP] + ); + } + +} + + +grid(x=2,y=3); \ No newline at end of file