fix: add lid locating lip for flush fit

This commit is contained in:
2026-05-23 00:44:14 +00:00
parent 5f8b256b6b
commit 2f9020f672
4 changed files with 39 additions and 7 deletions
Binary file not shown.
Binary file not shown.
Binary file not shown.
+39 -7
View File
@@ -1,5 +1,5 @@
// RemoteRig — Dual-ESP Tripod Case v3
// v3c changes: screw-tightened tripod clamp + horizontal two-screw flat mounting plate interface.
// v3d changes: screw-tightened tripod clamp + horizontal two-screw mount + flush locating-lip lid.
// Coordinate system: all case/lid geometry uses bottom-origin Z.
$fn = 36;
@@ -21,6 +21,12 @@ outer_d = inner_d + wall*2 + tol*2; // 32.8mm
outer_h = inner_h + wall*2; // 19mm
corner_r = 2.5;
// Lid fit parameters
lid_top_thick = 2.0;
lid_lip_h = 1.6;
lid_clearance = 0.6; // clearance around underside locating lip
lid_lip_wall = 1.2; // thickness of perimeter lip/frame
// Tripod clamp parameters
pole_dia = 35; // nominal stand/pole diameter
clamp_thick = 4.0; // ring wall thickness
@@ -133,18 +139,44 @@ module case_body() {
}
}
module lid_locating_lip() {
// Thin underside frame that drops into the case opening. This registers the
// lid so it cannot skate/rock on the rim, while staying clear of screw posts.
lip_outer_w = inner_w + tol - lid_clearance;
lip_outer_d = inner_d + tol - lid_clearance;
lip_inner_w = lip_outer_w - lid_lip_wall*2;
lip_inner_d = lip_outer_d - lid_lip_wall*2;
translate([0, 0, -lid_lip_h])
difference() {
rounded_cube0(lip_outer_w, lip_outer_d, lid_lip_h, 1.0);
translate([0, 0, -0.1])
rounded_cube0(lip_inner_w, lip_inner_d, lid_lip_h + 0.2, 0.7);
// Corner reliefs so the lip doesn't interfere with screw posts.
for (x = [-1, 1], y = [-1, 1]) {
translate([x*(outer_w/2 - 5), y*(outer_d/2 - 5), lid_lip_h/2])
cylinder(d=7.0, h=lid_lip_h + 0.4, center=true, $fn=24);
}
}
}
module case_lid() {
difference() {
rounded_cube0(outer_w, outer_d, wall*2, 1.8);
union() {
// Thinner top cover; underside lip handles registration.
rounded_cube0(outer_w, outer_d, lid_top_thick, 0.8);
lid_locating_lip();
}
for (x = [-1, 1], y = [-1, 1]) {
translate([x*(outer_w/2 - 5), y*(outer_d/2 - 5), -0.5])
cylinder(d=2.4, h=wall*2 + 1, center=false, $fn=20);
translate([x*(outer_w/2 - 5), y*(outer_d/2 - 5), -lid_lip_h - 0.5])
cylinder(d=2.4, h=lid_top_thick + lid_lip_h + 1, center=false, $fn=20);
}
for (x = [-outer_w/4, 0, outer_w/4]) {
translate([x, 0, wall*2/2])
cube([8, outer_d*0.6, wall*3], center=true);
translate([x, 0, lid_top_thick/2])
cube([8, outer_d*0.6, lid_top_thick*3], center=true);
}
}
}
@@ -213,7 +245,7 @@ module tripod_clip() {
module full_case() {
case_body();
translate([0, 0, outer_h + 2]) case_lid();
translate([0, 0, outer_h]) case_lid();
translate([0, outer_d/2 + pole_dia/2 + clamp_thick + 8, outer_h/2])
rotate([90, 0, 0]) tripod_clamp();
}