$fn = 100; module support() { cube([3, 3, 20.5]); translate([0, 0, 17.5]) cube([3, 11, 3]); } module base() { cube([20, 20, 3]); translate([8.5, 0, 0]) support(); } difference() { union() { base(); translate([0, 20, 30]) rotate([180, 0, 0]) base(); } translate([6, 7.5, 29]) linear_extrude(height=2) { text("TB", 5, "Figtree:style=Bold"); // initiales TB } } // https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/2D_to_3D_Extrusion#Mesh_Refinement_2 module chain_link(r, s, t, fn = 100) { // r = radius // s = size // t = tall union() { rotate_extrude(angle = 180, $fn = 100) translate([s, 0, 0]) circle(r = r, $fn = fn); translate([-s, 0, 0]) rotate([90, -36, 0]) cylinder(r = r, h = s * t, $fn = fn); translate([s, 0, 0]) rotate([90, 0, 0]) cylinder(r = r, h = s * t, $fn = fn); translate([0, -s * t, 0]) rotate_extrude(angle = -180, $fn = 100) translate([s, 0, 0]) circle(r = r, $fn = fn); } } module chain(r, s, t, l, fn = 100) { union() { for (i = [0:l]) { if (i % 2 == 0) { translate([0, -t * 1.05 * i, 0]) chain_link(r, s, t, fn); } else { translate([0, -t * 1.05 * i, 0]) rotate([0, 90, 0]) chain_link(r, s, t, fn); } } } } chain_r = .2; chain_s = .6; chain_t = 1.5; chain_l_long = 16; chain_l_short = 3; //translate([1.5, 1.5, 31]) rotate([-90, 0, -45]) chain_link(.2, .6); union() { translate([1.5, 1.5, 2.5]) rotate([-90, 0, -45]) chain(chain_r, chain_s, chain_t, chain_l_long, $fn); translate([18.5, 1.5, 2.5]) rotate([-90, 0, 45]) chain(chain_r, chain_s, chain_t, chain_l_long, $fn); translate([18.5, 18.5, 2.5]) rotate([-90, 0, -45]) chain(chain_r, chain_s, chain_t, chain_l_long, $fn); translate([1.5, 18.5, 2.5]) rotate([-90, 0, 45]) chain(chain_r, chain_s, chain_t, chain_l_long, $fn); translate([10, 10, 12.33]) rotate([-90, 0, 45]) chain(chain_r, chain_s, chain_t, chain_l_short, $fn); }