Case: add TPU feet held by the base screws
Each foot has a spigot that locates in the base's screw counterbore and a pocket for the screw head; base screws become M3x10. Base unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
494b106f0c
commit
9853841a21
3 files changed
+41
-3
No files matched your search
@@ -62,6 +62,14 @@ screw_d = 3.4; // M3 clearance
|
||||
head_d = 6.2; // M3 head counterbore in the base
|
||||
head_depth = 2;
|
||||
|
||||
/* [TPU feet, held by the base screws (use M3x10 instead of M3x8)] */
|
||||
foot_d = 14; // fits inside the base outline at the rear corners
|
||||
foot_h = 4.5; // below the base
|
||||
foot_spigot_h = 1.8; // locates in the base's screw counterbore
|
||||
foot_spigot_d = head_d - 0.2;
|
||||
foot_head_d = 6.6; // pocket for the screw head (from below)
|
||||
foot_head_depth = 3.5; // M3 socket head is 3 mm tall
|
||||
|
||||
/* [WEMOS D1 R1 (Arduino UNO footprint)] */
|
||||
board_l = 68.58; // along the case depth, connector edge at the back
|
||||
board_w = 53.34;
|
||||
@@ -227,6 +235,27 @@ module base() {
|
||||
|
||||
function board_xy(h) = [board_x0 + h[1], board_conn_y - h[0], 0];
|
||||
|
||||
// One foot, top face at z = 0 (against the base's underside), centred on a screw.
|
||||
module foot() {
|
||||
difference() {
|
||||
union() {
|
||||
translate([0, 0, -foot_h]) cylinder(d = foot_d, h = foot_h);
|
||||
translate([0, 0, -0.01]) cylinder(d = foot_spigot_d, h = foot_spigot_h + 0.01);
|
||||
}
|
||||
translate([0, 0, -foot_h - 1]) cylinder(d = screw_d, h = foot_h + foot_spigot_h + 2);
|
||||
translate([0, 0, -foot_h - 1]) cylinder(d = foot_head_d, h = foot_head_depth + 1);
|
||||
// soften the bottom edge
|
||||
translate([0, 0, -foot_h - 0.01]) difference() {
|
||||
cylinder(d = foot_d + 1, h = 1);
|
||||
cylinder(d1 = foot_d - 2, d2 = foot_d + 0.01, h = 1.01);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
module feet_in_place() {
|
||||
for (p = base_screws) translate([p[0], p[1], -base_t]) foot();
|
||||
}
|
||||
|
||||
module tie_anchor() {
|
||||
difference() {
|
||||
translate([-5, -3, 0]) cube([10, 6, 5]);
|
||||
@@ -265,6 +294,7 @@ if (part == "assembly") {
|
||||
color("SlateGray", 0.5) body();
|
||||
color("DimGray") bezel();
|
||||
color("Gainsboro") base();
|
||||
color("Black") feet_in_place();
|
||||
color("SeaGreen") display_dummy();
|
||||
color("SteelBlue") board_dummy();
|
||||
} else if (part == "section") {
|
||||
@@ -283,6 +313,9 @@ if (part == "assembly") {
|
||||
translate([0, depth, height]) rotate([180, 0, 0]) body(); // top on the bed
|
||||
} else if (part == "bezel") {
|
||||
translate([0, 0, -lip]) multmatrix(M) bezel(); // front face on the bed
|
||||
} else if (part == "feet") {
|
||||
for (i = [0 : len(base_screws) - 1]) // 4 feet, flat side down
|
||||
translate([i * (foot_d + 5), 0, foot_h]) foot();
|
||||
} else if (part == "base") {
|
||||
translate([0, 0, base_t]) base();
|
||||
}
|
||||
@@ -294,6 +327,7 @@ else if (part == "check_body_base") intersection() { body(); base(); }
|
||||
else if (part == "check_bezel_base") intersection() { bezel(); base(); }
|
||||
else if (part == "check_board") intersection() { union() { body(); bezel(); base(); display_dummy(); } board_dummy(); }
|
||||
else if (part == "check_display_base") intersection() { base(); display_dummy(); }
|
||||
else if (part == "check_feet_base") intersection() { base(); feet_in_place(); }
|
||||
// The bezel slides in from below along the panel: sweep it (with the display) down and check.
|
||||
else if (part == "check_insertion") intersection() {
|
||||
body();
|
||||
|
||||
Reference in new issue
Block a user