init
This commit is contained in:
commit
5c5975cdce
|
@ -0,0 +1,3 @@
|
|||
*.blend filter=lfs diff=lfs merge=lfs -text
|
||||
*.blend1 filter=lfs diff=lfs merge=lfs -text
|
||||
*.stl filter=lfs diff=lfs merge=lfs -text
|
|
@ -0,0 +1 @@
|
|||
*.gcode
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,102 @@
|
|||
$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);
|
||||
};
|
||||
};
|
Binary file not shown.
|
@ -0,0 +1,17 @@
|
|||
// All units in mm
|
||||
$hole_diameter = 79.67;
|
||||
$overhang_width = 5.0;
|
||||
$inner_thickness = 3.0;
|
||||
$inner_height = 20.0;
|
||||
$outer_height = 5.0;
|
||||
// Smoothness
|
||||
$fn=400;
|
||||
|
||||
difference() {
|
||||
union() {
|
||||
cylinder(h=$outer_height, d=$hole_diameter + $overhang_width * 2);
|
||||
cylinder(h=$inner_height + $outer_height, d=$hole_diameter);
|
||||
};
|
||||
translate([0, 0, $inner_height * -1])
|
||||
cylinder(h=$inner_height * 3, d=$hole_diameter - $inner_thickness * 2);
|
||||
};
|
Binary file not shown.
|
@ -0,0 +1,27 @@
|
|||
$width = 220;
|
||||
$height = 100;
|
||||
|
||||
difference() {
|
||||
linear_extrude(5)
|
||||
square([$width, $height]);
|
||||
for (i=[0:1:5]) {
|
||||
$even_row = i%2;
|
||||
translate([0, 10 + i * 16, -5]) row_cylinders(diameter=14, gap=6, x_offset=$even_row*4);
|
||||
}
|
||||
};
|
||||
|
||||
module row_cylinders(diameter=20, gap=10, x_offset=0, length=220) {
|
||||
// One spacing will be split between the start and the end.
|
||||
$count = floor((length - 2 * x_offset) / (diameter + gap));
|
||||
// It's not always possible to perfectly fit all the columns, sometimes
|
||||
// you end up with extra space. In that case, the space will be split
|
||||
// into the start and the end.
|
||||
$leftover = (length - 2 * x_offset) % (diameter + gap);
|
||||
|
||||
for (dx=[(diameter + gap + $leftover) / 2 + x_offset
|
||||
: diameter + gap
|
||||
: length - ((gap + $leftover) / 2 + x_offset)
|
||||
]) {
|
||||
translate([dx, 0, 0]) cylinder(h=20, d=diameter);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,38 @@
|
|||
// Base is the bottom part where the recipe will go into
|
||||
$base_width = 150;
|
||||
$base_depth = 14;
|
||||
$base_height = 14;
|
||||
|
||||
// The size of the gap the recipe needs to fit into
|
||||
$recipe_gap_lip = 8;
|
||||
$recipe_gap = 5;
|
||||
$recipe_angle = 30; // degrees
|
||||
|
||||
// The support part in the back to hold the recipe
|
||||
$frame_width = 20;
|
||||
$frame_depth = $base_depth / 2 - $recipe_gap / 2;
|
||||
$frame_height = 180;
|
||||
|
||||
$support_width = $frame_width;
|
||||
$support_depth = $frame_height * cos(90 - $recipe_angle);
|
||||
$support_height = 5;
|
||||
|
||||
translate([$base_width / 2 - $support_width / 2, -1 * $support_depth, 0])
|
||||
support();
|
||||
rotate([$recipe_angle, 0, 0])
|
||||
holder();
|
||||
|
||||
|
||||
module support() {
|
||||
cube([$support_width, $support_depth, $support_height]);
|
||||
};
|
||||
|
||||
module holder() {
|
||||
translate([$base_width / 2 - $frame_width / 2, 0, 0])
|
||||
cube([$frame_width, $frame_depth, $frame_height]);
|
||||
difference() {
|
||||
cube([$base_width, $base_depth, $base_height]);
|
||||
translate([-1 * $base_width, $base_depth / 2 - $recipe_gap / 2, $base_height - $recipe_gap_lip])
|
||||
cube([$base_width * 3, $recipe_gap, $base_height * 2]);
|
||||
};
|
||||
};
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue