+infty = 100;
+eps = 0.01;
+
+diameter = 25;
+thick = 2.5;
+base_thick = 1.5;
+d_minus = thick; // cca 45 deg
+
+center_hole_d = 3.5;
+side_holes = 5;
+side_hole_d = 5;
+
+cut_hole_d = 2;
+cut_slot = 1;
+
+module body() {
+ cylinder(r1 = diameter/2, r2 = diameter/2-d_minus/2, h = thick/2 + eps);
+ translate([0, 0, thick/2-eps])
+ cylinder(r2 = diameter/2, r1 = diameter/2-d_minus/2, h = thick/2 + eps);
+}
+
+difference() {
+ body($fn = 128);
+ translate([0, 0, -eps])
+ cylinder(r = center_hole_d/2, h = thick + 2*eps, $fn = 128);
+ if (side_holes > 0)
+ for (angle = [0:360/side_holes:360]) rotate([0, 0, angle+180/side_holes])
+ translate([diameter/3 - d_minus + center_hole_d/2, 0, -eps])
+ cylinder(r = side_hole_d/2, h = thick + 2*eps, $fn=128);
+ if (base_thick)
+ difference() {
+ translate([0, 0, base_thick])
+ cylinder(
+ r1 = center_hole_d/2 + base_thick,
+ r2 = diameter/2-d_minus/2,
+ h = thick-base_thick+eps, $fn = 128);
+ translate([0, 0, base_thick-eps])
+ cylinder(r1 = center_hole_d/2 + base_thick,
+ r2 = center_hole_d/2 + base_thick/2,
+ h = thick - base_thick + eps, $fn = 128);
+ }
+ if (cut_hole_d) {
+ translate([diameter/3-cut_hole_d/2, 0, -eps])
+ cylinder(r = cut_hole_d/2, h = thick + 2*eps, $fn =128);
+ translate([diameter/2-d_minus/2, -cut_slot/2, -eps])
+ cube([diameter/2, cut_slot, thick + 2*eps]);
+ }
+}