94 lines
1.4 KiB
OpenSCAD
94 lines
1.4 KiB
OpenSCAD
od=75;
|
|
id=9.5;
|
|
len=80;
|
|
|
|
module truss()
|
|
{
|
|
polygon([[od/2-3,0],
|
|
[id/2,len/4],
|
|
[od/2-3,len/2],
|
|
[id/2,3*len/4],
|
|
[od/2-3,len],
|
|
[od/2,len],
|
|
[id/2+3,3*len/4],
|
|
[od/2,len/2],
|
|
[id/2+3,len/4],
|
|
[od/2,0]
|
|
]);
|
|
}
|
|
|
|
module end_spoke()
|
|
{
|
|
linear_extrude(3)
|
|
polygon([[-1.5,id/2],
|
|
[1.5,id/2],
|
|
[1.5,od/2],
|
|
[-1.5,od/2]]);
|
|
}
|
|
|
|
difference()
|
|
{
|
|
union() // main body
|
|
{
|
|
linear_extrude(len)
|
|
{
|
|
difference()
|
|
{
|
|
circle(d=od, $fn=90);
|
|
circle(d=od-4, $fn=90);
|
|
}
|
|
|
|
difference()
|
|
{
|
|
circle(d=id+4, $fn=90);
|
|
circle(d=id, $fn=90);
|
|
}
|
|
}
|
|
|
|
// diagonal spokes
|
|
translate([0,1.5,0])
|
|
rotate([90,0,0])
|
|
linear_extrude(3)
|
|
truss();
|
|
|
|
translate([-1.5,0,0])
|
|
rotate([90,0,90])
|
|
linear_extrude(3)
|
|
truss();
|
|
|
|
translate([0,-1.5,0])
|
|
rotate([90,0,180])
|
|
linear_extrude(3)
|
|
truss();
|
|
|
|
translate([1.5,0,0])
|
|
rotate([90,0,-90])
|
|
linear_extrude(3)
|
|
truss();
|
|
}
|
|
|
|
// quick hack: cut in half so we can add flange
|
|
translate([0,0,len/2])
|
|
linear_extrude(len/2+1)
|
|
circle(d=od+1, $fn=90);
|
|
}
|
|
|
|
// flange
|
|
linear_extrude(2)
|
|
difference()
|
|
{
|
|
circle(d=od+20, $fn=90);
|
|
circle(d=od, $fn=90);
|
|
}
|
|
|
|
// spokes to support the flange
|
|
end_spoke();
|
|
|
|
rotate([0,0,90])
|
|
end_spoke();
|
|
|
|
rotate([0,0,180])
|
|
end_spoke();
|
|
|
|
rotate([0,0,-90])
|
|
end_spoke(); |