include <../config/angler.scad> module angler_object() { depth = angler_depth; height = angler_height; width = angler_width; thickness = angler_thickness; rounding = thickness / 2; module outside_shape() { move_x = angler_depth / 2 - rounding; move_y = angler_height / 2 - rounding; hull() { translate([-move_x, move_y]) { square(rounding * 2, center = true); } translate([move_x, move_y]) { circle(r = rounding); } translate([-move_x, -move_y]) { circle(r = rounding); } } } module outside_object() { rotate([90, 0, 0]) { linear_extrude(height = angler_thickness, center = true) { outside_shape(); } } } module inside_shape() { move_x = depth / 2 - rounding; move_y = height / 2 - rounding; hull() { translate([-move_x, move_y]) { square(rounding * 2, center = true); } translate([move_x, move_y]) { circle(r = rounding); } } hull() { translate([-move_x, move_y]) { square(rounding * 2, center = true); } translate([-move_x, -move_y]) { circle(r = rounding); } } } module inside_object() { rotate([90, 0, 0]) { size = width - thickness * 2; linear_extrude(height = size, center = true) { inside_shape(); } } } module base_object() { move = width / 2 - thickness / 2; inside_object(); translate([0, move, 0]) { outside_object(); } translate([0, -move, 0]) { outside_object(); } } base_object(); }