summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lasttretrad.scad22
-rw-r--r--suspension_fork.scad46
-rw-r--r--wheel.scad5
3 files changed, 62 insertions, 11 deletions
diff --git a/lasttretrad.scad b/lasttretrad.scad
index f0dd6a0..56da29a 100644
--- a/lasttretrad.scad
+++ b/lasttretrad.scad
@@ -1,4 +1,5 @@
use <wheel.scad>;
+use <suspension_fork.scad>;
// 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;
contact: Jan Huwald // Impressum