Chanamon Ratanalert

23 Jan 2014

Michael Bay ain’t got nothing on TransformingTrucks, toys customizable in #OpenSCAD by @jaguarspeaks!

After spending a good amount of time trying to make a parametric dinosaur…
Screen Shot 2014-01-23 at 3.57.53 AM
I decided to tackle a project I could do in less time. After many various sketches…

I settled on cars–namely trucks. There are various kinds of trucks you can encounter on the highway: pickup, commercial, mail, flatbed, etc. They are composed of essentially the same parts: a front with the engine and driver, a back that varies in size and function, and wheels. This idea stemmed from my recent encounter with the game Rush Hour, breaking off from the point where I wanted to be able to construct the game pieces.
My results are okay, for the moment. I hope to be able to make them more detailed and more flexible to various car shapes in the future. For now, they remain blockish-type toys, similar to ones that could be constructed out of wood. I am glad that I was able to figure out an idea and set of variables that would create multiple versions of the same item, but be flexible enough to create more differentiated objects. By changing the variables enough, you can transform a pickup to a flatbed–a transformation that changes the object almost entirely rather than just changing a few small characteristics.
*As you can see in the code below, some commented out code when put back in will round out a number of edges and wheels of the trucks. My computer just couldn’t handle the render of them.

truck1-2
(sorry the resolution isn’t as high as it should, WordPress wasn’t agreeing with me)

truck4

truck2

The two qualities I selected to aim for with the trucks were interesting and useful. Personally, I find it interesting that different cars that you think are completely different (where a layman could drive a pickup but a greasy, chubby trucker owns his commercial truck) are essentially the same when broken down. Fiddling with the variables and coming out with almost entirely different trucks that belong in the same family is an interesting task. Additionally, I find this mockup of trucks useful for 3-D printing children’s toys. I hope to continue to work on this to have the wheels be independent of the truck and on axle so that they turn when printed. This project is also useful for experimentation with variability within parametric bounds.

The Thing thing
Truck.scad on Github

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
$fn = 128;
 
//front
fwidth = 50;
fheight = 50;
fz = 25;
roundness = 4;
//minkowski(){
	color("red") union(){
		rotate([90,0,0]) cube([fz, fwidth, fheight]);
		translate([20,0,0]) rotate([90,0,0]) cube([fz,fz,fwidth]);
	}
	//sphere(roundness);
//}
 
//back
bwidth = fwidth;
bheight = fheight/2;
blength = 80;
xd = 5; //extrusion difference (thickness of truck rim)
depth = 10;
color("red") rotate([0,0,180]) difference(){
	cube([blength, bwidth, bheight]);
	translate([xd,xd,depth]) cube([blength-2*xd, bwidth-2*xd, bheight+depth]);
}
 
//wheels
thickness = 10;
x = 15;
y = thickness/2;
z = 0;
i = 5;
wheelround = 1;
//minkowski() {
	difference(){
		color("black") translate([x,y,z]) rotate([90,0,0]) cylinder(h = thickness, r = fz/2);
		translate([x,y+i*1.5,z]) rotate([90,0,0]) cylinder(h = thickness, r = fz/4);
		translate([x,y-i*1.5,z]) rotate([90,0,0]) cylinder(h = i, r = fz/4);
	}
	//sphere(wheelround);
//}
//minkowski() {
	difference(){
		color("black") translate([x,y-fwidth,z]) rotate([90,0,0]) cylinder(h = thickness, r = fz/2);
		translate([x,y+i*1.5-fwidth,z]) rotate([90,0,0]) cylinder(h = thickness, r = fz/4);
		translate([x,y-i*1.5-fwidth,z]) rotate([90,0,0]) cylinder(h = i, r = fz/4);
	}
	//sphere(wheelround);
//}
//minkowski() {
	difference(){
		color("black") translate([x-blength,y,z]) rotate([90,0,0]) cylinder(h = thickness, r = fz/2);
		translate([x-blength,y+i*1.5,z]) rotate([90,0,0]) cylinder(h = thickness, r = fz/4);
		translate([x-blength,y-i*1.5,z]) rotate([90,0,0]) cylinder(h = i, r = fz/4);
	}
	//sphere(wheelround);
//}
//minkowski() {
	difference(){
		color("black") translate([x-blength,y-fwidth,z]) rotate([90,0,0]) cylinder(h = thickness, r = fz/2);
		translate([x-blength,y+i*1.5-fwidth,z]) rotate([90,0,0]) cylinder(h = thickness, r = fz/4);
		translate([x-blength,y-i*1.5-fwidth,z]) rotate([90,0,0]) cylinder(h = i, r = fz/4);
	}
	//sphere(wheelround);
//}