tricycle-mechanical-design/model/subframe.scad

97 lines
2.6 KiB
OpenSCAD

// subframe.scad:
// (c) Simon Brooke 2025; CC-BY-SA
include <BentSim/Library/Bike_accessories.scad>
include <SprocketGenerator2/files/Sprocket_Generator_v2_example_10.scad>
include <chainset.scad>
include <epicyclic.scad>
module subframe_cycleparts(rim=451, chainring_teeth=82, crank=140) {
// wheel
translate([0, 382, 93])
rotate([0, 0, 90])
wheel(rim=rim, spoke_nbr=0);
translate([-42, 382, 93])
rotate([0, 90, 0])
color("grey")
sprocket(teeth=30, roller=7.9, pitch=12.7);
rotate([90, 0, 90])
translate([660, 180, -40])
chainset( teeth=chainring_teeth, crank=crank);
rotate([0,90,0])
translate([-93, 900, 24])
epicyclic();
}
module aluminium_subframe (rim=451, chainring_teeth=82, crank=140) {
// front leg (supports cross-shaft, epicyclic, motor
translate([-25, 820, -60])
color("silver")
cube([50, 25, 366]);
// bottom bracket leg
translate([-25, 680, -90])
color("silver")
cube([50, 25, 443]);
// wheel leg
translate([-100, 345, -111])
rotate([0, 7, 0])
color("silver")
cube([25, 75, 519]);
// front upper
translate([-25, 1100, 200])
rotate([70, 0, 0])
color("silver")
cube([50, 25, 425]);
// central upper
translate([-25, 714, 343])
rotate([82, 0, 0])
color("silver")
cube([50, 25, 529]);
// rear leg
translate([-25, 0, 0])
rotate([-23, 0, 0])
color("silver")
cube([50, 25, 485]);
subframe_cycleparts(rim, chainring_teeth, crank);
}
/**
* this is more or less right. I need to sculpt out a depression for
* the secondary chain, and make a bracket to hold the epicyclic and
* motor.
*/
module carbon_subframe(rim=451, chainring_teeth=82, crank=140) {
translate([-25, 0, 0])
color("black")
difference() {
rotate([90, 0, 90])
linear_extrude( height=50)
polygon([[1020, 306], [680, 400], [150,408], [50, 0], [1020, 0]]);
translate([-26, 382, 93])
rotate([90,0,90])
cylinder( h=100, r=rim * 0.61);
}
subframe_cycleparts(rim, chainring_teeth, crank);
}
module subframe( structure="carbon", rim=451, chainring_teeth=82, crank=140) {
if (structure == "carbon") {
carbon_subframe(rim=rim, chainring_teeth=chainring_teeth, crank=crank);
} else {
aluminium_subframe(rim=rim, chainring_teeth=chainring_teeth, crank=crank);
}
}
// subframe( structure="carbon");