forked from josefprusa/PrusaMendel
-
Notifications
You must be signed in to change notification settings - Fork 1
/
x-end-idler.scad
122 lines (99 loc) · 3.79 KB
/
x-end-idler.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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
// PRUSA Mendel
// X-end with idler mount
// GNU GPL v2
// Josef Průša
// prusadjs.cz
// http://www.reprap.org/wiki/Prusa_Mendel
// http://github.com/prusajr/PrusaMendel
include <configuration.scad>
corection = 1.17;
/**
* @id x-end-idler
* @name X end idler
* @category Printed
* @using 2 bushing
* @using 1 m8spring
* @using 2 m8nut
*/
module xendidler(){
difference(){
translate(v = [0,35,24.5]) union(){
difference(){
union(){
translate(v = [-25, -40, -16.6])cube(size = [20,40,15.8], center = true);
translate(v = [25, -40, -16.6])cube(size = [20,40,15.8], center = true);
}
//nut traps
translate(v = [-25, -29, -19.7]) cylinder(h = 7, r=m3_nut_diameter/2, $fn=6, center=true);
translate(v = [-25, -29, -20]) cylinder(h = 10, r=m3_diameter/2, $fn=9, center=true);
translate(v = [25, -29, -19.7]) cylinder(h = 7, r=m3_nut_diameter/2, $fn=6, center=true);
translate(v = [25, -29, -20]) cylinder(h = 10, r=m3_diameter/2, $fn=9, center=true);
translate(v = [-25, -50, -19.7]) cylinder(h = 7, r=m3_nut_diameter/2, $fn=6, center=true);
translate(v = [-25, -50, -20]) cylinder(h = 10, r=m3_diameter/2, $fn=9, center=true);
translate(v = [25, -50, -19.7]) cylinder(h = 7, r=m3_nut_diameter/2, $fn=6, center=true);
translate(v = [25, -50, -20]) cylinder(h = 10, r=m3_diameter/2, $fn=9, center=true);
//round corners
translate(v = [35.1, -60.1, -25]) rotate(a=[0,0,90]) roundcorner(round_corner_diameter);
translate(v = [35.1, -19.9, -25]) rotate(a=[0,0,-180]) roundcorner(round_corner_diameter);
//holes for axis
translate(v = [-25, -18, -16.7]) rotate(a=[90,0,0]) {
translate(v = [0, 0, 22]) cylinder(h = 42, r=4.5, $fn=20, center=true);
translate(v = [0, 2.60, 22]) rotate(a=[0,0,0]) cylinder(h = 42, r=3.65, $fn=6, center=true);
}
translate(v = [25, -18, -16.7]) rotate(a=[90,0,0]) {
translate(v = [0, 0, 22]) cylinder(h = 42, r=4.5, $fn=20, center=true);
translate(v = [0, 2.60, 22]) rotate(a=[0,0,0]) cylinder(h = 42, r=3.65, $fn=6, center=true);
}
//slider cutouts
translate(v = [0, -25, 15])
difference(){
translate(v = [0, -0, -14.5])cube(size = [23,23,50], center = true);
}
//nut trap
translate(v = [0, -55, 15]) {
difference(){
translate(v = [0, -0, -15])cylinder(h = 50, r=m8_nut_diameter/2+thin_wall, $fn=6, center=true);
}
}
}
//slider
translate(v = [0, -25, 15])
difference(){
union(){
translate(v = [0, -3.5, -7]) cube(size = [17+2*thin_wall,17,65], center = true);
translate(v = [0, -3.5, -31.6]) cube(size = [33,17,15.8], center = true);}
translate(v = [0, -0, -7])cube(size = [17,17,70], center = true);}
//nut trap
//correction for thin wall
translate(v = [0, -55, 15]) {
difference(){
union(){difference(){
union(){
translate(v = [0, -0, -19.5])cylinder(h = 40, r=m8_nut_diameter/2+thin_wall*corection, $fn=6, center=true);
translate(v = [0, 0, -31.6]) cube(size = [35,10,15.8], center = true);}
cylinder(h = 90, r=m8_nut_diameter/2, $fn=6, center=true);
}
translate(v = [0, 0, -31]) cylinder(h = 4, r=m8_nut_diameter/2+thin_wall, $fn=6, center=true);}
translate(v = [0, 0, 12.5]) cylinder(h = 90, r=m8_diameter/2, $fn=9, center=true);
}
}
//idler wheel connector
mirror(){
translate(v = [0, -35, -12]) difference(){
union(){
translate(v = [21, -21.5, 25.3]) cube(size = [25.5,7,4.4], center = true);
translate(v = [21, 12.5, 25.3]) cube(size = [24,5,4.4], center = true);
translate(v = [32.5, -5, 12.5]) cube(size = [5,40,30], center = true);
}
translate(v = [32.5, -6, 28-3-4.7]) rotate(a=[0,90,0]) cylinder(h = 90, r=m8_diameter/2, $fn=9, center=true);
//translate(v = [35.1,-25.1,-5]) rotate(a=[0,0,90]) roundcorner(3);
//translate(v = [-35.1, -19.9, -25]) rotate(a=[0,0,-90]) roundcorner(3);
}
}}
//two more rounded corners
translate(v = [-35.1,-25.1,-5]) rotate(a=[0,0,0]) roundcorner(5);
translate(v = [-35.1, +15.1, -5]) rotate(a=[0,0,-90]) roundcorner(5);
}
}
xendidler();