Initial import

This commit is contained in:
Ian Gulliver
2026-07-12 11:42:47 -07:00
commit 70aaf84977
225 changed files with 125695 additions and 0 deletions
+4
View File
@@ -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
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+73
View File
@@ -0,0 +1,73 @@
// https://en.wikipedia.org/wiki/Bitruncated_cubic_honeycomb
module _trunc_octa() {
octapoints = [
[+1, 0, 0],
[-1, 0, 0],
[0, +1, 0],
[0, -1, 0],
[0, 0, +1],
[0, 0, -1]
];
octafaces = [
[4, 2, 0],
[4, 0, 3],
[4, 3, 1],
[4, 1, 2],
[5, 0, 2],
[5, 3, 0],
[5, 1, 3],
[5, 2, 1]
];
intersection() {
scale(3) {
polyhedron(points=octapoints, faces=octafaces);
}
cube(size=4, center=true);
}
}
module _hollow_trunc_octa(wall) {
difference() {
_trunc_octa();
scale(1 - wall)
_trunc_octa();
}
}
module _3d_honeycomb(cells, wall) {
translate([2, 2, 2])
for (xi = [0 : cells[0] - 1]) {
translate([xi * 4, 0, 0])
for (yi = [0 : cells[1] - 1]) {
translate([0, yi * 4, 0])
for (zi = [0 : cells[2] - 1]) {
offset = (zi % 2 == 0) ? 0 : 2;
translate([offset, offset, zi * 2])
_hollow_trunc_octa(wall=wall);
}
}
}
}
module 3d_honeycomb(dims, wall=0.2) {
intersection() {
translate([-2, -2, -2])
rotate([45, 0, 0])
_3d_honeycomb([
ceil(dims[0] / 4) + 1,
ceil(dims[1] / 4) + 1,
ceil(dims[2] / 2) + 1,
], wall=wall);
cube(dims);
}
}
//scale(2)
3d_honeycomb([16, 16, 16], wall=0.1);
Binary file not shown.
@@ -0,0 +1 @@
This thing was created by Thingiverse user CreativeTools, and is licensed under Creative Commons - Attribution - No Derivatives
@@ -0,0 +1 @@
#3DBenchy - The jolly 3D printing torture-test by CreativeTools.se by CreativeTools on Thingiverse: https://www.thingiverse.com/thing:763622
Binary file not shown.
Binary file not shown.
Binary file not shown.
+99
View File
@@ -0,0 +1,99 @@
diameter = 140;
leg_width = 5;
leg_height = 10;
deflector_width = 10;
center_empty_diameter = 30;
num_rings = 4;
base_height = 3;
spike_top_diameter = 1;
spike_height = 10;
spike_spacing = 10;
$fn = 150;
epsilon = 0.1;
legs(diameter, leg_height, leg_width, deflector_width, center_empty_diameter)
base(diameter, base_height, leg_width, num_rings)
for (i = [1 : num_rings]) {
ring_offset = diameter / num_rings;
spikes((ring_offset * i) - leg_width, spike_height, leg_width, spike_top_diameter, spike_spacing);
}
module legs(diameter, height, leg_width, curve_width, center_empty_diameter) {
color("yellow")
union() {
length = (diameter - center_empty_diameter) / 2;
width = leg_width + curve_width;
for (i = [0, 90, 180, 270]) {
rotate([0, 0, i]) {
translate([-width + (leg_width / 2), center_empty_diameter / 2, 0]) {
difference() {
cube([width, length, height]);
translate([0, -epsilon, height]) {
rotate([-90, 0, 0]) {
cylinder(r=curve_width, h=length + 2 * epsilon);
}
}
}
}
}
}
}
translate([0, 0, height]) children();
}
module base(diameter, height, width, num_rings) {
color("green")
union() {
ring_offset = diameter / num_rings;
for (i = [1 : num_rings]) {
ring(ring_offset * i, height, width);
}
intersection() {
inner_base(diameter, height, width);
x(diameter, height, width);
}
}
translate([0, 0, height]) children();
}
module ring(diameter, height, width) {
difference() {
cylinder(h=height, d=diameter);
inner_base(diameter, height, width);
}
}
module inner_base(diameter, height, width) {
translate([0, 0, -epsilon]) {
cylinder(h=height + (epsilon * 2), d=diameter - (width * 2));
}
}
module x(diameter, height, width) {
translate([-diameter / 2, -width / 2, 0]) {
cube([diameter, width, height]);
}
rotate([0, 0, 90]) {
translate([-diameter / 2, -width / 2, 0]) {
cube([diameter, width, height]);
}
}
}
module spikes(diameter, height, bottom_width, top_width, spacing) {
circumference = diameter * PI;
spikes = floor(circumference / (bottom_width + spacing));
color("blue")
for (i = [0 : spikes - 1]) {
rotate([0, 0, i * (360 / spikes)]) {
translate([diameter / 2, 0, 0]) {
cylinder(h=height, d1=bottom_width, d2=top_width);
}
}
}
}
BIN
View File
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More