--- /dev/null
+// -*- C -*-
+
+include <utils.scad>
+
+inrear_d = 15;
+general_d = 8;
+general_th = 5;
+between_cables = 150;
+around_cables = 20;
+cable_dia = 10;
+
+total_d = 40;
+above_h = 40;
+
+// calculated
+
+cable_x = around_cables + cable_dia/2;
+total_x = cable_x * 2 + between_cables;
+
+module CoreElevation(){
+ rectfromto([ 0, 0 ],
+ [ total_d, general_th ]);
+ rectfromto([ 0, 0 ],
+ [ general_th, above_h ]);
+}
+
+module Retainer(){ ////toplevel
+ difference(){
+ union(){
+ linextr_x_yz(0, total_x)
+ mirror([1,0])
+ CoreElevation();
+ }
+
+ for (x = [cable_x, total_x - cable_x])
+ translate([x, 0, 0])
+ linextr(-100, 100)
+ hull(){
+ translate([ 0, -(general_th + cable_dia/2) ])
+ circle(r = cable_dia/2);
+ translate([ 0, -(total_d + 1)])
+ square([ cable_dia, 1], center=true);
+ }
+ }
+}