// -*- C -*- hoopthick = 3; hinnerrad = 15; houterrad = hinnerrad + hoopthick; hcentredist = 10; blockdepth = 5; blockwidth = hcentredist*2 + 6; height = 20; module Oval(centredist, rad) { hull() { translate([-centredist/2,0,0]) circle(r=rad); translate([+centredist/2,0,0]) circle(r=rad); } } module Hoop(){ difference(){ hull(){ Oval(hcentredist, houterrad); translate([0, (blockdepth + hoopthick)/2 + hinnerrad]) square([blockwidth, blockdepth + hoopthick], center=true); } Oval(hcentredist, hinnerrad); } } module Positive(){ linear_extrude(height=20) Hoop(); } Positive();