diff options
Diffstat (limited to 'docs/prints/calibrate_size.scad')
-rw-r--r-- | docs/prints/calibrate_size.scad | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/docs/prints/calibrate_size.scad b/docs/prints/calibrate_size.scad new file mode 100644 index 00000000..f1e60c95 --- /dev/null +++ b/docs/prints/calibrate_size.scad @@ -0,0 +1,77 @@ +// Calibration object for delta sizing +// +// Generate STL using OpenSCAD: +// openscad calibrate_size.scad -o calibrate_size.stl + +base_radius = 70; +base_height = 1.5; +base_width = 8; +cylinder_height = 5; +cylinder_radius = 5; +cylinder_outer_dist = 65; +ridge_cut_radius = .5; +text_height = 1; +text_size = 5; +spoke_angles = [0, 60, 120, 180, 240, 300]; +CUT=0.01; + +// Circular ring around entire object (to help reduce warping) +module base_ring() { + difference() { + cylinder(h=base_height, r=base_radius); + translate([0, 0, -CUT]) + cylinder(h=base_height + 2*CUT, r=base_radius-base_width); + } +} + +// The base ring plus the base spokes +module base() { + base_ring(); + // Spokes + for (angle=spoke_angles) + rotate([0, 0, angle]) + translate([-base_width/2, -CUT, 0]) + cube([base_width, base_radius-base_width+2*CUT, base_height]); +} + +// Cylinder that measurement ridges are cut out of +module measuring_cylinder() { + cut_width = cylinder_radius; + difference() { + cylinder(h=cylinder_height+CUT, r=cylinder_radius, $fn=60); + for (angle=spoke_angles) + rotate([0, 0, angle]) + translate([-cut_width, cylinder_radius - ridge_cut_radius, -CUT]) + cube([2*cut_width, cut_width, cylinder_height+3*CUT]); + } +} + +// All the measuring cylinders around the ring +module measuring_cylinders() { + measuring_cylinder(); + for (angle=spoke_angles) + rotate([0, 0, angle]) + translate([0, cylinder_outer_dist, 0]) + measuring_cylinder(); +} + +// Text writing +module write_text(angle, dist, msg) { + text_offset = dist + 1 - text_size/2; + rotate([0, 0, angle]) + translate([0, text_offset, base_height - CUT]) + linear_extrude(height=text_height + CUT) + text(msg, size=text_size, halign="center"); +} + +// Final object with text descriptions +module calibration_object() { + base(); + translate([0, 0, base_height-CUT]) + measuring_cylinders(); + write_text(120, cylinder_outer_dist - 20, "A"); + write_text(240, cylinder_outer_dist - 20, "B"); + write_text(0, cylinder_outer_dist - 20, "C"); +} + +calibration_object(); |