Much work on the lower knuckle, and I've learned a lot. However, because
I forgot to allow for all the weird skews, this is wrong. It's remediable, but not now!
This commit is contained in:
parent
775167b4e9
commit
72797decb0
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
// (c) Simon Brooke 2025; CC-BY-SA
|
// (c) Simon Brooke 2025; CC-BY-SA
|
||||||
|
|
||||||
|
include <BOSL2/std.scad>
|
||||||
include <NACAAirfoils/files/Naca4.scad>
|
include <NACAAirfoils/files/Naca4.scad>
|
||||||
include <library/skew.scad>
|
include <library/skew.scad>
|
||||||
include <wheel.scad>
|
include <wheel.scad>
|
||||||
|
@ -34,31 +34,58 @@ module fourbar_leg(length=1000, chord=100, long_skew=30, lat_skew=30) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
module lower_knuckle(chord=100, pivot_radius=12) {
|
module loawer_bar_end_knuckle(chord=100, pivot_radius=12, rise=8) {
|
||||||
l_body=chord * 1.5;
|
l_body=chord * 1.5;
|
||||||
w_body=pivot_radius * 2.5;
|
w_body=pivot_radius * 2.5;
|
||||||
h_axis=pivot_radius * 3;
|
h_axis=pivot_radius * 2.75;
|
||||||
|
|
||||||
difference() {
|
difference() {
|
||||||
union () {
|
union () {
|
||||||
translate([0, w_body/2, h_axis])
|
translate([l_body/2, w_body/2, h_axis])
|
||||||
rotate([0, 90, 0])
|
rotate([0, 90, 0])
|
||||||
cylinder(h=l_body, r=w_body/2);
|
cyl(h=l_body, r=w_body/2, rounding=5);
|
||||||
cube([l_body, w_body, h_axis]);
|
translate([l_body/2, w_body/2, h_axis/2])
|
||||||
translate([chord * 1.25, w_body, 0])
|
cuboid([l_body, w_body, h_axis], rounding=5, except=TOP);
|
||||||
|
// bulge for wheel axle; the fork insertion end of
|
||||||
|
// a lefty axle is 25mm diameter
|
||||||
|
translate([chord * 1.25, w_body/2, 0])
|
||||||
rotate([90, 0, 0])
|
rotate([90, 0, 0])
|
||||||
cylinder(h=w_body, r=pivot_radius * 2);
|
cyl(h=w_body, r=25, rounding=5);
|
||||||
|
// fairing for this
|
||||||
|
translate([chord * 1.25, w_body/2, -7.5])
|
||||||
|
rotate([80, 0, 270])
|
||||||
|
prismoid([w_body, 35], [w_body, 10], rounding=5, h=l_body/2);
|
||||||
|
|
||||||
}
|
}
|
||||||
translate([ chord*0.25, -1, pivot_radius * 3])
|
translate([ chord*0.25, -1, pivot_radius * 3])
|
||||||
cube([chord, pivot_radius * 4, pivot_radius * 4]);
|
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])
|
translate([ chord*0.25, w_body/2, h_axis])
|
||||||
rotate([0, 90, 0])
|
rotate([0, 90, 0])
|
||||||
cylinder(h=chord, r=pivot_radius * 1.5);
|
cylinder(h=chord, r=pivot_radius * 1.3);
|
||||||
// throough hole for pivot axle
|
// through hole for pivot axle
|
||||||
translate([-1, w_body/2, h_axis])
|
translate([-1, w_body/2, h_axis])
|
||||||
rotate([0, 90, 0])
|
rotate([0, 90, 0])
|
||||||
cylinder(h=l_body+2, r=pivot_radius/3);
|
cylinder(h=l_body+2, r=pivot_radius/3);
|
||||||
|
// through hole for wheel axle
|
||||||
|
translate([chord * 1.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, 5 - chord, 0])
|
||||||
|
rotate([90-rise, 0, 180])
|
||||||
|
airfoil(h=chord, L=chord-2);
|
||||||
|
// root reinforcement for the above
|
||||||
|
translate([chord * 1.25, 5 - chord/3, 9])
|
||||||
|
rotate([90, 0, 180])
|
||||||
|
airfoil(h=chord/3, L=chord);
|
||||||
|
translate([(chord * .75), 0, 10])
|
||||||
|
rotate([90, 0, 0])
|
||||||
|
prismoid([chord -1, 6], [chord -2, 0], h=(chord/3));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
module fourbar_axle_half( length, chord, long_skew) {
|
module fourbar_axle_half( length, chord, long_skew) {
|
||||||
|
@ -85,7 +112,7 @@ module fourbar_axle_half( length, chord, long_skew) {
|
||||||
translate([(0 - (chord*1.25)), l_hlb * cos(rise), 30])
|
translate([(0 - (chord*1.25)), l_hlb * cos(rise), 30])
|
||||||
rotate([0, long_skew, 0])
|
rotate([0, long_skew, 0])
|
||||||
color("black")
|
color("black")
|
||||||
lower_knuckle(chord, 12);
|
loawer_bar_end_knuckle(chord, 12, rise);
|
||||||
|
|
||||||
// wheel
|
// wheel
|
||||||
translate([-50, l_hlb + 72, -40])
|
translate([-50, l_hlb + 72, -40])
|
||||||
|
@ -121,10 +148,9 @@ module fourbar(length=1000, chord=100, long_skew=30, lat_skew=30, shoulder=650)
|
||||||
|
|
||||||
translate([-125, 0, 0])
|
translate([-125, 0, 0])
|
||||||
color("blue")
|
color("blue")
|
||||||
lower_knuckle();
|
loawer_bar_end_knuckle();
|
||||||
/* translate([0, 77, 0])
|
translate([0, 77, 0])
|
||||||
rotate([270, 0, 0])
|
wheel();
|
||||||
wheel();*/
|
|
||||||
translate([0, 40, 0])
|
translate([0, 40, 0])
|
||||||
color("silver")
|
color("silver")
|
||||||
rotate([90, 0, 0])
|
rotate([90, 0, 0])
|
||||||
|
|
|
@ -20,42 +20,43 @@
|
||||||
module wheel (iso=451) {
|
module wheel (iso=451) {
|
||||||
radius=(iso/2)+7;
|
radius=(iso/2)+7;
|
||||||
|
|
||||||
// rim
|
rotate([270, 0, 0]) {
|
||||||
color("grey")
|
// rim
|
||||||
difference() {
|
color("grey")
|
||||||
cylinder(h=22, r=radius, center=true);
|
difference() {
|
||||||
translate([0,0, -11])
|
cylinder(h=22, r=radius, center=true);
|
||||||
cylinder(h=26, r=(radius-10));
|
translate([0,0, -11])
|
||||||
|
cylinder(h=26, r=(radius-10));
|
||||||
|
}
|
||||||
|
|
||||||
|
// carbon cones covering the spokes
|
||||||
|
color("black")
|
||||||
|
translate([0,0, 4])
|
||||||
|
cylinder(h=26.6, r1=radius, r2=22.5);
|
||||||
|
color("black")
|
||||||
|
mirror([0, 0, -1])
|
||||||
|
translate([0,0, 4])
|
||||||
|
cylinder(h=14.4, r1=radius, r2=29);
|
||||||
|
|
||||||
|
// tyre
|
||||||
|
color("black")
|
||||||
|
rotate_extrude(convexity = 10)
|
||||||
|
translate([radius +10, 0, 0])
|
||||||
|
circle(r = 12, $fn = 100);
|
||||||
|
|
||||||
|
// hub
|
||||||
|
color("grey")
|
||||||
|
translate([0, 0, -40])
|
||||||
|
cylinder(h=65, r=22.5);
|
||||||
|
|
||||||
|
// axle
|
||||||
|
color("silver") {
|
||||||
|
translate([0, 0, -45])
|
||||||
|
cylinder(h=70, r1=12.5, r2=7.5);
|
||||||
|
translate([0, 0, -60])
|
||||||
|
cylinder(h=25, r=12.5);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// carbon cones covering the spokes
|
|
||||||
color("black")
|
|
||||||
translate([0,0, 4])
|
|
||||||
cylinder(h=26.6, r1=radius, r2=22.5);
|
|
||||||
color("black")
|
|
||||||
mirror([0, 0, -1])
|
|
||||||
translate([0,0, 4])
|
|
||||||
cylinder(h=14.4, r1=radius, r2=29);
|
|
||||||
|
|
||||||
// tyre
|
|
||||||
color("black")
|
|
||||||
rotate_extrude(convexity = 10)
|
|
||||||
translate([radius +10, 0, 0])
|
|
||||||
circle(r = 12, $fn = 100);
|
|
||||||
|
|
||||||
// hub
|
|
||||||
color("grey")
|
|
||||||
translate([0, 0, -40])
|
|
||||||
cylinder(h=65, r=22.5);
|
|
||||||
|
|
||||||
// axle
|
|
||||||
color("silver") {
|
|
||||||
translate([0, 0, -45])
|
|
||||||
cylinder(h=70, r1=12.5, r2=7.5);
|
|
||||||
translate([0, 0, -85])
|
|
||||||
cylinder(h=40, r=12.5);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// wheel();
|
// wheel();
|
Loading…
Reference in a new issue