diff --git a/src/desk_cable_holder/desk_cable_holder.scad b/src/desk_cable_holder/desk_cable_holder.scad new file mode 100644 index 0000000000000000000000000000000000000000..a386e5439e1dadf2f7179c151690a307f9bdb83a --- /dev/null +++ b/src/desk_cable_holder/desk_cable_holder.scad @@ -0,0 +1,72 @@ + +cable_thickness=4.5; +holder_height = 30; +holder_diameter=9; +holder_wall=2; +clip_width = 20; +radius = 13; //radius of the table +thickness = 22.55 + 0.2; //thickness of the table + +module curve(h) { + r2 = radius*radius; + t2 = thickness*thickness*(1/4); + t = sqrt(r2-t2); + translate([radius-t, 0]) union() { + intersection() { + translate([t, 0]) + circle($fn=100, r=radius); + square([h*2, thickness], center=true); + } + translate([0, -thickness/2]) square([h, thickness]); + } +} + +module clip() { + linear_extrude(clip_width) + difference() { + offset(3, $fn=50) curve(20); + curve(30); + } +} + +module clip_outer() { + linear_extrude(clip_width) offset(3, $fn=50) curve(20); +} + +module clip_inner() { + translate([0, 0, -.5]) linear_extrude(clip_width+1) curve(30); +} + +module holder_curve() { + difference() { + circle(d=holder_diameter+2*holder_wall, $fn=50); + circle(d=holder_diameter, $fn=50); + translate([0, -2]) square([10, 4]); + } +} + +module holder_outer() { + /* linear_extrude(holder_height/2, twist=90, $fn=200) scale(1.5) holder_curve(); + translate([0, 0, holder_height/2]) rotate([0, 0, -90]) + linear_extrude(holder_height/2, twist=-90, scale=(1/1.5), $fn=200) scale(1.5) holder_curve(); */ + translate([-holder_diameter/2, 0, 0]) + cylinder(d=holder_diameter+holder_wall*2, $fn=50, h=thickness+6, center=true); +} + +module holder_inner() { + translate([-holder_diameter/2, 0, 0]) + cylinder(d=holder_diameter, $fn=50, h=holder_height+1, center=true); +} + +union() { + difference() { + union() { + translate([0, clip_width/2, 0]) rotate([90, 0, 0]) clip_outer(); + holder_outer(); + //scale([2, 1, 2]) translate([0, clip_width/2, 0]) rotate([90, 0, 0]) clip_inner(); + } + holder_inner(); + translate([0, clip_width/2, 0]) rotate([90, 0, 0]) clip_inner(); + translate([15, 0, 0]) cube([40, cable_thickness, 100], center=true); + } +} \ No newline at end of file