forked from jcrocholl/recirculating
-
Notifications
You must be signed in to change notification settings - Fork 1
/
recirculating.scad
87 lines (82 loc) · 2.63 KB
/
recirculating.scad
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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
length = 50;
thickness = 11;
channel_radius = 3;
track_radius = 6;
outside_radius = channel_radius + track_radius + 1.5;
slot = 2.5;
module track(h) {
union() {
translate([0, outside_radius-length/2, 0]) intersection() {
rotate_extrude($fn=24) translate([track_radius, 0, 0])
circle(r=channel_radius, $fn=6);
translate([0, -20, 0]) cube([40, 40, 40], center=true);
}
translate([0, length/2-outside_radius, 0]) intersection() {
rotate_extrude($fn=24) translate([track_radius, 0, 0])
circle(r=channel_radius, $fn=6);
translate([0, 20, 0]) cube([40, 40, 40], center=true);
}
for (s = [-1, 1]) {
scale([s, 1, 1])
translate([track_radius, 0, 0]) rotate([90, 0, 0]) {
cylinder(r=channel_radius,
h=length-2*outside_radius+0.1,
center=true, $fn=6);
translate([0, 2, 0]) #
cylinder(r=channel_radius*0.61,
h=length-2*outside_radius+0.1,
center=true, $fn=6);
}
}
}
}
module support(h, w) {
linear_extrude(height=h, convexity=2) {
difference() {
square([4, length-5], center=true);
for (y = [-length:4:length]) {
translate([w, y]) square([4, 2-w], center=true);
translate([-w, y+2]) square([4, 2-w], center=true);
}
}
}
}
module half() {
difference() {
translate([0, 0, slot/2-thickness+1.3])
linear_extrude(height=30, convexity=2) {
difference() {
translate([-0.5, 0, 0]) minkowski() {
square([0.1, 0.1+length-2*outside_radius], center=true);
circle(r=outside_radius-0.05, $fn=36);
}
for (y = [2+outside_radius-length/2,
length/2-outside_radius-2]) {
translate([0, y])
circle(r=1.5, $fn=12);
}
}
}
track();
translate([-10.5, 0, 12.5]) difference() {
cube([100, 100, 20], center=true);
difference() {
translate([0, 0, -10.5]) rotate([90, 0, 0]) rotate([0, 90, 0])
cylinder(r=12, h=30, center=true, $fn=6);
translate([-18, 0, 0]) rotate([0, 30, 0])
cube([40, 40, 40], center=true);
}
}
translate([0, 0, 10]) rotate([0, -90, 0]) {
rotate([0, 0, 90]) cylinder(r=3.2, h=50, $fn=6);
cylinder(r=1.7, h=50, center=true, $fn=12);
}
translate([10+track_radius, 0, -10-slot/2])
cube([20, length, 20], center=true);
translate([10+track_radius, 0, 10+slot/2])
cube([20, length, 20], center=true);
}
}
half(1.5);
translate([8.8, 0, slot/2-thickness+1.3]) support(h=7.1, w=0.6);
translate([15, 0, 0]) % cube([15, 100, 15], center=true);