From 5e18d55ef8d438cb5f80295c24c9d8976e85805e Mon Sep 17 00:00:00 2001 From: Jan Huwald Date: Thu, 2 Jul 2015 15:19:29 +0200 Subject: add suspension fork (w/ arbitrary dimensions) diff --git a/lasttretrad.scad b/lasttretrad.scad index f0dd6a0..56da29a 100644 --- a/lasttretrad.scad +++ b/lasttretrad.scad @@ -1,4 +1,5 @@ use ; +use ; // total outer dimension of the lasttretrad ltr_length = 3000; @@ -40,34 +41,37 @@ module cargo_bed() { // specify (f)ront/(c)enter/(b)ack as -1/0/1 and (l)eft/(r)ight as -1/1 module wheel_position(fcb, lr) { - translate([1300 * fcb, 450 * lr, -350]) + translate([1250 * fcb, 450 * lr, 0]) children(); } // specify (f)ront/(b)ack and (l)eft/(r)ight as -1/1 -module steered_wheel(fb=-1, lr=-1, rot=0) { - rotate([90, 0, fb*rot]) - wheel(); +module steered_wheel(fb=-1, lr=-1, rot=0, suspension_depth=0) { + rotate([ 0, 0, fb*rot]) suspension_fork(suspension_depth); + + translate([0, 0, wheel_offset(suspension_depth)]) + rotate([90, 0, fb*rot]) wheel(); } // specify (l)eft/(r)ight as -1/1 -module powered_wheel(lr=-1) { +module powered_wheel(lr=-1, suspension_depth=0) { + translate([0, 0, wheel_offset(suspension_depth)]) rotate([90]) wheel(); } -module lasttretrad() { +module lasttretrad(rot=0, suspension_depth=0) { frame(); cargo_bed(); for (lr = [-1,1]) for (fb = [-1,1]) wheel_position(fb, lr) - steered_wheel(fb, lr, rot=30); + steered_wheel(fb, lr, rot=rot, suspension_depth=suspension_depth); for (lr = [-1,1]) wheel_position(0, lr) - powered_wheel(lr); + powered_wheel(lr, suspension_depth=suspension_depth); } -lasttretrad(); +lasttretrad(70, 50); diff --git a/suspension_fork.scad b/suspension_fork.scad new file mode 100644 index 0000000..4c12d2f --- /dev/null +++ b/suspension_fork.scad @@ -0,0 +1,46 @@ +// all used measuress are pure phantasy +module suspension_fork(depth=0) { + // from top to bottom ... + + translate([0, 0, -50]) cylinder(h=50, r=15); + translate([0, 0, -60]) cylinder(h=10, r1=25, r2=15); + translate([0, 0, -70]) cylinder(h=10, r=25); + + hull() { + for (side = [-1,1]) + translate([0, side * 50, -90]) + cylinder(r=27, h=20); + } + + translate([0, -50/2, -110]) + cube([5, 50, 20]); + + for (side = [-1,1]) + translate([0, side * 50, -210]) { + cylinder(r=25, h=120); + + translate([0, 0, depth - 100]) { + cylinder(r=20, h=120); + + difference() { + translate([0, 0, -20]) + rotate([90, 0, 0]) + hull() { + cylinder(r=20, h=5, center=true); + translate([0, 20, 0]) cube([39, 39, 5], center=true); + } + + translate([0, 0, -20]) + rotate([90, 0, 0]) + hull() { + cylinder(r=5, h=50, center=true); + translate([0, -20, 0]) cube([10, 10, 50], center=true); + } + } + } + } +} + +function wheel_offset(depth=0) = depth - 330; + +suspension_fork(); diff --git a/wheel.scad b/wheel.scad index b720016..f7c168b 100644 --- a/wheel.scad +++ b/wheel.scad @@ -3,7 +3,7 @@ module wheel() { r_rim=150; r_tire=15; r_hub=30; - r_axis=7; + r_axis=5; // tire (modelled as torus) rotate_extrude(convexity=4) @@ -15,7 +15,8 @@ module wheel() { translate([0, 0, side * (r_tire - 1/2)]) cylinder(r=r_hub, h=1, center=true); - cylinder(r=r_axis, h=r_tire * 2.3, center=true); + cylinder(r=r_axis, h=125, center=true); + // spokes angular_step=360/8; -- cgit v0.10.1