thick = 3; //thickness of the material offset = 0.45; //enter offset characteristic to the laser cutter radius = 100; //radius of the ring joints = 20; //number of joints joint_depth = 10; //joint depth module shade_ring(radius, joints, joint_depth){ difference(){ cylinder(r=radius, h=thick); cylinder(r=radius-joint_depth*2, h=thick); rotate( 360/(joints*2), [0,0,1]) for ( i = [0:joints] ) { rotate( i*360/joints, [0, 0, 1]) translate( [0, radius-joint_depth, 0] ) cube(size=[thick-offset, joint_depth, thick]); }; for ( i = [0:joints] ) { rotate( i*360/joints, [0, 0, 1]) translate( [0, radius-joint_depth*2, 0] ) cube(size=[thick-offset,joint_depth,thick]); }; } }; //module shade_ring module shade_ring_cut(radius, joints, joint_depth, angle){ intersection(){ translate([-radius*2,0,0]) cube(size=[radius*4, radius*2, radius*2]); rotate([0,0,angle]) translate([-radius*2,-radius*2,0]) cube(size=[radius*4, radius*2, radius*2]); difference(){ cylinder(r=radius, h=thick); cylinder(r=radius-joint_depth*2, h=thick); rotate( 360/(joints*2), [0,0,1]) for ( i = [0:joints] ) { rotate( i*360/joints, [0, 0, 1]) translate( [0, radius-joint_depth, 0] ) cube(size=[thick-offset, joint_depth, thick]); }; for ( i = [0:joints] ) { rotate( i*360/joints, [0, 0, 1]) translate( [0, radius-joint_depth*2, 0] ) cube(size=[thick-offset,joint_depth,thick]); }; }; }; };//module shade_ring_cut projection(cut = true){ shade_ring(radius, joints, joint_depth); // 1/3 (120degree) translate([300,0,0]) shade_ring_cut(radius, joints, joint_depth, angle=120); // Half (180degree) translate([600,0,0]) shade_ring_cut(radius, joints, joint_depth, angle=180); }