// subframe.scad: // (c) Simon Brooke 2025; CC-BY-SA include include include include 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 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); } // subframe(chainring_teeth=90, crank=140);