Initial import

This commit is contained in:
Ian Gulliver
2026-07-12 11:43:06 -07:00
commit 7bb8b65e54
9 changed files with 301 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
+63
View File
@@ -0,0 +1,63 @@
$fn = 500;
//cylinder(h=10, d=11);
// 4.5 thick under screw
// 12 diameter screw head hole (~10.8 screw head)
e = 0.02;
w = 50.8;
difference() {
union() {
hull() {
for (x=[0, 15], y=[0, w - 1])
translate([x, y, 0]) {
translate([0.5, 0.5, 0])
cylinder(h=1, d=1);
translate([0.5, 0.5, 1.0])
sphere(d=1);
}
for (x=[0, 15])
translate([x, 0, 0]) {
translate([0.5, w / 2, 15])
rotate([0, 90, 0])
rotate_extrude()
translate([7, 0, 0])
circle(d=1);
}
}
for (x=[-0.25, 11.25], y=[12.7 - (6.5 / 2), w - 12.7 - (6.5 / 2)]) {
translate([x, y, 0])
rotate([-90, 0, 0])
intersection() {
translate([0.5, -0.5, 0])
hull()
for (p=[[0, 0], [1.5, 1.5], [2.5, 1.5], [4, 0]]) {
translate([p[0], p[1], 0])
cylinder(h=6.5, d=1);
}
cube([10, 10, 10]);
}
}
}
translate([-e, w / 2, 15])
rotate([0, 90, 0])
cylinder(h=10, d1=8.2, d2=8.1);
for (y=[12.7, w - 12.7])
translate([0, y, 0]) {
translate([8, 0, -e]) {
cylinder(h=20, d=6.8);
translate([0, 0, 4])
cylinder(h=20, d=12);
}
}
}
BIN
View File
Binary file not shown.
+44
View File
@@ -0,0 +1,44 @@
// ECHO: "max_radius=", 13.6
// ECHO: "total_height=", 28.9
// clearance radius = 4 + 13.6 = 17.6
// clearance diameter = 17.6 * 2 = 35.2
// 2020 width is 50.8
// linear bearing od=15, l=24
// 15 + 15 + 35.2 = 65.2 === can't go side-by-side
$fn = 500;
difference() {
color("red", 0.7)
hull() {
for(y=[6, 44.8], z=[6, 34.5]) {
translate([0, y, z])
rotate([0, 90, 0])
cylinder(h=54, r=6);
}
}
for (y=[9.4, 41.4]) {
translate([-1, y, 9])
rotate([0, 90, 0])
cylinder(h=60, d=13);
}
for (x=[2, 28], y=[9.4, 41.4]) {
translate([x, y, 9])
rotate([0, 90, 0])
cylinder(h=24, d=15);
}
translate([12, (50.8 / 2), 34])
rotate([0, 90, 0])
cylinder(h=30, r=20);
translate([2, (50.8 / 2), 34])
rotate([0, 90, 0])
cylinder(h=50, d=8);
}
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
+107
View File
@@ -0,0 +1,107 @@
$fn = 300;
// * c w
part = "w";
slot_center_spacing = 25.4;
ramp_height = 5;
ramp_slot_mid = 4.25;
ramp_depth = 2.5;
deramp_height = 1;
deramp_depth = (ramp_depth / ramp_height) * (ramp_height - deramp_height);
bearing_radius = 8.1;
bearing_underhang = 1;
bulk_radius = 4;
bearing_height = 5;
bearing_count = 2;
core_radius = 9.5;
core_bump_radius = 1;
core_bump_height = 2;
e = 0.02;
inner_radius = bearing_radius - bearing_underhang;
echo("inner_radius=", inner_radius);
outer_radius = inner_radius + bulk_radius;
echo("outer_radius=", outer_radius);
echo("max_radius=", outer_radius + ramp_depth);
mid = slot_center_spacing - ramp_slot_mid - ramp_slot_mid;
total_height = deramp_height + ramp_height + mid + ramp_height + deramp_height;
echo("total_height=", total_height);
bearing_portion = mid / bearing_count;
if (part == "*" || part == "c") {
color("grey", 0.6)
intersection() {
wheel();
core_mask();
}
}
if (part == "*" || part == "w") {
color("red", 0.6)
difference() {
wheel();
core_mask();
}
}
module core_mask() {
rotate_extrude()
polygon([
[0, total_height + e],
[0, 0 - e],
[core_radius + core_bump_radius, 0 - e],
[core_radius + core_bump_radius, 0],
[core_radius, core_bump_height],
[core_radius, total_height - core_bump_height],
[core_radius + core_bump_radius, total_height],
[core_radius + core_bump_radius, total_height + e],
]);
}
module wheel() {
// deramp
// ramp
// [tip]
// ramp
// mid
// ramp
// [tip]
// ramp
// deramp
difference() {
rotate_extrude()
polygon([
[inner_radius, total_height],
[inner_radius, 0],
[outer_radius + deramp_depth, 0],
[outer_radius + ramp_depth, deramp_height],
[outer_radius, deramp_height + ramp_height],
[outer_radius, deramp_height + ramp_height + mid],
[outer_radius + ramp_depth, deramp_height + ramp_height + mid + ramp_height],
[outer_radius + deramp_depth, total_height],
]);
for (b = [0 : bearing_count - 1]) {
translate([0, 0, deramp_height + ramp_height + (b * bearing_portion)])
translate([0, 0, bearing_portion / 2 - bearing_height / 2])
cylinder(h=bearing_height, r=bearing_radius);
}
}
}
+37
View File
@@ -0,0 +1,37 @@
$fn = 200;
difference() {
union() {
rotate_extrude() {
translate([8, 1, 0])
circle(d=2);
translate([44, 1, 0])
circle(d=2);
translate([8, 0, 0])
square([36, 1]);
}
translate([0, 0, 10])
scale([1, 1, 0.7])
rotate_extrude() {
translate([9, 1, 0])
circle(d=4);
translate([43, 1, 0])
circle(d=4);
}
translate([0, 0, 1])
cylinder(h=10, d=90);
}
cylinder(h=16, d=14);
translate([0, 0, 2])
rotate_extrude() {
translate([11, 0, 0])
square([30, 16]);
}
}
+37
View File
@@ -0,0 +1,37 @@
$fn = 400;
difference() {
union() {
rotate_extrude() {
translate([4, 1, 0])
circle(d=2);
translate([40, 1, 0])
circle(d=2);
translate([4, 0, 0])
square([36, 1]);
}
translate([0, 0, 90.5])
scale([1, 1, 0.7])
rotate_extrude() {
translate([5, 1, 0])
circle(d=4);
translate([39, 1, 0])
circle(d=4);
}
translate([0, 0, 1])
cylinder(h=90, d=82);
}
cylinder(h=92, d=6);
translate([0, 0, 5])
rotate_extrude() {
translate([7, 0, 0])
square([30, 92]);
}
}