diff --git a/camera_side_mount.scad b/camera_side_mount.scad index cfc64b0..d45f95c 100644 --- a/camera_side_mount.scad +++ b/camera_side_mount.scad @@ -3,13 +3,15 @@ // 24mm width faces front when assembled // RENDER MODE - Change this to switch between views -render_mode = "assembly"; // Options: "assembly" or "flat" render_mode = "flat"; // Options: "assembly" or "flat" +// ASSEMBLY ADJUSTMENT - Manual Z position offset for camera inserts +insert_z_offset = 15; // mm - adjust vertical position of camera inserts (positive = higher) + // Parameters - Camera hole spacing: rotated 90° CW hole_spacing_x = 25; // mm (horizontal distance between hole centers) hole_spacing_y = 24; // mm (vertical distance between hole centers) -bottom_hole_clearance = 4; // mm (clearance from base plate to bottom hole center when standing) +bottom_hole_clearance = 3; // mm (clearance from base plate to bottom hole center when standing) hole_edge_margin_x = 3; // mm (side margin) hole_edge_margin_y = bottom_hole_clearance; // mm (bottom margin = bottom clearance) mount_width = hole_spacing_x + 2 * hole_edge_margin_x; // 31mm total width @@ -24,13 +26,14 @@ tripod_hole_diameter = 6.35; // mm (1/4" standard tripod screw, radius=3.175mm) // Notch parameters for joining - wider for better rigidity and alignment notch_width = 12; // mm width of the notch/slot (wider for stability) -notch_depth = 8; // mm depth of the slot in base plate +notch_depth = 3; // mm depth of the slot in base plate tab_height = notch_depth; // Height of the tab on insert // Total dimensions mount_area_width = mount_width * 2 + spacing; total_width = mount_area_width + left_margin + padding; // Left margin + right padding -total_height = mount_height + 2 * padding; +// Height should fit standing inserts (mount_width when rotated) with padding +total_height = mount_width + 2 * padding; // Standing insert is mount_width tall in Y direction // Base plate module with tripod hole and slots for inserts module base_plate() { @@ -42,13 +45,13 @@ module base_plate() { translate([left_margin, total_height / 2, -0.5]) cylinder(h = base_thickness + 1, d = tripod_hole_diameter, $fn = 30); - // Slot for first insert (offset from left by left_margin) - translate([left_margin + mount_width/2 - notch_width/2, padding - notch_depth, -0.5]) - cube([notch_width, notch_depth + 0.1, base_thickness + 1]); + // Slots for inserts - must match material_thickness when insert is rotated + // Centered on Y axis, sized to fit the 3mm thick insert tab perfectly + translate([left_margin + mount_width/2 - material_thickness/2, total_height/2 - notch_width/2, -0.5]) + cube([material_thickness, notch_width, base_thickness + 1]); - // Slot for second insert (right position) - translate([left_margin + mount_width + spacing + mount_width/2 - notch_width/2, padding - notch_depth, -0.5]) - cube([notch_width, notch_depth + 0.1, base_thickness + 1]); + translate([left_margin + mount_width + spacing + mount_width/2 - material_thickness/2, total_height/2 - notch_width/2, -0.5]) + cube([material_thickness, notch_width, base_thickness + 1]); } } @@ -88,14 +91,16 @@ module complete_assembly() { // Base plate base_plate(); - // First camera mount insert (left) - standing vertically, 24mm faces front - translate([left_margin + mount_width/2 - material_thickness/2, padding, base_thickness]) + // First camera mount insert (left) - sits flush on base plate, centered on Y + translate([left_margin + mount_width/2, total_height/2, base_thickness + insert_z_offset]) rotate([90, 0, 90]) + translate([-mount_width/2, -mount_width/2, -material_thickness/2]) camera_mount_insert(); - // Second camera mount insert (right) - standing vertically, 24mm faces front - translate([left_margin + mount_width + spacing + mount_width/2 - material_thickness/2, padding, base_thickness]) + // Second camera mount insert (right) - sits flush on base plate, centered on Y + translate([left_margin + mount_width + spacing + mount_width/2, total_height/2, base_thickness + insert_z_offset]) rotate([90, 0, 90]) + translate([-mount_width/2, -mount_width/2, -material_thickness/2]) camera_mount_insert(); }