diff --git a/model/fourbar.scad b/model/fourbar.scad index 3f07b39..873e75c 100644 --- a/model/fourbar.scad +++ b/model/fourbar.scad @@ -16,7 +16,7 @@ $fn=64; // learned 60 years ago. There REALLY should not be any unexplained // numbers. -module fourbar_leg(length=1000, chord=100, lat_skew=35, long_skew=30) { +module fourbar_leg(length=800, chord=100, lat_skew=35, long_skew=30) { h = length * cos(lat_skew) * cos( long_skew); w = length * sin( lat_skew); d = length * sin( long_skew); @@ -68,14 +68,14 @@ module fourbar_axle_half( length=1000, chord=100, lat_skew=35, long_skew=30, sho // lower knuckle rotate([0, long_skew, 0]) - translate([(0 - (chord*1.25)), (l_hlb * cos(rise) + 72), -62]) + translate([(0 - (chord*1.25)), (l_hlb * cos(rise) + 72+60), -62]) lower_bar_end_knuckle(chord, 12, rise, lat_skew); rotate([0, long_skew, 0]) - translate([(0 - (chord*1.25)), (l_hlb * cos(rise) + 155), -62]) + translate([(25 - (chord*1.25)), (l_hlb * cos(rise) + 155+60), -62]) wheel(); rotate([0, long_skew, 0]) - translate([(0 - (chord*1.25)), (l_hlb * cos(rise) + 115), -62]) + translate([(25 - (chord*1.25)), (l_hlb * cos(rise) + 115+60), -62]) rotate([90, 0, 0]) color("silver") cylinder( h=1.5, r=75); @@ -99,5 +99,5 @@ module fourbar(length=1000, chord=100, lat_skew=30, long_skew=30, shoulder=650) } -// fourbar(length=1000, chord=100, long_skew=30, lat_skew=35, shoulder=650); + fourbar(length=800, chord=100, long_skew=30, lat_skew=35, shoulder=650); // fourbar_axle_half(); \ No newline at end of file diff --git a/model/lowerknuckle.scad b/model/lowerknuckle.scad index 4377230..6f67cee 100644 --- a/model/lowerknuckle.scad +++ b/model/lowerknuckle.scad @@ -71,33 +71,41 @@ module lower_bar_end_knuckle_old(chord=100, pivot_radius=12, rise=8,lat_skew=30) module lower_bar_end_knuckle(chord=100, pivot_radius=12, rise=8,lat_skew=30, colour="blue") { l_body=chord * 2; w_body=pivot_radius * 2.5; + h_body=70; h_axis=pivot_radius * 2.75; + v_axis = 0; difference() { union () { // (more streamlined) body - translate([160, w_body/2, -22]) + translate([158, 0, -22]) rotate([0,0,180]) scale([1, 2, 1]) color( colour) - airfoil(h=70, L=l_body); + airfoil(h=h_body, L=l_body); // boss for wheel axle - translate([ chord * 0.25, w_body * 0.9, 0]) + translate([ chord * 0.25, w_body * 0.4, 0]) rotate([90, 0, 0]) color( colour) cyl(h=w_body * 1.25, r=20, rounding=5); - + // airfoil stub to be epoxied into the lower bar of + // the linkage + translate([chord*1.25, 0 - pivot_radius, 30]) + rotate([90 + rise, 360 - lat_skew, 0]) + color( colour) + airfoil(h=chord, L=2 - chord); } // scoop for leg-bottom knuckle to rotate within - translate([ chord*0.25, w_body/2, h_axis]) + translate([ chord*0.25, v_axis, h_axis]) rotate([0, 90, 0]) cylinder(h=chord, r=pivot_radius * 1.3); - // space for the airfoil leg to emerge - translate([ chord*0.25, w_body*.75, pivot_radius * 2.25]) - rotate([lat_skew + 45, 0, 0]) - cube([chord, pivot_radius * 4, pivot_radius * 4]); + // space for the airfoil leg to emerge. TODO: This shape is + // NOT right, and a square section is not what's called for! + translate([chord*0.75, v_axis, h_axis]) + rotate([lat_skew, 0, 0]) + prismoid([chord, pivot_radius*2.6], [chord, chord], h=chord); // through hole for pivot axle - translate([-1, w_body/2, h_axis]) + translate([-1, v_axis, h_axis]) rotate([0, 90, 0]) cylinder(h=250, r=pivot_radius/3); // through hole for wheel axle @@ -105,33 +113,35 @@ module lower_bar_end_knuckle(chord=100, pivot_radius=12, rise=8,lat_skew=30, col rotate([90, 0, 0]) cylinder(h=w_body * 1.4, r=12.5); // slice off the front bottom - translate([chord * 1.25, w_body/2, 0 - w_body]) + translate([chord * 1.25, 0, 0 - w_body]) rotate([270-lat_skew, 0, 90]) color( colour) cuboid([2* w_body, 2*w_body, l_body *.75]); // slice off the upper back - translate([0, w_body/2, w_body * 2.5]) + translate([0, 0, w_body * 2.5]) rotate([270-lat_skew, 0, 90]) color( colour) cuboid([2* w_body, 2*w_body, l_body *.75]); - } - - // airfoil stub to be epoxied into the lower bar of - // the linkage - translate([chord*1.25, 1, 30]) - rotate([90 + rise, 360 - lat_skew, 0]) + // radius the top + translate([158 - l_body/2,0,h_body-(w_body/2) - 22]) color( colour) - airfoil(h=chord, L=2 - chord); - -// // brake disk -// translate([(0 - (chord*1.25)), (l_hlb * cos(rise)), 1]) -// rotate([90, 0, 0]) -// color("silver") -// cylinder( h=1.5, r=75); -// // wheel (obviously) -// translate([(0 - (chord*1.25)), (l_hlb * cos(rise)), -10]) -// wheel(); - + scale([1, 1.6, 1]) + difference() { + translate([0, 0, w_body/4 + 1]) + cuboid([l_body, w_body, w_body/2]); + rotate([0, 90, 0]) + cylinder( h=l_body + 2, r=w_body/2, center=true); + } + // radius the lower surface + color( "blue") + difference() { + translate([60, 0, 10]) + cuboid([l_body + 4, w_body*1.6, 80]); + translate([127 - l_body/2, w_body * 0.8 +1, 179]) + rotate([90, 0, 0]) + cylinder( h=w_body *1.6 + 2, r=l_body); + } + } } //translate([-125, 0, 0])