+/* Draws a diagonal segment
+ * size segment size
+ * r segment radius (default = segment_radius(h))
+ * on on-relief/low-relief flag
+ */
+module diag_segment(size, r = 0, on = true)
+{
+ radius = (r == 0) ? segment_radius(size) : r;
+ length = (size > 2 * radius) ? size - 2 * radius : 0;
+ if (on)
+ {
+ polyhedron(points = [ [ radius, radius, 0 ]
+ , [ radius, 2.41 * radius, 0 ]
+ , [ size / 2 - 2.41 * radius, size - radius, 0 ]
+ , [ size / 2 - radius, size - radius, 0 ]
+ , [ size / 2 - radius, size - 2.41 * radius, 0 ]
+ , [ 2.41 * radius, radius, 0 ]
+ , [ 1.70 * radius, 1.70 * radius, radius ]
+ , [ size / 2 - 1.70 * radius, size - 1.70 * radius, radius ]
+ ]
+ , triangles = [ [ 0, 1, 6 ]
+ , [ 1, 2, 6 ]
+ , [ 2, 7, 6 ]
+ , [ 2, 3, 7 ]
+ , [ 3, 4, 7 ]
+ , [ 4, 5, 7 ]
+ , [ 5, 6, 7 ]
+ , [ 0, 6, 5 ]
+ , [ 0, 5, 1 ]
+ , [ 1, 5, 4 ]
+ , [ 1, 4, 2 ]
+ , [ 2, 4, 3 ]
+ ]);
+ } else {
+ polyhedron(points = [ [ radius, radius, 0 ]
+ , [ radius, 2.41 * radius, 0 ]
+ , [ size / 2 - 2.41 * radius, size - radius, 0 ]
+ , [ size / 2 - radius, size - radius, 0 ]
+ , [ size / 2 - radius, size - 2.41 * radius, 0 ]
+ , [ 2.41 * radius, radius, 0 ]
+ , [ 1.70 * radius, 1.70 * radius, -radius ]
+ , [ size / 2 - 1.70 * radius, size - 1.70 * radius, -radius ]
+ ]
+ , triangles = [ [ 0, 1, 6 ]
+ , [ 1, 2, 6 ]
+ , [ 2, 7, 6 ]
+ , [ 2, 3, 7 ]
+ , [ 3, 4, 7 ]
+ , [ 4, 5, 7 ]
+ , [ 5, 6, 7 ]
+ , [ 0, 6, 5 ]
+ , [ 0, 5, 1 ]
+ , [ 1, 5, 4 ]
+ , [ 1, 4, 2 ]
+ , [ 2, 4, 3 ]
+ ]);
+ linear_extrude(height = radius)
+ polygon(points = [ [ radius, radius ]
+ , [ radius, 2.41 * radius ]
+ , [ size / 2 - 2.41 * radius, size - radius ]
+ , [ size / 2 - radius, size - radius ]
+ , [ size / 2 - radius, size - 2.41 * radius ]
+ , [ 2.41 * radius, radius ]
+ ]
+ , paths = [ [ 0, 1, 2, 3, 4, 5 ] ]);
+ }
+}
+