height = 10;
thickness = 3;
inner_gap = 13;
arm_length = 30;
small_hook_inner_distance = 31;
small_hook_additonal_arm_length = -10;
square_hook_top = true;
module ring(h = 1, diameter=6, thick=1, $fn = 64)
union()
{
difference(){
cylinder(h=h, r=(diameter/2) + thickness, center=true);
cylinder(h=h+1, r=diameter/2, center=true);
translate([150,0,0])
cube(300, center=true);
}
translate([0,diameter/2 + thickness/2,0])
cylinder(h=h, r=thickness/2, center=true);
translate([0,-(diameter/2 + thickness/2),0])
cylinder(h=h, r=thickness/2, center=true);
}
module arm(len, width, height, offset, $fn = 64)
{
translate([len/2,offset,0])
{
cube([len,width,height], center=true);
}
translate([0,offset,0])
cylinder(d=width,h=height, center= true);
translate([len,offset,0])
cylinder(d=width,h=height, center= true);
}
if (square_hook_top)
{
cube([thickness,inner_gap+2*(thickness),height], center=true);
}
else
{
ring(h=height, diameter=inner_gap, thick=thickness);
}
mirror([180, 0, 0])
translate([-(arm_length + small_hook_additonal_arm_length),(inner_gap + small_hook_inner_distance)/2 + thickness,0])
ring(h=height, diameter=small_hook_inner_distance, thick=thickness);
arm(arm_length + small_hook_additonal_arm_length
, thickness, height, inner_gap/2+thickness/2);
arm(arm_length, thickness, height, -(inner_gap/2+thickness/2));