diff --git a/README.md b/README.md index b471bbd..8a182a8 100644 --- a/README.md +++ b/README.md @@ -8,9 +8,11 @@ Design of a highly experimental recumbent tricycle, not software at all. Still at a very preliminary, pre-prototype stage. Work is documented [here](https://www.journeyman.cc/blog/tags-output/Tricycle/). -## Dependencies +## Copyright -The following libraries are used into this model. They should be downloaded and installed into your [OpenSCAD library directory](https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/Libraries), which on Linux systems is usually `$HOME/.local/share/OpenSCAD/libraries`. +Copyright © Simon Brooke, 2024-2025; may be used and modified under [Creative Commons Attribution-Share Alike](https://creativecommons.org/licenses/by-sa/4.0/deed.en) licence. + +#### Parts of the following libraries are incorporated into this model | Library | Referenced as | Author | Licence | | ------------------------------------------------------------ | ------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | @@ -22,6 +24,4 @@ The following libraries are used into this model. They should be downloaded and -## Copyright - -Copyright © Simon Brooke, 2024-2025; may be used and modified under [Creative Commons Attribution-Share Alike](https://creativecommons.org/licenses/by-sa/4.0/deed.en) licence. + but (currently) uses elements from's [BentSim](https://github.com/PRouzeau/BentSim) project, which is [GPL](https://github.com/PRouzeau/BentSim/blob/master/LICENSE) licensed, and sprockets from s, which is licensed under . \ No newline at end of file diff --git a/model/chainset.scad b/model/chainset.scad index 6719eec..d04c620 100644 --- a/model/chainset.scad +++ b/model/chainset.scad @@ -3,16 +3,17 @@ // (c) Simon Brooke 2025; CC-BY-SA // Derived from Hampus Andersson's Sprocket Generator + include include include -function sprocket_radius(teeth=52, roller=7.9, pitch=12.7) = - let(roller_radius = roller/2, - radius = pitch/(2*sin(180/teeth))) - sqrt((radius*radius) - (pitch*(roller_radius+tolerance))+((roller_radius+tolerance)*(roller_radius+tolerance))); +function sprocket_radius(teeth=52, roller=7.9, pitch=12.7) = let(roller_radius = roller/2, + radius = pitch/(2*sin(180/teeth))) + sqrt((radius*radius) - (pitch*(roller_radius+tolerance))+((roller_radius+tolerance)*(roller_radius+tolerance))); + module chainring( teeth=52, roller=7.9, pitch=12.7) { radius = sprocket_radius(teeth=teeth, roller=roller, pitch=pitch); @@ -35,14 +36,6 @@ module spider(radius, arms) { } -/** - * parameterised chainset with, currently, only one chainring; and, - * currently, derailleur-sized chain. Parameters are: - * `teeth`: the number of teeth, obviously; - * `arms`: the number of arms on the spider; - * `crank`: the length of the crank, in millimetres; - * `bbshell`: the width of the bottom bracket shell, in millimetres. - */ module chainset(teeth=53, arms=5, crank=172, bbshell=68) { radius = sprocket_radius(teeth=teeth); @@ -61,9 +54,9 @@ module chainset(teeth=53, arms=5, crank=172, bbshell=68) { prismoid(size1=[10, 25], size2=[7, 18], h=crank +20); // pedals - translate([0-crank, 0, 8+bbshell]) + translate([0-crank, 0, 20 + bbshell]) pedal(); - translate([crank, 0, 0-2]) + translate([crank, 0, 0-4]) mirror([0, 0, 1]) pedal(); @@ -80,4 +73,4 @@ module chainset(teeth=53, arms=5, crank=172, bbshell=68) { // chainring(); // spider(90, 1); -// chainset(teeth=82, crank=140); \ No newline at end of file +chainset(teeth=82, crank=140); \ No newline at end of file diff --git a/model/fourbar.scad b/model/fourbar.scad index 7ab7953..f94f0bc 100644 --- a/model/fourbar.scad +++ b/model/fourbar.scad @@ -3,7 +3,7 @@ // (c) Simon Brooke 2025; CC-BY-SA -include +include include include diff --git a/model/library/skew.scad b/model/library/skew.scad deleted file mode 100644 index ec76370..0000000 --- a/model/library/skew.scad +++ /dev/null @@ -1,43 +0,0 @@ -/* Taken from https://gist.github.com/boredzo/fde487c724a40a26fa9c?permalink_comment_id=4258747 */ - -/* skew takes an array of six angles: - * x along y - * x along z - * y along x - * y along z - * z along x - * z along y - */ -module skew(dims) { -matrix = [ - [ 1, dims[0]/45, dims[1]/45, 0 ], - [ dims[2]/45, 1, dims[4]/45, 0 ], - [ dims[5]/45, dims[3]/45, 1, 0 ], - [ 0, 0, 0, 1 ] -]; -multmatrix(matrix) -children(); -} - -/* example: - * skew([45, 0, 0, 0, 0, 0]) - * cube([10,10,10]); - */ - -// Skews the child geometry. -// xy: Angle towards X along Y axis. -// xz: Angle towards X along Z axis. -// yx: Angle towards Y along X axis. -// yz: Angle towards Y along Z axis. -// zx: Angle towards Z along X axis. -// zy: Angle towards Z along Y axis. -module skew2(xy = 0, xz = 0, yx = 0, yz = 0, zx = 0, zy = 0) { - matrix = [ - [ 1, tan(xy), tan(xz), 0 ], - [ tan(yx), 1, tan(yz), 0 ], - [ tan(zx), tan(zy), 1, 0 ], - [ 0, 0, 0, 1 ] - ]; - multmatrix(matrix) - children(); -} diff --git a/model/pedal.scad b/model/pedal.scad index 8c4d861..c0d0902 100644 --- a/model/pedal.scad +++ b/model/pedal.scad @@ -2,31 +2,15 @@ // (c) Simon Brooke 2025; CC-BY-SA -include module pedal(){ - color("black") - intersection() { - rotate([0, 270, 0]) - scale([.45, .45, .45]) - translate([-20, -160, 0]) - linear_extrude(height = 40, center = true) - import("library/look-keo.svg"); - - rotate([0, 90, 90]) - translate([-50, 0, -43]) - prismoid(size1=[60, 25], size2=[60, 5], height=90); - } - - // axle - color("black") - cylinder(h=80, r=7.1); - translate([0, 0, 8]) - color("black") - cylinder(h=3, r=9); - translate([0, 0, 12]) - color("black") - cylinder(h=12, r1=10, r2=9); + rotate([0, 270, 0]) + scale([.6, .6, .6]) + translate([-50, -160, 0]) + linear_extrude(height = 10, center = true) + // color("black") + import("library/look-keo.svg"); + cylinder(h=80, r=6); } // pedal(); \ No newline at end of file diff --git a/model/subframe.scad b/model/subframe.scad index cc0ade0..61e94b3 100644 --- a/model/subframe.scad +++ b/model/subframe.scad @@ -12,31 +12,31 @@ include module subframe () { // front leg (supports cross-shaft, epicyclic, motor translate([-25, 1820, -550]) - color("silver") + color("grey") cube([50, 25, 230]); // bottom bracket leg translate([-25, 1690, -578]) - color("silver") + color("grey") cube([50, 25, 310]); // wheel leg translate([-70, 1430, -593]) rotate([0, 5, 0]) - color("silver") + color("grey") cube([25, 75, 363]); // front upper translate([-25, 2000, -385]) rotate([70, 0, 0]) - color("silver") + color("grey") cube([50, 25, 330]); // central upper translate([-25, 1700, -275]) rotate([82, 0, 0]) - color("silver") + color("grey") cube([50, 25, 370]); // rear leg translate([-25, 1200, -515]) rotate([-23, 0, 0]) - color("silver") + color("grey") cube([50, 25, 344]); // wheel @@ -46,12 +46,6 @@ module subframe () { scale([0.70, 0.70, 0.70]) wheel(rim=451, spoke_nbr=0); - translate([-30, 1467.5, -450]) - rotate([0, 90, 0]) - color("grey") - sprocket(teeth=30, roller=7.9, pitch=12.7); - - rotate([90, 0, 90]) translate([1680, -410, -40]) chainset( teeth=82, crank=140);