+module DivideHook(){ ////toplevel
+ w = tube_th/2;
+ d = divide_gap;
+
+ translate([-1,0] * (w + d + w)){
+ for (sx=[-1,+1])
+ translate([-(w + w+d) * sx, 0]) circle(r= w);
+ difference(){
+ circle(r = 3*w + d);
+ circle(r = w + d);
+ translate([-10*w, -10*w]) square([20*w, 10*w]);
+ }
+ }
+}
+
+module DivideCut(){
+ w = tube_th/2;
+ d = divide_gap;
+
+ difference(){
+ offset(r=divide_gap) DivideHook();
+ DivideHook();
+ translate([-2*w,0]) mirror([0,1]) square([4*w, 4*w]);
+ }
+}
+
+module DivideInPlace(){
+ rotate([0,0, -divide_angle])
+ translate([ -tube_dia/2 -tube_th/2, 0])
+ children();
+}
+
+module DivideSurround(){
+ w = tube_th/2;
+ d = divide_gap;
+
+ offset(r= w*2) {
+ hull() {
+ DivideCut();
+ translate([-(4*w + 2*d), 8*w]) circle(r=w);
+ }
+ }
+}
+
+module MainPlan(){ ////toplevel