scale=40;

durchmesserled=30.5;
durchmesserledscale=durchmesserled/0.8;

r_facets = rands(5,10,1)[0];
facets=r_facets;

r_height = rands(1,2,1)[0];
// r_height = rands(2,4,1)[0];

height=r_height;  
r_plane = rands(0,10,1)[0];
plane=r_plane;
r_top = rands(1,2,0)[0];
top=1;
r_cut = rands(0,16,1)[0];
cut=r_cut;
half=scale/1.5;
$fn=facets;

// Rock Generator
translate([0,0,-10]){
    difference(){
// Base model   
        union(){
            translate([0,0,0])
                cylinder(h=scale*height-cut,d1=scale,d2=half*3);
            translate([0,0,0+scale*height-cut])
                cylinder(h=(half*3)/top,d1=half*3,d2=plane);
        }
// Model which should be removed from the base model
        scale([0.95,0.95,0.95]){
//       scale([0.8,0.8,0.95]){           
            union(){
                $fn=0;
                translate([0,0,-1])
                    cylinder(h=scale*height-cut,d1=durchmesserledscale,d2=half*3);
                translate([0,0,-1+scale*height-cut])
                    cylinder(h=(half*3)/top,d1=half*3,d2=plane);
            }   
        }    
    }
}

// Socket
translate([100,0,-5]){
    difference(){
        cylinder(h=10,d1=scale*1.1,d2=scale*1, center= true);
            union(){
                $fn=0;
                translate([0,0,0])
                    cylinder(h=scale*height-cut,d1=durchmesserled,d2=half*3);
                translate([0,0,0+scale*height-cut])
                    cylinder(h=(half*3)/top,d1=half*3,d2=plane);
            }
    }
}   