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();