Compare commits
3 commits
13503768aa
...
4473ffa5df
Author | SHA1 | Date | |
---|---|---|---|
|
4473ffa5df | ||
|
dc364443d7 | ||
|
012a888b85 |
10
README.md
10
README.md
|
@ -8,11 +8,9 @@ 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/).
|
||||
|
||||
## Copyright
|
||||
## Dependencies
|
||||
|
||||
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
|
||||
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`.
|
||||
|
||||
| Library | Referenced as | Author | Licence |
|
||||
| ------------------------------------------------------------ | ------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ |
|
||||
|
@ -24,4 +22,6 @@ Copyright © Simon Brooke, 2024-2025; may be used and modified under [Creat
|
|||
|
||||
|
||||
|
||||
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 .
|
||||
## 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.
|
||||
|
|
|
@ -3,17 +3,16 @@
|
|||
// (c) Simon Brooke 2025; CC-BY-SA
|
||||
// Derived from Hampus Andersson's Sprocket Generator
|
||||
|
||||
|
||||
include <SprocketGenerator2/files/Sprocket_Generator_v2_example_10.scad>
|
||||
include <BOSL2/std.scad>
|
||||
|
||||
include <pedal.scad>
|
||||
|
||||
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);
|
||||
|
||||
|
@ -36,6 +35,14 @@ 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);
|
||||
|
||||
|
@ -54,9 +61,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, 20 + bbshell])
|
||||
translate([0-crank, 0, 8+bbshell])
|
||||
pedal();
|
||||
translate([crank, 0, 0-4])
|
||||
translate([crank, 0, 0-2])
|
||||
mirror([0, 0, 1])
|
||||
pedal();
|
||||
|
||||
|
@ -73,4 +80,4 @@ module chainset(teeth=53, arms=5, crank=172, bbshell=68) {
|
|||
// chainring();
|
||||
// spider(90, 1);
|
||||
|
||||
chainset(teeth=82, crank=140);
|
||||
// chainset(teeth=82, crank=140);
|
|
@ -3,7 +3,7 @@
|
|||
// (c) Simon Brooke 2025; CC-BY-SA
|
||||
|
||||
|
||||
include <BentSim/Bike_accessories.scad>
|
||||
include <BentSim/Library/Bike_accessories.scad>
|
||||
include <NACAAirfoils/files/Naca4.scad>
|
||||
include <library/skew.scad>
|
||||
|
||||
|
|
43
model/library/skew.scad
Normal file
43
model/library/skew.scad
Normal file
|
@ -0,0 +1,43 @@
|
|||
/* 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();
|
||||
}
|
|
@ -2,15 +2,31 @@
|
|||
|
||||
// (c) Simon Brooke 2025; CC-BY-SA
|
||||
|
||||
include <BOSL2/std.scad>
|
||||
|
||||
module pedal(){
|
||||
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);
|
||||
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);
|
||||
}
|
||||
|
||||
// pedal();
|
|
@ -12,31 +12,31 @@ include <epicyclic.scad>
|
|||
module subframe () {
|
||||
// front leg (supports cross-shaft, epicyclic, motor
|
||||
translate([-25, 1820, -550])
|
||||
color("grey")
|
||||
color("silver")
|
||||
cube([50, 25, 230]);
|
||||
// bottom bracket leg
|
||||
translate([-25, 1690, -578])
|
||||
color("grey")
|
||||
color("silver")
|
||||
cube([50, 25, 310]);
|
||||
// wheel leg
|
||||
translate([-70, 1430, -593])
|
||||
rotate([0, 5, 0])
|
||||
color("grey")
|
||||
color("silver")
|
||||
cube([25, 75, 363]);
|
||||
// front upper
|
||||
translate([-25, 2000, -385])
|
||||
rotate([70, 0, 0])
|
||||
color("grey")
|
||||
color("silver")
|
||||
cube([50, 25, 330]);
|
||||
// central upper
|
||||
translate([-25, 1700, -275])
|
||||
rotate([82, 0, 0])
|
||||
color("grey")
|
||||
color("silver")
|
||||
cube([50, 25, 370]);
|
||||
// rear leg
|
||||
translate([-25, 1200, -515])
|
||||
rotate([-23, 0, 0])
|
||||
color("grey")
|
||||
color("silver")
|
||||
cube([50, 25, 344]);
|
||||
|
||||
// wheel
|
||||
|
@ -46,6 +46,12 @@ 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);
|
||||
|
|
Loading…
Reference in a new issue