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
|
axe_shift=18.2;
shaft_distance=53;
dark=[.1,.1,.1];
module fork_shaft(){
thread_height=38;
thread_diameter=25.4;
shaft_height1=110;
shaft_diameter1=thread_diameter;
shaft_height2=6;
shaft_diameter2=27;
translate([0,0,-thread_height])
cylinder(h=thread_height,d=thread_diameter);
translate([0,0,-(thread_height+shaft_height1)])
cylinder(h=shaft_height1,d=shaft_diameter1);
translate([0,0,-(thread_height+shaft_height1+shaft_height2)])
cylinder(h=shaft_height2,d=shaft_diameter2);
}
module forking(){
for (side = [-1,1])
hull() {
translate([0,0,-34]) cylinder(d=39,h=34);
translate([axe_shift, side * shaft_distance, -56]) cylinder(d=31.3, h=29);
}
translate([0,0,-43]) cylinder(d=39,h=9);
}
module side_shaft(){
color("Gainsboro",1)translate([0,0,-38.5])cylinder(d=25.5,h=38.5);
color(dark,1){
translate([0,0,-(38.5+14.8)]) cylinder(d1=41.5,d2=25.5,h=14.8);
translate([0,0,-(38.5+22)]) cylinder(d1=32.5,d2=41.5,h=22-14.8);
translate([0,0,-(38.5+184)]) cylinder(d1=32,d2=32.5,h=176);
}
}
module wheel_holder(){
thick=4.5;
color(dark,1)
rotate([270,90,0])
translate([0,0,-thick/2])
difference(){
union(){
hull(){
cylinder(d=32.5,h=thick);
translate([-57.35,5.35,0])cube([35.3,35.3,thick]);
}
translate([0,0,1.9-thick])cylinder(d=25,h=thick);
}
translate([0,0,1.9])cylinder(d=25,h=thick);
hull(){
translate([0,0,-3])cylinder(d=10,h=15);
translate([10,-5,-3])cube([10,10,15]);
}
}
}
module bow_shape(){
polygon(points=[[0,0],[28,0],[22,8],[14,11],[6,8]]);
}
module bow(){
translate([0,0,-68.5]){
difference(){
rotate([0,90,0])
rotate_extrude(convexity = 10)
translate([40.5,0,0]) bow_shape();
translate([-100,-100,-200])cube([200,200,200]);
}
translate([0,-40.5,-77.5])rotate([0,0,-90]) linear_extrude(height=77.5) bow_shape();
translate([0,68.5,-77.5])rotate([0,0,-90]) linear_extrude(height=77.5) bow_shape();
}
}
module brake_holder(){
color("gainsboro",1)
rotate([0,90,0]){
translate([0,0,-20])cylinder(d=9.8,h=26);
translate([0,0,6])cylinder(d=7.9,h=16);
}
}
module suspension_fork(depth=0) {
// from top to bottom ...
color("gainsboro",1) fork_shaft();
color(dark,1) translate([0,0,-154]) forking();
// all following measuress are pure phantasy
for (side=[-1,1]){
translate([axe_shift,side * shaft_distance,-(210)]) side_shaft();
}
translate([45,shaft_distance,-460]) wheel_holder();
mirror([0,1,0])translate([45,shaft_distance,-460]) wheel_holder();
color(dark,1) translate([40,0,-207]) bow();
translate([51,-41.5,-340]) brake_holder();
translate([51,41.5,-340]) brake_holder();
}
function wheel_offset(depth=0) = depth - 510;
suspension_fork();
|