3d/guard.scad

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();
}