118 lines
2.7 KiB
OpenSCAD
118 lines
2.7 KiB
OpenSCAD
$fs = 0.1;
|
|
eps = 0.01;
|
|
size = 15;
|
|
height = 3;
|
|
|
|
translate([0, 2] * 1.1 * size)
|
|
hq();
|
|
for(x = [1:5])
|
|
translate([x, 2] * 1.1 * size)
|
|
infantry();
|
|
for(x = [0:2])
|
|
translate([x, 1] * 1.1 * size)
|
|
infantry();
|
|
for(x = [3:5])
|
|
translate([x, 1] * 1.1 * size)
|
|
infantry_armored();
|
|
infantry_airborne();
|
|
for(x = [1:3])
|
|
translate([x, 0] * 1.1 * size)
|
|
artillery();
|
|
translate([4, 0] * 1.1 * size)
|
|
artillery_armored();
|
|
translate([5, 0] * 1.1 * size)
|
|
artillery_heavy();
|
|
|
|
module hq() {
|
|
linear_extrude(height)
|
|
scale(size / 4)
|
|
polygon([for(i = [0:10])
|
|
[(i % 2 + 1) * sin(36 * i),
|
|
(i % 2 + 1) * cos(36 * i)],
|
|
]);
|
|
}
|
|
|
|
module infantry() {
|
|
linear_extrude(height) {
|
|
polygon([
|
|
[0, -size / 2],
|
|
[size / 2, 0],
|
|
[-size / 2, 0]
|
|
]);
|
|
translate([- size / 4, -eps])
|
|
square(size / 2);
|
|
}
|
|
}
|
|
|
|
module infantry_armored() {
|
|
linear_extrude(height)
|
|
difference() {
|
|
polygon([
|
|
[0, -size / 2],
|
|
[size / 2, size / 2],
|
|
[-size / 2, size / 2]
|
|
]);
|
|
union() {
|
|
translate([0, size / 6])
|
|
circle(size / 15);
|
|
translate([0, size / 3])
|
|
circle(size / 15);
|
|
}
|
|
}
|
|
}
|
|
|
|
module infantry_airborne() {
|
|
linear_extrude(height) {
|
|
polygon([
|
|
[0, -size / 2],
|
|
[size / 2, 0],
|
|
[-size / 2, 0]
|
|
]);
|
|
polygon([
|
|
[size / 4, -eps],
|
|
[0, size / 2],
|
|
[-size / 4, -eps]
|
|
]);
|
|
}
|
|
}
|
|
|
|
module artillery() {
|
|
linear_extrude(height) {
|
|
translate([-size / 8, -size / 2])
|
|
square([size / 4, size - eps]);
|
|
translate([-size / 3, 0])
|
|
square([2 * size / 3, size / 2]);
|
|
}
|
|
}
|
|
|
|
module artillery_armored() {
|
|
linear_extrude(height)
|
|
difference() {
|
|
union() {
|
|
translate([-size / 8, -size / 2])
|
|
square([size / 4, size - eps]);
|
|
translate([-size / 3, 0])
|
|
square([2 * size / 3, size / 2]);
|
|
}
|
|
union() {
|
|
translate([0, size / 6])
|
|
circle(size / 15);
|
|
translate([0, size / 3])
|
|
circle(size / 15);
|
|
}
|
|
}
|
|
}
|
|
|
|
module artillery_heavy() {
|
|
linear_extrude(height) {
|
|
translate([-size / 8, -size / 2])
|
|
square([size / 4, size - eps]);
|
|
polygon([
|
|
[0, -size / 4],
|
|
[-size / 3, size / 4 + eps],
|
|
[size / 3, size / 4 + eps]
|
|
]);
|
|
translate([-size / 3, size / 4])
|
|
square([2 * size / 3, size / 4]);
|
|
}
|
|
} |