From 69678fbd19c35344193e599c9052106e1387dbcb Mon Sep 17 00:00:00 2001 From: Ian Gulliver Date: Sun, 12 Jul 2026 22:33:58 -0400 Subject: [PATCH] Add cratetag --- .gitattributes | 4 +++ cratetag/cratetag.scad | 62 ++++++++++++++++++++++++++++++++++++++++++ cratetag/cratetag.stl | 3 ++ cratetag/createtag.3mf | 3 ++ 4 files changed, 72 insertions(+) create mode 100644 .gitattributes create mode 100644 cratetag/cratetag.scad create mode 100644 cratetag/cratetag.stl create mode 100644 cratetag/createtag.3mf diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..8504958 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,4 @@ +*.stl filter=lfs diff=lfs merge=lfs -text +*.STL filter=lfs diff=lfs merge=lfs -text +*.3mf filter=lfs diff=lfs merge=lfs -text +*.png filter=lfs diff=lfs merge=lfs -text diff --git a/cratetag/cratetag.scad b/cratetag/cratetag.scad new file mode 100644 index 0000000..1bcb735 --- /dev/null +++ b/cratetag/cratetag.scad @@ -0,0 +1,62 @@ +// card: 38 x 76 +// 1.5 corner radius +// 3.5 hole 2 from edge + +$fn = 500; + + +card_x = 76; +card_y = 38; +card_z = 1; +card_cr = 1.5; +card_hole_inset = 2; +card_hole_r = 1.75; +card_hole_top_r = 3.75; + +border = 1; +overhang = 1; +base = 0.6; +top = 0.6; +cr = 1; +incline = 1.3; + +e = 0.02; + +difference() { + // Outer shape + hull() + for (x=[-1, 1], y=[-1, 1]) { + translate([x * ((card_x / 2) + border), y * ((card_y / 2) + border), 0]) { + cylinder(h=(base + card_z + top - cr), r1=(incline * cr), r2=cr); + + translate([0, 0, base + card_z + top - cr]) + sphere(r=cr); + } + } + + // Card cutout + hull() + for (x=[-1, 1], y=[-1, 1]) { + translate([x * ((card_x / 2) - card_cr), y * ((card_y / 2) - card_cr), base]) + cylinder(h=card_z, r=card_cr); + } + + // Window cutout + hull() + for (x=[-1, 1], y=[-1, 1]) { + translate([x * ((card_x / 2) - overhang - cr), y * ((card_y / 2) - overhang - cr), base]) { + cylinder(h=(card_z + top + e), r=cr); + } + } + + + // Holes + for (x=[-1, 1]) { + translate([x * ((card_x / 2) - card_hole_inset - card_hole_r), 0, -e]) { + cylinder(h=(e + base + card_z + top + e), r=card_hole_r); + + translate([0, 0, base + card_z]) + cylinder(h=(e + top + e), r=card_hole_top_r); + } + } +} \ No newline at end of file diff --git a/cratetag/cratetag.stl b/cratetag/cratetag.stl new file mode 100644 index 0000000..180b851 --- /dev/null +++ b/cratetag/cratetag.stl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d60a67a96e1277fa5b05ff9f08e65a1633815cc6de7407520c944a5f8e6b2ca8 +size 33449569 diff --git a/cratetag/createtag.3mf b/cratetag/createtag.3mf new file mode 100644 index 0000000..f5c9913 --- /dev/null +++ b/cratetag/createtag.3mf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:982fe326443b82e01076c8fdea07cb2a8d04972e812cf3e0b9e025e6fc4b3a05 +size 1239705