Commit c3b35164 authored by Torbjørn Ludvigsen's avatar Torbjørn Ludvigsen 👷

Renderings for double lines double speed blog post

parent 3e9da94b
......@@ -6,6 +6,7 @@ use <spool.scad>
use <spool_gear.scad>
use <spool_core.scad>
use <lineroller_D.scad>
use <lineroller_anchor.scad>
use <lineroller_ABC_winch.scad>
use <corner_clamp.scad>
use <beam_slider_D.scad>
......@@ -31,6 +32,9 @@ bottom_triangle = false;
//bottom_triangle = true;
ANCHOR_D_Z = 2300;
ANCHOR_A_Y = 2000;
between_action_points_z = 400;
lift_mover_z = between_action_points_z + Higher_bearing_z+8;
color0 = "sandybrown";
......@@ -238,6 +242,7 @@ module full_winch(){
}
if(mover && !twod)
translate([0,0,lift_mover_z])
mover();
module mover(){
beam_length = 400;
......@@ -287,8 +292,8 @@ module d_lines(){
color("yellow")
for(k=[0,120,240])
rotate([0,0,k])
translate([0,Sidelength/sqrt(3),0])
cylinder(r=4.9, h=ANCHOR_D_Z);
translate([0,Sidelength/sqrt(3),lift_mover_z])
cylinder(r=1.9, h=ANCHOR_D_Z-lift_mover_z);
}
if(bottom_triangle)
......@@ -305,3 +310,97 @@ module bottom_triangle(){
cube([500, 100, 12], center=true);
}
}
//lr();
module lr(){
ay = ANCHOR_A_Y - 10;
color(color1, color1_alpha)
//difference(){
if(stls){
import("../openscad_stl/lineroller_anchor.stl");
} else {
lineroller_anchor();
}
// translate([-25,-50,-1])
// cube(50);
//}
translate([Bearing_0_x+Move_tower+b623_vgroove_small_r/sqrt(2),0,Higher_bearing_z + b623_vgroove_small_r/sqrt(2)])
color("yellow")
rotate([0,-90+atan(ANCHOR_D_Z/ay),0])
cylinder(r = 0.75, h = sqrt(ay*ay + ANCHOR_D_Z*ANCHOR_D_Z));
between_bearings_x = Bearing_0_x - Bearing_1_x;
echo(between_bearings_x);
between_bearings_z = Higher_bearing_z - Lower_bearing_z;
echo(between_bearings_z);
ang_b0_b1 = atan(between_bearings_z/between_bearings_x);
echo(ang_b0_b1);
between_action_points_x = ANCHOR_A_Y-Sidelength/sqrt(9);
ang_action = atan(between_action_points_z/between_action_points_x);
echo(ang_action);
for(tr = [[[Bearing_0_x+Move_tower, 0, Higher_bearing_z], [-ang_b0_b1+2, 90, 0], true],
[[Bearing_1_x+Move_tower, 0, Lower_bearing_z], [-103, 60, 0], true],
[[Bearing_1_x+Move_tower, 0, Higher_bearing_z], [180-18, 276, 0], false]])
translate(tr[0])
rotate([90,0,0]){
if(tr[2])
color("purple")
cylinder(r=b623_vgroove_small_r, h=1.5, center=true);
color("yellow")
rotate([0,tr[1][2],tr[1][0]])
rotate_extrude(angle=tr[1][1])
translate([b623_vgroove_small_r+tr[1][2]*0.04,0,0])
circle(r=0.75);
}
color("yellow")
translate([Bearing_1_x+Move_tower-4, 0, Higher_bearing_z+2])
rotate([0,0,180])
rotate_extrude(angle=297)
translate([3.1,0])
circle(r=0.75);
translate([Bearing_1_x+Move_tower-4-3.1, 0, Higher_bearing_z+2])
color("yellow")
rotate([-90,0,0])
cylinder(r=0.75, h=Sidelength/2);
translate([Bearing_1_x+Move_tower-4-1.1, 0, Higher_bearing_z+2])
color("yellow")
rotate([-90,0,0])
cylinder(r=0.75, h=3);
// Within lineroller_anchor
line_from_to([Bearing_1_x+Move_tower + sin(ang_b0_b1)*b623_vgroove_small_r, 0,
Lower_bearing_z - cos(ang_b0_b1)*b623_vgroove_small_r],
[Bearing_0_x+Move_tower + sin(ang_b0_b1)*b623_vgroove_small_r, 0,
Higher_bearing_z - cos(ang_b0_b1)*b623_vgroove_small_r], r=0.75, $fn=6);
// From lower bearing to effector
line_from_to([Bearing_1_x+Move_tower-sin(ang_action)*b623_vgroove_small_r, 0,
Lower_bearing_z-cos(ang_action)*b623_vgroove_small_r],
[Bearing_1_x+Move_tower-sin(ang_action)*b623_vgroove_small_r
-between_action_points_x, 0,
Lower_bearing_z-cos(ang_action)*b623_vgroove_small_r
+between_action_points_z], r=0.75, $fn=6);
// From effector to higher bearing
line_from_to([Bearing_1_x+Move_tower+sin(ang_action)*b623_vgroove_small_r, 0,
Higher_bearing_z + cos(ang_action)*b623_vgroove_small_r],
[Bearing_1_x+Move_tower+sin(ang_action)*b623_vgroove_small_r
-between_action_points_x, 0,
Higher_bearing_z + cos(ang_action)*b623_vgroove_small_r
+between_action_points_z], r=0.75,$fn=6);
}
for(i=[0:120:359])
rotate([0,0,-90+i])
translate([ANCHOR_A_Y,0,0])
ABC_anchor();
module ABC_anchor(){
for(k=[0,1])
mirror([0,k,0])
translate([0,-Sidelength/2,0])
lr();
translate([-27/2, -Ext_sidelength/2, -8])
cube([50,Ext_sidelength, 8]);
translate([Bearing_1_x+Move_tower-4-3.1,0,Higher_bearing_z+2])
color("red")
sphere(r=4);
}
......@@ -7,16 +7,11 @@ l = Depth_of_lineroller_base + 2*b623_vgroove_big_r + 2*Bearing_wall;
track_l = l;
head_r = 3.5;
screw_r = 1.5;
lower_bearing_z = 13;
higher_bearing_z = lower_bearing_z + Idler_block_bearing_center_to_center;
x_len = Depth_of_lineroller_base-4; // For the two "wings" with tracks for screws
y_extra = -2.0; // For the two "wings" with tracks for screws
bearing_0_x = 2*b623_vgroove_big_r+Bearing_wall+5.3;
bearing_1_x = b623_vgroove_small_r-0.9;
tower_h = higher_bearing_z + b623_vgroove_big_r;
tower_h = Higher_bearing_z + b623_vgroove_big_r;
//lineroller_tower(with_base=true);
module lineroller_tower(bearing_width = b623_width+0.2,
......@@ -25,7 +20,6 @@ module lineroller_tower(bearing_width = b623_width+0.2,
big_y_r1 = 190,
big_y_r2 = 36,
big_z_r = 83){
move_tower = -12.2;
module wall(){
// Foot parameters
c = 10;
......@@ -41,7 +35,7 @@ module lineroller_tower(bearing_width = b623_width+0.2,
b_th = Lineroller_wall_th+e;
top_off_r = b623_vgroove_small_r;
translate([move_tower, -(bearing_width + 2*Wall_th)/2, 0])
translate([Move_tower, -(bearing_width + 2*Wall_th)/2, 0])
rotate([-90,-90,0]){
difference(){
union(){
......@@ -68,38 +62,38 @@ module lineroller_tower(bearing_width = b623_width+0.2,
cube([base_th, w+f+2*foot_shape_r+20, 30]);
}
// Check if bearing fits
//#translate([lower_bearing_z ,bearing_1_x, Lineroller_wall_th])
//#translate([Lower_bearing_z ,Bearing_1_x, Lineroller_wall_th])
// cylinder(r1 = b623_vgroove_big_r,
// r2 = b623_vgroove_small_r,
// h = b623_width/2+0.3,
// $fn = 5*10);
translate([lower_bearing_z, bearing_1_x, 0]){
translate([Lower_bearing_z, Bearing_1_x, 0]){
cylinder(r=r2, h=Lineroller_wall_th+shoulder, $fs=1);
dpth=3;
translate([0,0,-dpth])
hexagon_for_nut(h=dpth);
}
translate([higher_bearing_z, bearing_0_x, 0]){
translate([Higher_bearing_z, Bearing_0_x, 0]){
cylinder(r=r2, h=Lineroller_wall_th+shoulder, $fs=1);
dpth=1.5;
translate([0,0,-dpth])
hexagon_for_nut(h=dpth);
}
// Check if bering fits
//#translate([higher_bearing_z ,bearing_0_x, Lineroller_wall_th])
//#translate([Higher_bearing_z ,Bearing_0_x, Lineroller_wall_th])
// cylinder(r1 = b623_vgroove_big_r,
// r2 = b623_vgroove_small_r,
// h = b623_width/2+0.3,
// $fn = 5*10);
translate([higher_bearing_z ,bearing_1_x, Lineroller_wall_th])
translate([Higher_bearing_z ,Bearing_1_x, Lineroller_wall_th])
cylinder(r1 = b623_vgroove_big_r,
r2 = b623_vgroove_small_r,
h = b623_width/2+0.3,
$fn = 5*10);
}
translate([lower_bearing_z,bearing_1_x,-7])
translate([Lower_bearing_z,Bearing_1_x,-7])
cylinder(d=b623_bore_r*2+0.3, h=Lineroller_wall_th+12, $fs=1);
translate([higher_bearing_z,bearing_0_x,-1])
translate([Higher_bearing_z,Bearing_0_x,-1])
cylinder(d=b623_bore_r*2+0.3, h=Lineroller_wall_th+0.5+2, $fs=1);
}
}
......@@ -107,9 +101,9 @@ module lineroller_tower(bearing_width = b623_width+0.2,
a = 1.65;
b= 0.8;
rot_r = b623_vgroove_big_r+b;
translate([move_tower,0,0])
for(b_pos=[[[bearing_0_x, -bearing_width/2-0.8, higher_bearing_z],[0,120]],
[[bearing_1_x, -bearing_width/2-0.8, lower_bearing_z], [0,60]]])
translate([Move_tower,0,0])
for(b_pos=[[[Bearing_0_x, -bearing_width/2-0.8, Higher_bearing_z],[0,120]],
[[Bearing_1_x, -bearing_width/2-0.8, Lower_bearing_z], [0,60]]])
difference(){
translate(b_pos[0])
rotate([-90,0,0])
......@@ -135,7 +129,7 @@ module lineroller_tower(bearing_width = b623_width+0.2,
translate([0, -(bearing_width + 2*Wall_th)/2, 0])
rotate([-90,-90,0])
translate([0,0,Lineroller_wall_th])
translate([higher_bearing_z,w/2,0])
translate([Higher_bearing_z,w/2,0])
translate([0,+big_y_r2+w,-15])
cylinder(r=big_y_r2, h=30, $fn=250);
}
......@@ -146,7 +140,7 @@ module lineroller_tower(bearing_width = b623_width+0.2,
mirror([0,1,0])
wall();
}
translate([move_tower+bearing_1_x-3.7,0,higher_bearing_z+1])
translate([Move_tower+Bearing_1_x-3.7,0,Higher_bearing_z+1])
difference(){
cylinder(r=3.7, h=8, $fn=40);
cylinder(r=2.0, h=10, $fn=40);
......
......@@ -66,6 +66,8 @@ b623_bore_r = 3/2;
b623_vgroove_big_r = 12/2;
b623_vgroove_small_r = 10/2;
Lineroller_wall_th = 2.3;
// The height that lineroller_ABC_winch will have if we include the bearing
Tower_h = Gap_between_sandwich_and_plate+Gear_height
+ Spool_height/2
......@@ -80,3 +82,13 @@ Screw_h = 2;
Screw_head_h = 2;
Spool_center_bearing_wall_th = 5;
Idler_block_bearing_center_to_center = 15;
//// Lineroller anchor parameters /////
Bearing_0_x = 2*b623_vgroove_big_r+Bearing_wall+5.3;
Bearing_1_x = b623_vgroove_small_r-0.9;
Move_tower = -12.2;
Lower_bearing_z = 13;
Higher_bearing_z = Lower_bearing_z + Idler_block_bearing_center_to_center;
......@@ -406,3 +406,36 @@ module chamfer45(v0, h){
linear_extrude(height=h, slices=1, convexity=2, scale=[(v0[0]-2*h)/v0[0], (v0[1]-2*h)/v0[1]])
square(v0, center=true);
}
module line_from_to(v0, v1, r = 1.0){
v2 = v1 - v0;
color("yellow")
if(len(v2) == 3){
v2l = sqrt(v2[0]*v2[0] + v2[1]*v2[1] + v2[2]*v2[2]);
v2n = v2/v2l;
theta = acos(v2n[2]);
phi = acos(v2n[1]/sqrt(v2n[1]*v2n[1] + v2n[0]*v2n[0]));
//echo(theta);
//echo(phi);
translate(v0)
if(v2n[0] < 0){
rotate([-theta,0,phi])
cylinder(r=r, h=v2l);
} else {
rotate([-theta,0,-phi])
cylinder(r=r, h=v2l);
}
} else {
v2l = sqrt(v2[0]*v2[0] + v2[1]*v2[1]);
v2n = v2/v2l;
phi = acos(v2n[1]/sqrt(v2n[1]*v2n[1] + v2n[0]*v2n[0]));
translate(v0)
if(v2n[0] < 0){
rotate([-90,0,phi])
cylinder(r=r, h=v2l);
} else {
rotate([-90,0,-phi])
cylinder(r=r, h=v2l);
}
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment