generated from CubeCraft-Creations/Tracehound
fix: make camera case cutouts visible
This commit is contained in:
@@ -166,6 +166,9 @@ module camera_node_body_v4() {
|
||||
|
||||
// ----- Printable front service lid / status panel -----
|
||||
module camera_node_lid_v4() {
|
||||
panel_through_d = lid_t + lid_lip_t + 2.4;
|
||||
panel_through_y = 0.25;
|
||||
|
||||
difference() {
|
||||
union() {
|
||||
// Visible full-height flush panel; restrained and not a busy slab.
|
||||
@@ -179,29 +182,34 @@ module camera_node_lid_v4() {
|
||||
// OLED window and shallow black-bezel-style recess near the top.
|
||||
translate([0, -lid_t/2 + 0.35, oled_z])
|
||||
xz_rounded_prism(oled_bezel_w, 0.9, oled_bezel_h, r=1.3);
|
||||
translate([0, -0.2, oled_z])
|
||||
xz_rounded_prism(oled_window_w, lid_t + lid_lip_t + 0.9, oled_window_h, r=0.5);
|
||||
translate([0, panel_through_y, oled_z])
|
||||
xz_rounded_prism(oled_window_w, panel_through_d, oled_window_h, r=0.5);
|
||||
|
||||
// Subtle secondary indicators flanking the rocker, below the OLED bezel.
|
||||
translate([-15.0, -0.2, 33.0]) y_cylinder(d=led_hole_d, h=lid_t + lid_lip_t + 1.0);
|
||||
translate([ 15.0, -0.2, 33.0]) y_cylinder(d=led_hole_d, h=lid_t + lid_lip_t + 1.0);
|
||||
translate([-15.0, panel_through_y, 33.0]) y_cylinder(d=led_hole_d, h=panel_through_d);
|
||||
translate([ 15.0, panel_through_y, 33.0]) y_cylinder(d=led_hole_d, h=panel_through_d);
|
||||
|
||||
// Small rocker lower on the panel, offset away from the OLED, screws, and slots.
|
||||
translate([0, -0.2, 33.0])
|
||||
xz_rounded_prism(rocker_w, lid_t + lid_lip_t + 1.0, rocker_h, r=0.8);
|
||||
translate([0, panel_through_y, 33.0])
|
||||
xz_rounded_prism(rocker_w, panel_through_d, rocker_h, r=0.8);
|
||||
|
||||
// Bottom-center cable relief in the removable front panel so the cable
|
||||
// exit is obvious and not visually hidden by the service lid.
|
||||
translate([0, panel_through_y, 0.8])
|
||||
xz_rounded_prism(cable_notch_w, panel_through_d, cable_notch_h, r=1.8);
|
||||
|
||||
// Two long rounded horizontal slots near the lower front, matching the reference.
|
||||
translate([0, -0.2, 17.0])
|
||||
xz_rounded_prism(front_slot_w, lid_t + lid_lip_t + 1.0, front_slot_h, r=front_slot_h/2);
|
||||
translate([0, -0.2, 11.0])
|
||||
xz_rounded_prism(front_slot_w, lid_t + lid_lip_t + 1.0, front_slot_h, r=front_slot_h/2);
|
||||
translate([0, panel_through_y, 17.0])
|
||||
xz_rounded_prism(front_slot_w, panel_through_d, front_slot_h, r=front_slot_h/2 - 0.15);
|
||||
translate([0, panel_through_y, 11.0])
|
||||
xz_rounded_prism(front_slot_w, panel_through_d, front_slot_h, r=front_slot_h/2 - 0.15);
|
||||
|
||||
// Screw clearance/counterbore holes.
|
||||
screw_x = lid_w/2 - 5.0;
|
||||
screw_z_low = 5.0;
|
||||
screw_z_high = lid_h - screw_z_low;
|
||||
for (x=[-screw_x, screw_x], z=[screw_z_low, screw_z_high]) {
|
||||
translate([x, -0.2, z]) y_cylinder(d=screw_d + 0.4, h=lid_t + lid_lip_t + 1.0);
|
||||
translate([x, panel_through_y, z]) y_cylinder(d=screw_d + 0.4, h=panel_through_d);
|
||||
translate([x, -lid_t/2 + 0.55, z]) y_cylinder(d=screw_head_d, h=1.3);
|
||||
}
|
||||
}
|
||||
@@ -224,13 +232,24 @@ module camera_node_preview_v4(show_lid=true) {
|
||||
color([0,0.2,0.8,0.35]) translate([9, -1, 45]) cube([24.7, 14.3, 12], center=true);
|
||||
}
|
||||
|
||||
// Non-print review layout: separates the body and front lid while keeping both
|
||||
// front faces oriented toward -Y. Use this STL when checking that the screen,
|
||||
// LED, rocker, cable, and lower-slot cutouts are visible in a slicer.
|
||||
module camera_node_front_review_v4() {
|
||||
translate([-34, 0, 0]) color("lightgray") camera_node_body_v4();
|
||||
translate([34, -case_d/2 + lid_t/2 + 0.03, (case_h - lid_h)/2])
|
||||
color("gainsboro") camera_node_lid_v4();
|
||||
}
|
||||
|
||||
// Select part to render from OpenSCAD CLI with: -D 'part="body"'
|
||||
part = "preview"; // "body", "lid", or "preview"
|
||||
part = "preview"; // "body", "lid", "preview", or "front_review"
|
||||
|
||||
if (part == "body") {
|
||||
camera_node_body_v4();
|
||||
} else if (part == "lid") {
|
||||
camera_node_lid_v4();
|
||||
} else if (part == "front_review") {
|
||||
camera_node_front_review_v4();
|
||||
} else {
|
||||
camera_node_preview_v4();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user