55 lines
1.4 KiB
OpenSCAD
55 lines
1.4 KiB
OpenSCAD
include <BOSL/constants.scad>;
|
|
use <BOSL/metric_screws.scad>;
|
|
|
|
inner_diameter = 410;
|
|
inner_width = 40;
|
|
thickness = 4;
|
|
inner_curve_diameter = 60;
|
|
|
|
module wheel( diameter, width, curve_diameter) {
|
|
intersection() {
|
|
linear_extrude( width, center=true)
|
|
circle( d=diameter);
|
|
union() {
|
|
linear_extrude( width, center=true)
|
|
circle( d=diameter-curve_diameter);
|
|
rotate_extrude( angle=360)
|
|
translate( [(diameter-curve_diameter)/2, 0])
|
|
circle( d=curve_diameter);
|
|
}
|
|
}
|
|
}
|
|
|
|
module base() {
|
|
difference() {
|
|
wheel( inner_diameter+2*thickness, inner_width+2*thickness, inner_curve_diameter+2*thickness);
|
|
wheel( inner_diameter, inner_width, inner_curve_diameter);
|
|
translate( [0, 0, inner_width/2])
|
|
linear_extrude( inner_width, center=true)
|
|
circle( d=inner_diameter-15);
|
|
}
|
|
|
|
*rotate_extrude( angle=360)
|
|
translate( [(diameter-curve_diameter)/2, 0])
|
|
circle( d=curve_diameter);
|
|
}
|
|
|
|
module form() {
|
|
linear_extrude( inner_width+2*thickness+2, center=true)
|
|
offset(50) offset(-100) offset(50)
|
|
polygon([
|
|
[inner_diameter/2+thickness+2, inner_diameter/2],
|
|
[inner_diameter/4, inner_diameter*0.15],
|
|
[-inner_diameter*0.13, inner_diameter*0.13],
|
|
[-inner_diameter*0.1, -inner_diameter*0.4*sin(45)],
|
|
[-inner_diameter*0.45*sin(45), -inner_diameter*0.45*sin(45)],
|
|
[-inner_diameter, -inner_diameter],
|
|
[-inner_diameter, inner_diameter]
|
|
]);
|
|
}
|
|
|
|
scale([1,1,1])
|
|
intersection() {
|
|
base();
|
|
form();
|
|
} |