3D-prints/display-camera-pi.scad

123 lines
4.7 KiB
OpenSCAD

$triangle_width = 65;
$triangle_height = 40;
$triangle_thickness = 5.87;
$triangle_screw_hole_diameter = 4.7;
$triangle_x_hole_gap = 40;
$triangle_y_hole_gap = 20;
$triangle_x_offset = 19;
$triangle_y_offset = 5;
$fn=10;
use <Thread_Library.scad>
camera_mount();
$camera_mount_thickness = 1;
$camera_screw_gap_y = 25.2;
$camera_screw_diameter = 2.75;
module camera_mount() {
difference() {
cylinder(h=$camera_mount_thickness, d=$camera_screw_gap_y);
translate([0, 0, -0.1])
cylinder(h=3 * $camera_mount_thickness, d=$camera_screw_gap_y - $camera_screw_diameter * 3);
rotate([0, 0, 90])
translate([$camera_screw_gap_y / 2 - $camera_screw_diameter / 1.33, 0, -0.1])
cylinder(h=3 * $camera_mount_thickness, d=$camera_screw_diameter);
rotate([0, 0, -90])
translate([$camera_screw_gap_y / 2 - $camera_screw_diameter / 1.33, 0, -0.1])
cylinder(h=3 * $camera_mount_thickness, d=$camera_screw_diameter);
translate([-1 * $camera_screw_gap_y - $camera_screw_diameter / 1.33, -1 * $camera_screw_gap_y / 2, -0.1])
cube([$camera_screw_gap_y, $camera_screw_gap_y, 3 * $camera_mount_thickness]);
};
}
module attachment_point() {
difference() {
linear_extrude($triangle_thickness)
polygon([[0, 0], [$triangle_width, $triangle_height], [$triangle_width, 0]]);
translate([$triangle_x_offset, $triangle_y_offset, 0])
union() {
hole_puncher();
translate([$triangle_x_hole_gap, 0, 0]) hole_puncher();
translate([$triangle_x_hole_gap, $triangle_y_hole_gap, 0]) hole_puncher();
};
translate([$rounded_nose, 4.234, -0.2])
rotate([0, 0, 120])
nose_rounding();
translate([0, $triangle_height - $triangle_y_offset * 1.5, -0.1])
cube([100, 100, $triangle_thickness * 3]);
translate([45, 12, -0.1])
cylinder(h=100, r=10);
translate([28, 8, -0.1])
cylinder(h=100, r=4);
};
};
$screen_enter_diameter = 10;
$screen_lock_diameter = 6.25;
$screen_enter_gap = 30 + $screen_lock_diameter;
$screen_enter_y_offset = 14;
$screen_mount_width = 50;
$screen_mount_height = 60;
$screen_mount_thickness = 5;
$screen_side_cutout_size = 36;
module screen_mount() {
difference() {
cube([$screen_mount_width, $screen_mount_height, $screen_mount_thickness]);
translate([$screen_mount_width / 2, $screen_enter_y_offset, -0.1])
cylinder(h=$screen_mount_thickness * 2, d=$screen_enter_diameter);
translate([$screen_mount_width / 2, $screen_enter_y_offset + $screen_enter_gap, -0.1])
cylinder(h=$screen_mount_thickness * 2, d=$screen_enter_diameter);
for (i = [0:1:7]) {
mount_hole_puncher(i * -1);
};
translate([$screen_mount_width, $screen_mount_height / 2, -0.1])
cylinder(h=$screen_mount_thickness * 2, d=$screen_side_cutout_size);
translate([0, $screen_mount_height / 2, -0.1])
cylinder(h=$screen_mount_thickness * 2, d=$screen_side_cutout_size);
/*
translate([25, 0, -0.1])
rotate([0, 0, -30])
cube([$screen_mount_width, $screen_mount_height, $screen_mount_thickness * 2]);
translate([-10, -20, -0.1])
rotate([0, 0, 30])
cube([$screen_mount_width, $screen_mount_height, $screen_mount_thickness * 2]);
translate([0, $screen_mount_height, 0])
mirror([0, 1, 0])
union() {
translate([25, 0, -0.1])
rotate([0, 0, -30])
cube([$screen_mount_width, $screen_mount_height, $screen_mount_thickness * 2]);
translate([-10, -20, -0.1])
rotate([0, 0, 30])
cube([$screen_mount_width, $screen_mount_height, $screen_mount_thickness * 2]);
};
*/
};
};
module mount_hole_puncher($gap) {
translate([$screen_mount_width / 2, $screen_enter_y_offset + $gap, -0.1])
cylinder(h=$screen_mount_thickness * 2, d=$screen_lock_diameter);
translate([$screen_mount_width / 2, $screen_enter_y_offset + $screen_enter_gap + $gap, -0.1])
cylinder(h=$screen_mount_thickness * 2, d=$screen_lock_diameter);
};
module hole_puncher() {
translate([0, 0, $triangle_thickness * -1])
cylinder(h=$triangle_thickness * 3, d=$triangle_screw_hole_diameter);
};
$rounded_nose = 25;
module nose_rounding() {
difference() {
color("red") cube([$rounded_nose, $rounded_nose, $triangle_thickness * 2]);
translate([-3, 0, $triangle_thickness / -2])
color("blue")
cylinder(h=$triangle_thickness * 3, d=$rounded_nose);
};
};