1
0
Fork 0
3d/bag hanger.scad
2024-04-13 12:48:55 -04:00

48 lines
1.9 KiB
OpenSCAD

// 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 <ng_common/hollow_cylinder.scad>;
// 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]);
}
}