102 lines
3.8 KiB
OpenSCAD
102 lines
3.8 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=200;
|
||
|
|
||
|
screen_mount();
|
||
|
|
||
|
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);
|
||
|
};
|
||
|
};
|