fixed the nut & finished the camera mount
This commit is contained in:
parent
e826c8bd86
commit
1a4ae271a7
|
@ -1,3 +1,17 @@
|
||||||
|
/** Parameters */
|
||||||
|
$camera_mount = true;
|
||||||
|
$base = true;
|
||||||
|
$screen_mount = true;
|
||||||
|
$arm_pieces = 1;
|
||||||
|
$screws = 1;
|
||||||
|
$nuts = 1;
|
||||||
|
/** Scale nuts up slightly for easier fit and less friction. */
|
||||||
|
$nut_scale = 1.05;
|
||||||
|
$nut_bumps = false;
|
||||||
|
|
||||||
|
/** Code */
|
||||||
|
module __no_more_parameters() {};
|
||||||
|
|
||||||
$triangle_width = 65;
|
$triangle_width = 65;
|
||||||
$triangle_height = 40;
|
$triangle_height = 40;
|
||||||
$triangle_thickness = 5.87;
|
$triangle_thickness = 5.87;
|
||||||
|
@ -8,11 +22,21 @@ $triangle_y_hole_gap = 20;
|
||||||
$triangle_x_offset = 19;
|
$triangle_x_offset = 19;
|
||||||
$triangle_y_offset = 5;
|
$triangle_y_offset = 5;
|
||||||
|
|
||||||
$fn=10;
|
$fn = $preview ? 8 : 360;
|
||||||
|
$steps_per_turn = $preview ? 8 : 128;
|
||||||
|
|
||||||
use <Thread_Library.scad>
|
use <Thread_Library.scad>
|
||||||
|
|
||||||
|
if ($camera_mount) {
|
||||||
|
translate([0, -60, 0])
|
||||||
camera_mount();
|
camera_mount();
|
||||||
|
}
|
||||||
|
if ($base) {
|
||||||
|
translate([10, 0, 0]) attachment_point();
|
||||||
|
}
|
||||||
|
if ($screen_mount) {
|
||||||
|
translate([0, 40, 0]) screen_mount();
|
||||||
|
}
|
||||||
|
|
||||||
$camera_mount_thickness = 1;
|
$camera_mount_thickness = 1;
|
||||||
$camera_screw_gap_y = 25.2;
|
$camera_screw_gap_y = 25.2;
|
||||||
|
@ -31,6 +55,29 @@ module camera_mount() {
|
||||||
translate([-1 * $camera_screw_gap_y - $camera_screw_diameter / 1.33, -1 * $camera_screw_gap_y / 2, -0.1])
|
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]);
|
cube([$camera_screw_gap_y, $camera_screw_gap_y, 3 * $camera_mount_thickness]);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
$width = 20;
|
||||||
|
$thickness = 3;
|
||||||
|
$attachment_offset = 8.475;
|
||||||
|
|
||||||
|
difference() {
|
||||||
|
union() {
|
||||||
|
color("orange")
|
||||||
|
translate([$width + $attachment_offset, $thickness / 2, $width / 2])
|
||||||
|
rotate([90, 0, 0])
|
||||||
|
cylinder(d=$width, h=$thickness);
|
||||||
|
intersection() {
|
||||||
|
translate([$width + $attachment_offset, $thickness / 2, 0])
|
||||||
|
rotate([90, 0, 0])
|
||||||
|
cylinder(h=$thickness, d=$width * 2);
|
||||||
|
translate([$attachment_offset, -$thickness / 2, 0])
|
||||||
|
cube([$width, $thickness, $width]);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
translate([$width + $attachment_offset, $thickness / 2, $width / 2])
|
||||||
|
rotate([90, 0, 0])
|
||||||
|
thread_hole_punch();
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
module attachment_point() {
|
module attachment_point() {
|
||||||
|
@ -78,25 +125,6 @@ module screen_mount() {
|
||||||
cylinder(h=$screen_mount_thickness * 2, d=$screen_side_cutout_size);
|
cylinder(h=$screen_mount_thickness * 2, d=$screen_side_cutout_size);
|
||||||
translate([0, $screen_mount_height / 2, -0.1])
|
translate([0, $screen_mount_height / 2, -0.1])
|
||||||
cylinder(h=$screen_mount_thickness * 2, d=$screen_side_cutout_size);
|
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]);
|
|
||||||
};
|
|
||||||
*/
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -121,3 +149,86 @@ module nose_rounding() {
|
||||||
cylinder(h=$triangle_thickness * 3, d=$rounded_nose);
|
cylinder(h=$triangle_thickness * 3, d=$rounded_nose);
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
module thread(backlash=0.1) {
|
||||||
|
scale([0.5, 0.5, 0.5])
|
||||||
|
trapezoidThread(length=35, backlash=backlash, stepsPerTurn=$steps_per_turn);
|
||||||
|
}
|
||||||
|
|
||||||
|
$screw_head_diameter = 25;
|
||||||
|
$screw_head_thickness = 8;
|
||||||
|
$nut_head_bump_thickness = 0.5;
|
||||||
|
module nut_head(thickness=$screw_head_thickness) {
|
||||||
|
union() {
|
||||||
|
cylinder(d=$screw_head_diameter, h=thickness, $fn=6);
|
||||||
|
if ($nut_bumps)
|
||||||
|
translate([0, 0, thickness])
|
||||||
|
nut_bumps();
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
module nut_bumps() {
|
||||||
|
bump_length = $screw_head_diameter * 0.05;
|
||||||
|
bump_count = 24;
|
||||||
|
for (i = [0:1:bump_count - 1]) {
|
||||||
|
rotate([0, 0, i * (360 / bump_count)])
|
||||||
|
translate([$screw_head_diameter / 2 - bump_length * 3, 0, 0])
|
||||||
|
color("red")
|
||||||
|
cube([bump_length, $nut_head_bump_thickness, $nut_head_bump_thickness]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i = [0:1:$screws - 1]) {
|
||||||
|
translate([-$screw_head_diameter, i * ($screw_head_diameter + 5), 0])
|
||||||
|
union() {
|
||||||
|
translate([0, 0, $screw_head_thickness - 4])
|
||||||
|
thread();
|
||||||
|
nut_head();
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i = [0:1:$nuts - 1]) {
|
||||||
|
translate([-$screw_head_diameter * 2 - 8, i * ($screw_head_diameter + 5), 0])
|
||||||
|
difference() {
|
||||||
|
nut_head();
|
||||||
|
scale([$nut_scale, $nut_scale, 1])
|
||||||
|
translate([0, 0, -4]) thread(backlash=-0.2);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
module arm_piece() {
|
||||||
|
union() {
|
||||||
|
$thickness = 3;
|
||||||
|
$length = 60;
|
||||||
|
$width = 20;
|
||||||
|
|
||||||
|
difference() {
|
||||||
|
union() {
|
||||||
|
cube([$length, $width, $thickness]);
|
||||||
|
translate([0, $width / 2, 0])
|
||||||
|
cylinder(h=$thickness, d=$width);
|
||||||
|
translate([$length, $width / 2, 0])
|
||||||
|
cylinder(h=$thickness, d=$width);
|
||||||
|
};
|
||||||
|
translate([0, $width / 2, 0])
|
||||||
|
thread_hole_punch();
|
||||||
|
translate([$length, $width / 2, 0])
|
||||||
|
thread_hole_punch();
|
||||||
|
}
|
||||||
|
if ($nut_bumps) {
|
||||||
|
translate([0, $width / 2, $thickness])
|
||||||
|
nut_bumps();
|
||||||
|
translate([$length, $width / 2, $thickness])
|
||||||
|
nut_bumps();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for (i = [0:1:$arm_pieces - 1]) {
|
||||||
|
translate([0, (i + 1) * -40, 0])
|
||||||
|
arm_piece();
|
||||||
|
}
|
||||||
|
|
||||||
|
module thread_hole_punch(height=50) {
|
||||||
|
translate([0, 0, -0.1])
|
||||||
|
cylinder(d=13, h=height);
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue