include epsilon = 0.01; laptopThickness = 16.35; laptopWidth = 358; standWidth = 152; cableDiameter = 3.75; supportLength = 10; module cableSleeve(cableDiameter, length) { innerRadius = (cableDiameter + 1) / 2; // give 1mm clearence for the cable arcCylinder( height = length, outerRadius = innerRadius + 2, innerRadius = innerRadius, degrees = 360 - (2 * asin(cableDiameter / (cableDiameter + 2)))); } difference() { union() { translate([0, standWidth / 2, cableDiameter + 0.51]) rotate([90, 0, 0]) cableSleeve(cableDiameter = cableDiameter, length = standWidth); translate([-4, standWidth/2 - epsilon, -3]) cube([4, supportLength + epsilon, 7]); translate([ -4, standWidth/-2 - supportLength + epsilon, -3]) cube([4, supportLength + epsilon, 7]); } translate([0, 97, cableDiameter + 0.51]) rotate([90, 0, 0]) //color("SteelBlue") cylinder(r = (cableDiameter + 1) / 2, h = 194); } translate([-8 - laptopThickness - 7, standWidth/2, -4]) cube([4 + 4 + laptopThickness + 7, supportLength, 3]); translate([-8 - laptopThickness - 7, standWidth/-2 - supportLength, -4]) cube([4 + 4 + laptopThickness + 7, supportLength, 3]); translate([-8 - laptopThickness - 7, standWidth/2, -4]) cube([4, supportLength, 16]); translate([-8 - laptopThickness - 7, standWidth/-2 - supportLength, -4]) cube([4, supportLength, 16]);