I'm still having problems with fudge factors which I need to resolve; I need to learn more about filletting, rounding, radiusing and fairing.
145 lines
4.9 KiB
OpenSCAD
145 lines
4.9 KiB
OpenSCAD
// lowerknuckle.scad
|
|
|
|
// (c) Simon Brooke 2025; CC-BY-SA
|
|
|
|
include <BOSL2/std.scad>
|
|
include <NACAAirfoils/files/Naca4.scad>
|
|
include <library/skew.scad>
|
|
include <wheel.scad>
|
|
|
|
$fn=64;
|
|
|
|
|
|
module lower_bar_end_knuckle_old(chord=100, pivot_radius=12, rise=8,lat_skew=30) {
|
|
l_body=chord * 1.5;
|
|
w_body=pivot_radius * 2.5;
|
|
h_axis=pivot_radius * 2.75;
|
|
|
|
difference() {
|
|
union () {
|
|
translate([l_body/2, w_body/2, h_axis])
|
|
rotate([0, 90, 0])
|
|
cyl(h=l_body, r=w_body/2, rounding=5);
|
|
|
|
// 'except=TOP' in phrase introduces the spurious hulls
|
|
translate([l_body/2, w_body/2, h_axis*.75])
|
|
cuboid([l_body, w_body, h_axis * .75], rounding=5);
|
|
// bulge for wheel axle; the fork insertion end of
|
|
// a lefty axle is 25mm diameter
|
|
translate([chord * 0.25, w_body/2, 0])
|
|
rotate([90, 0, 0])
|
|
cyl(h=w_body, r=25, rounding=5);
|
|
// fairing for this
|
|
translate([chord * 0.25, w_body/2, -3])
|
|
rotate([80, 0, 90])
|
|
prismoid([w_body, 45], [w_body, 10], rounding=5, h=l_body * .75);
|
|
|
|
}
|
|
translate([ chord*0.25, -1, pivot_radius * 3])
|
|
cube([chord, pivot_radius * 4, pivot_radius * 4]);
|
|
// scoop for leg-bottom knuckle to rotate within
|
|
translate([ chord*0.25, w_body/2, h_axis])
|
|
rotate([0, 90, 0])
|
|
cylinder(h=chord, r=pivot_radius * 1.3);
|
|
// through hole for pivot axle
|
|
translate([-1, w_body/2, h_axis])
|
|
rotate([0, 90, 0])
|
|
cylinder(h=l_body+2, r=pivot_radius/3);
|
|
// through hole for wheel axle
|
|
translate([ chord * 0.25, w_body +1, 0])
|
|
rotate([90, 0, 0])
|
|
cylinder(h=w_body-5, r=12.5);
|
|
}
|
|
|
|
// 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])
|
|
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();
|
|
|
|
}
|
|
|
|
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_axis=pivot_radius * 2.75;
|
|
|
|
difference() {
|
|
union () {
|
|
// (more streamlined) body
|
|
translate([160, w_body/2, -22])
|
|
rotate([0,0,180])
|
|
scale([1, 2, 1])
|
|
color( colour)
|
|
airfoil(h=70, L=l_body);
|
|
// boss for wheel axle
|
|
translate([ chord * 0.25, w_body * 0.9, 0])
|
|
rotate([90, 0, 0])
|
|
color( colour)
|
|
cyl(h=w_body * 1.25, r=20, rounding=5);
|
|
|
|
}
|
|
// scoop for leg-bottom knuckle to rotate within
|
|
translate([ chord*0.25, w_body/2, 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]);
|
|
// through hole for pivot axle
|
|
translate([-1, w_body/2, h_axis])
|
|
rotate([0, 90, 0])
|
|
cylinder(h=250, r=pivot_radius/3);
|
|
// through hole for wheel axle
|
|
translate([ chord * 0.25, w_body *1.5, 0])
|
|
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])
|
|
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])
|
|
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])
|
|
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();
|
|
|
|
}
|
|
|
|
//translate([-125, 0, 0])
|
|
// lower_bar_end_knuckle();
|
|
//translate([-125, 0, 125])
|
|
// color("blue")
|
|
// lower_bar_end_knuckle();
|
|
//translate([-100, 74, 0])
|
|
// wheel();
|
|
|