summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lasttretrad.scad36
1 files changed, 30 insertions, 6 deletions
diff --git a/lasttretrad.scad b/lasttretrad.scad
index 58e802e..55ef4a8 100644
--- a/lasttretrad.scad
+++ b/lasttretrad.scad
@@ -8,9 +8,11 @@ ltr_height = 160;
bed_height = 18;
+// the universal standard board used during prototype construction
+board_width=25;
+board_height=120;
+
module frame() {
- board_width=25;
- board_height=120;
bessel=sqrt(3/2) -1;
// translate([-l/2, -w/2, 0])
@@ -41,7 +43,9 @@ 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([1250 * fcb, 370 * lr, 0])
+ translate([1250 * fcb,
+ (fcb == 0) ? (340 * lr) : (370 * lr),
+ 0])
children();
}
@@ -55,9 +59,29 @@ module steered_wheel(fb=-1, lr=-1, rot=0, suspension_depth=0) {
// specify (l)eft/(r)ight as -1/1
module powered_wheel(lr=-1, suspension_depth=0) {
- translate([0, 0, wheel_offset(suspension_depth)])
- rotate([90])
- wheel();
+ axis_distance = 500;
+ board_length = axis_distance + board_height;
+ default_suspension_depth = 0; // used to calculate anchor point
+ axis_offset = board_height/2 + bed_height; // distance from upper axis to cargo floor
+
+ rot = asin((250 - suspension_depth ) / axis_distance);
+ default_rot = asin((250 - default_suspension_depth - axis_offset) / axis_distance);
+
+ translate([-axis_distance * cos(default_rot), 0, -axis_offset])
+ rotate([0, rot, 0]) {
+ translate([axis_distance, 0, 0])
+ rotate([90])
+ wheel();
+
+ for (i = [-1,1])
+ translate([0, i*40 - lr*5, 0])
+ // board with rounded edges
+ hull()
+ for (i = [0, 1])
+ translate([i * axis_distance, 0, 0])
+ rotate([90, 0, 0])
+ cylinder(r=board_height/2, h=board_width, center=true);
+ }
}
module lasttretrad(rot=0, suspension_depth=0) {
contact: Jan Huwald // Impressum