Add tank track covers
This commit is contained in:
parent
61def78cb7
commit
ca78502625
89
tank-track-cover.scad
Normal file
89
tank-track-cover.scad
Normal file
@ -0,0 +1,89 @@
|
||||
WIDTH = 30; /* track width */
|
||||
CURVE_RADIUS = 25; /* track wheel cover curve radius */
|
||||
AXLE_DISTANCE = 195; /* how far is the front motor from back motor */
|
||||
THICKNESS=1.5; /* plastic thickness all around */
|
||||
CLEARANCE = 10; /* clearance around axles and suspension mounts */
|
||||
|
||||
|
||||
module mount_pad(left, top, diameter=4) {
|
||||
translate([left, top]) {
|
||||
difference() {
|
||||
union() {
|
||||
cylinder(h=THICKNESS, r1=diameter*1.5, r2=diameter*1.5, $fn=50);
|
||||
translate([-diameter*1.5, 0, 0]) {
|
||||
cube([diameter*3, diameter*3, THICKNESS]);
|
||||
}
|
||||
}
|
||||
cylinder(h=THICKNESS, r1=diameter/2, r2=diameter/2, $fn=50);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* bucket creates cylinder with inner cylinder removed */
|
||||
module bucket() {
|
||||
difference() {
|
||||
cylinder(h = WIDTH, r1 = CURVE_RADIUS+THICKNESS, r2 = CURVE_RADIUS+THICKNESS, $fn=100);
|
||||
translate([0, 0, THICKNESS]) {
|
||||
cylinder(h = WIDTH, r1 = CURVE_RADIUS, r2 = CURVE_RADIUS, $fn=100);
|
||||
}
|
||||
cylinder(h=THICKNESS, r1=CLEARANCE, r2=CLEARANCE, $fn=50);
|
||||
rotate(135) {
|
||||
cube([CURVE_RADIUS+THICKNESS, CURVE_RADIUS+THICKNESS, WIDTH]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
module track_cover() {
|
||||
difference() {
|
||||
union() {
|
||||
/* mounting edge */
|
||||
translate([0, CLEARANCE, 0]) {
|
||||
cube([AXLE_DISTANCE, CURVE_RADIUS-CLEARANCE, THICKNESS]);
|
||||
}
|
||||
|
||||
/* wheel covers */
|
||||
bucket();
|
||||
translate([AXLE_DISTANCE, 0, 0]) {
|
||||
mirror([1, 0, 0]) {
|
||||
bucket();
|
||||
}
|
||||
}
|
||||
|
||||
/* cover on the top */
|
||||
translate([0, CURVE_RADIUS]) {
|
||||
cube([AXLE_DISTANCE, THICKNESS, WIDTH]);
|
||||
}
|
||||
}
|
||||
union() {
|
||||
/* cutout lower half */
|
||||
translate([-CURVE_RADIUS-THICKNESS, -CURVE_RADIUS-THICKNESS]) {
|
||||
cube([10000, CURVE_RADIUS+THICKNESS, 10000]);
|
||||
}
|
||||
|
||||
/* cutout inner arcs */
|
||||
translate([0, 0, THICKNESS]) {
|
||||
cube([AXLE_DISTANCE, CURVE_RADIUS, WIDTH]);
|
||||
}
|
||||
|
||||
/* cutout clearance */
|
||||
cube([AXLE_DISTANCE, CLEARANCE, THICKNESS]);
|
||||
}
|
||||
}
|
||||
mount_pad(28, 5);
|
||||
mount_pad(63, 5);
|
||||
mount_pad(63+39, 5);
|
||||
mount_pad(63+39*2, 5);
|
||||
|
||||
}
|
||||
|
||||
module track_cover_set() {
|
||||
track_cover();
|
||||
mirror([0,1,0]) {
|
||||
translate([0, -CURVE_RADIUS*2-THICKNESS*3, 0]) {
|
||||
track_cover();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
track_cover_set();
|
||||
|
Loading…
Reference in New Issue
Block a user