update winche

This commit is contained in:
Laila van Reenen 2024-11-12 23:43:39 +01:00
parent 911837b174
commit 6ed38f8abf
Signed by: LailaTheElf
GPG Key ID: 1F4E6EE3E6DDF769
19 changed files with 54955 additions and 293827 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 215 KiB

13
3d/winche/functions.scad Normal file
View File

@ -0,0 +1,13 @@
function to_cardinal_2d(a, d) = [
d * sin(a),
d * cos(a)
];
function move_polar_2d(p, angle, dist) = to_cardinal_2d(angle, dist) + p;
function line_len_2d(p) = sqrt(p[0]*p[0] + p[1]*p[1]);
function line_len_3d(p) = sqrt(p[0]*p[0] + p[1]*p[1] + p[2]*p[2]);
function angle_2d(p) = atan2(p[0], p[1]);
function _tangent_single_angle_2d(to, r, other_side) = angle_2d(to) + ((other_side) ? -1 : 1)*acos(r / line_len_2d(to));
function tangent_single_2d(to, r, center, other_side=false) =
move_polar_2d(center, _tangent_single_angle_2d(to - center, r, other_side), r);

View File

@ -1,10 +1,15 @@
#!/bin/bash #!/bin/bash
OUT_DIR="$(dirname "$PWD")/print/winche"
function plot() { function plot() {
main_not_side=$(test $1 == "main" && echo 1 || echo 0) main_not_side=$(test $1 == "main" && echo 1 || echo 0)
openscad -o winche_$1_$2.stl -D main_not_side=$main_not_side -D plot=\"$2\" winche.scad openscad -o "$OUT_DIR/winche_$1_$2.stl" -D main_not_side=$main_not_side -D plot=\"$2\" winche.scad
} }
mkdir -p "$OUT_DIR"
rm "$OUT_DIR/"*.stl
plot main full plot main full
plot main sideL plot main sideL
plot main sideR plot main sideR

View File

@ -1,4 +1,5 @@
include <heat_set_inserts.scad> include <heat_set_inserts.scad>
include <functions.scad>
main_not_side = 0; // 0,1 main_not_side = 0; // 0,1
plot = "full"; // [sideL|sideR|mid|roller|base|full] plot = "full"; // [sideL|sideR|mid|roller|base|full]
@ -17,7 +18,7 @@ roller_side_tollerance = 0.5;
motor_shaft_d = 5; motor_shaft_d = 5;
motor_shaft_base_hole = 8.5; motor_shaft_base_hole = 8.5;
motor_shaft_offCenter = 6; motor_shaft_offCenter = 6.5;
motor_mount_sep = 31; motor_mount_sep = 31;
side_width = 50; side_width = 50;
@ -29,29 +30,23 @@ side_mount_hole_above_base = 1;
side_mount_hole_d = 4.2; side_mount_hole_d = 4.2;
side_bearing_od = 10.1; side_bearing_od = 10.1;
mid_arch_roler_cut_r = main_not_side ? 23 : 18; mid_arch_roler_cut_r = roller_flansh_d/2 - 3;
mid_winch_flansh_space = roller_flansh_t + 1; mid_winch_flansh_space = roller_flansh_t + 3;
mid_winch_tollerance = 0.5; mid_winch_tollerance = 0.5;
mid_diagnal_ratio = 0.75; mid_flat_top_ratio = 0.6;
// distance between left bottom of side and the center of the top arch side_flat_trangentPoint = tangent_single_2d(to=[0, 0], r=side_arch_r, center=[side_width/2, side_arch_center_h]);
side_corner_to_archCenter = sqrt((side_width/2)^2 + side_arch_center_h^2);
// angle from center of arch between left bottom and trangent point
side_flat_a = acos(side_arch_r / side_corner_to_archCenter);
// angle from center of horizantal and trangent point
side_arch_trangent_a = side_flat_a - acos((side_width/2) / side_corner_to_archCenter);
// tangent point coordiates
side_flat_trangentPoint_x = (side_width/2) - (side_arch_r*cos(side_arch_trangent_a));
side_flat_trangentPoint_y = side_arch_center_h + (side_arch_r*sin(side_arch_trangent_a));
// mid top rounding // mid top rounding
mid_topRounding_center_y = side_flat_trangentPoint_y*mid_diagnal_ratio; mid_flat_topPoint = side_flat_trangentPoint * mid_flat_top_ratio;
mid_topRounding_side_x = side_flat_trangentPoint_x*mid_diagnal_ratio; o = roller_above_base - mid_flat_topPoint[1];
o = roller_above_base - mid_topRounding_center_y;
s = mid_arch_roler_cut_r; s = mid_arch_roler_cut_r;
mid_topRounding_inner_x = (side_width/2) - sqrt(pow(s, 2) - pow(o, 2)); mid_topRounding_inner_x = (side_width/2) - sqrt(s*s - o*o);
mid_topRounding_d = mid_topRounding_inner_x - mid_topRounding_side_x; mid_topRounding_center = [
mid_topRounding_center_x = mid_topRounding_side_x + mid_topRounding_d/2; mid_flat_topPoint[0] + (mid_topRounding_inner_x - mid_flat_topPoint[0])/2,
mid_flat_topPoint[1] - (mid_topRounding_inner_x - mid_flat_topPoint[0])/2*tan(angle_2d(side_flat_trangentPoint))
];
mid_topRounding_d = line_len_2d(mid_flat_topPoint - mid_topRounding_center)*2;
$fa=5; $fa=5;
$fs=0.1; $fs=0.1;
@ -73,8 +68,8 @@ module winch_side_2d(){
circle(r = side_arch_r); circle(r = side_arch_r);
polygon(points = [ polygon(points = [
[0, 0], [0, 0],
[side_flat_trangentPoint_x, side_flat_trangentPoint_y], side_flat_trangentPoint,
[side_width-side_flat_trangentPoint_x, side_flat_trangentPoint_y], [side_width-side_flat_trangentPoint[0], side_flat_trangentPoint[1]],
[side_width, 0] [side_width, 0]
]); ]);
} }
@ -102,6 +97,7 @@ module side_motor_2d() {
side_2d(); side_2d();
translate([matt_thingness+side_width/2, base_hight+roller_above_base]) translate([matt_thingness+side_width/2, base_hight+roller_above_base])
motor_mount_2d(); motor_mount_2d();
if (main_not_side)
translate([matt_thingness+base_len/2+side_width/2, base_hight+roller_above_base]) translate([matt_thingness+base_len/2+side_width/2, base_hight+roller_above_base])
motor_mount_2d(); motor_mount_2d();
} }
@ -122,13 +118,14 @@ module mid_winch_2d() {
union() { union() {
polygon(points = [ polygon(points = [
[0, 0], [0, 0],
[side_flat_trangentPoint_x*mid_diagnal_ratio, side_flat_trangentPoint_y*mid_diagnal_ratio], side_flat_trangentPoint * mid_flat_top_ratio,
[side_width-side_flat_trangentPoint_x*mid_diagnal_ratio, side_flat_trangentPoint_y*mid_diagnal_ratio], [side_width-side_flat_trangentPoint[0]*mid_flat_top_ratio, side_flat_trangentPoint[1]*mid_flat_top_ratio],
[side_width, 0] [side_width, 0]
]); ]);
translate([mid_topRounding_center_x, mid_topRounding_center_y]) // translate([mid_topRounding_center[0], mid_flat_topPoint[1]])
translate(mid_topRounding_center)
circle(d = mid_topRounding_d); circle(d = mid_topRounding_d);
translate([side_width-mid_topRounding_center_x, mid_topRounding_center_y]) translate([side_width-mid_topRounding_center[0], mid_topRounding_center[1]])
circle(d = mid_topRounding_d); circle(d = mid_topRounding_d);
} }
translate([side_width/2, roller_above_base]) translate([side_width/2, roller_above_base])
@ -159,7 +156,7 @@ module mid_3d() {
} }
// nibs over side // nibs over side
winch_side_a_ratio = side_flat_trangentPoint_x / side_flat_trangentPoint_y; winch_side_a_ratio = side_flat_trangentPoint[0] / side_flat_trangentPoint[1];
windh_side_mattThinkness_x = winch_side_a_ratio * matt_thingness; windh_side_mattThinkness_x = winch_side_a_ratio * matt_thingness;
translate([0, base_width+side_thickness, base_hight]) translate([0, base_width+side_thickness, base_hight])
rotate([90, 0, 0]) rotate([90, 0, 0])
@ -253,11 +250,11 @@ module roller_3d() {
cylinder(d = 6, h = roller_side_tollerance); cylinder(d = 6, h = roller_side_tollerance);
} }
translate([0, 0, base_width-6.7 - roller_side_tollerance*2]) translate([0, 0, base_width-6.7 - roller_side_tollerance*2])
scale([1, 1, 2]) scale([1, 1, 2])
heatSetInsert_hole_M3x5_7(); heatSetInsert_hole_M3x5_7();
intersection() { intersection() {
cylinder(h = 6, d = 5); cylinder(h = 6, d = 5.2);
cube([10, 3, 6], true); cube([10, 3.2, 6], true);
} }
} }
} }
@ -316,6 +313,3 @@ if (plot == "roller")
roller_3d(); roller_3d();
if (plot == "base") if (plot == "base")
base(); base();

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.