/* [OpenSCAD] */
$fn=36;

/* [Konstruktion] */
Radius = 5;
Schlitze = 5;
Mittelteil = 15;
M3 = 2.5;

/* [Debug] */
debug=false;
// Auf Z Achse schneiden
slice_xy = 320; //[0.5:0.5:50]

// Auf X Achse schneiden
slice_yz = 260; //[0.5:0.5:30]

// Auf Y Achse schneiden
slice_xz = 160; //[0.5:0.5:30]

/* [Hidden] */

//build_volume = [ 130, 80, 160];
build_volume = [ 50, 50, 50];


module ei(radius, oben=true, unten=true) {
  translate([0,0,radius]) {
    //translate([0,0,-0.1]) 
    if (unten) intersection() {
      sphere(radius);
      translate([0,0,-2*radius]) cube(4*radius, center=true);
    }
    if (oben) intersection() {
      scale([1,1,2]) sphere(radius);
      translate([0,0,+2*radius]) cube(4*radius, center=true);
    }
  }
}

module kopf() {
  difference() {
    ei(Radius);
    ei(Radius-1.5);
    translate([0,0,Radius*1.5]) for(i=[0:360/Schlitze:360]) rotate([45,0,i]) translate([Radius,0,0]) scale([0.5,2,1]) cylinder(r=Radius, h=Radius/5, center=true);
  }
}

module stoepsel() {
  translate([0,0,Mittelteil]) kopf();
  translate([0,0,-2*Radius]) ei(Radius, unten=false);
  translate([0,0,-Radius/2]) difference() {
    cylinder(d=Radius-1, h=Mittelteil);
    cylinder(d=M3, h=Mittelteil);
  }
}

module adapter() {
  translate([0,0,-2*Radius]) {
    ei(Radius, oben=false);
    cylinder(r1=Radius, d2=M3, h=Radius*2);
  }
  cylinder(d1=M3, d2=M3*3/5, h=Mittelteil);
}


!kopf();

//translate([10,10,0]) 
stoepsel();
//translate([-10,-10,0]) 
adapter();

//
//// Schnittbild wie im CT/MR:
//intersection() {
//
//
//  if (debug) {
//    cube( [ build_volume.x, build_volume.y, slice_xy ], center=true );
//    cube( [ build_volume.x, slice_xz, build_volume.z ], center=true );
//    cube( [ slice_yz, build_volume.y, build_volume.z ], center=true );
//  }
//}
//