thread_height=38; thread_diameter=25.4; shaft_height1=110; shaft_diameter1=thread_diameter; shaft_height2=6; shaft_diameter2=27; axe_shift=18.2; shaft_distance=53; 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(){ } module suspension_fork(depth=0) { // from top to bottom ... %fork_shaft(); %translate([0,0,-(thread_height+shaft_height1+shaft_height2)]) forking(); // all following measuress are pure phantasy *translate([0, -50/2, -110]) cube([5, 50, 20]); *for (side = [-1,1]) translate([0, side * 50, -210]) { cylinder(r=25, h=120); translate([0, 0, depth - 100]) { cylinder(r=20, h=120); difference() { translate([0, 0, -20]) rotate([90, 0, 0]) hull() { cylinder(r=20, h=5, center=true); translate([0, 20, 0]) cube([39, 39, 5], center=true); } translate([0, 0, -20]) rotate([90, 0, 0]) hull() { cylinder(r=5, h=50, center=true); translate([0, -20, 0]) cube([10, 10, 50], center=true); } } } } } function wheel_offset(depth=0) = depth - 330; suspension_fork();