// Bag hanger // length units are millimeters rodDiameter = 32;//31.74; rodRadius = rodDiameter / 2; hangerThickness = 6.00; outerHangerRadius = rodRadius + hangerThickness; fullHeight = 50.00; hookThickness = 15.00; hookStemLength = rodRadius * 2; hookStopperRadius = hangerThickness + 1; circleResolution=360*4; // faces per rotation include ; // hanger pole wrapper difference() { hollowCylinder(rodRadius, outerHangerRadius, fullHeight); translate([-rodRadius, 0, -0.01]) cube([rodRadius * 2, outerHangerRadius + 0.01, fullHeight + 0.02]); translate([-outerHangerRadius, rodRadius - (hangerThickness * 1.5), -0.01]) cube([outerHangerRadius * 2, outerHangerRadius + 0.01, fullHeight + 0.02]); } // connector from hanger cylinder to hook translate([rodRadius, 0, 0]) cube([hangerThickness, hookStemLength + outerHangerRadius, hookThickness]); // quarter cylinder for hook translate([0, hookStemLength + outerHangerRadius, 0]) difference() { hollowCylinder(rodRadius, outerHangerRadius, hookThickness); translate([-(outerHangerRadius + 0.01),-(outerHangerRadius + 0.01),-0.01]) cube([outerHangerRadius + 0.01, (outerHangerRadius * 2) + 0.02, hookThickness + 0.02]); translate([-(outerHangerRadius + 0.01),-(outerHangerRadius + 0.01),-0.01]) cube([(outerHangerRadius * 2) + 0.02, outerHangerRadius + 0.02, hookThickness + 0.02]); } // hook translate([0, outerHangerRadius + hookStemLength + outerHangerRadius - (hangerThickness/2)]) { cylinder(h=fullHeight, r=hangerThickness, $fn=circleResolution); translate([0,0,fullHeight]) difference() { cylinder(h=hangerThickness / 2, r=hookStopperRadius, $fn=circleResolution); translate([- (hookStopperRadius + 0.01),-0.01,-0.01]) cube([(hookStopperRadius * 2) + 0.02, hookStopperRadius + 0.02, hangerThickness / 2+ 0.02]); } }