// -*- C -*- cable_maxdia = 12; cable_mindia = 6; wallmin = 1; wall = 2; delta_ellipse = 0.5; // calculated outerdia = cable_maxdia / cos(30) + wall*2; delta_shift = 1 - delta_ellipse; module CrossSection(plus=0) { difference(){ circle(r= outerdia/2 + plus, $fn=6); scale([cable_maxdia, cable_maxdia * delta_shift + cable_mindia * delta_ellipse]) circle(r= 0.5, $fn=30); square(center=true, [40, (cable_maxdia-cable_mindia) * delta_shift]); } } linear_extrude(height=20) CrossSection(0); linear_extrude(height=1) CrossSection(2);