$fn=40; // model faces resolution.

RJ12_otvor_velikost_x=12.85;
RJ12_otvor_velikost_y=2*18.4;
RJ12_otvor_sila_materialu=3.8;
RJ12_vzdalenost_od_okraje=5;
RJ12_sire_konektoru=15;
RJ12_rozestup_mezi_konektory=3.5;
sila_materialu=1.2;
roztec_der=10.16;
pocet_der_v_ose_y=2;
pocet_der_v_ose_x=6;
snizeni_rozmeru_desky=0.254;
RJ_pocet_konektoru=2;

prumer_sroubu=3.2;

//konektor();
drzak();

module drzak(){

for(a = [0 : 1 : RJ_pocet_konektoru-1])
  {  
      translate([a*(RJ12_sire_konektoru+RJ12_rozestup_mezi_konektory)+roztec_der-snizeni_rozmeru_desky,0,0]) 
     konektor(); 
      
      
}

deska();
 }
 
 
module konektor(){
//bocní vyztuhy
    
   translate([sila_materialu/2,0,0])
    rotate ([0,-90,0])
            linear_extrude (height = sila_materialu, convexity = 10)
                polygon(points=[[sila_materialu,RJ12_vzdalenost_od_okraje+RJ12_otvor_sila_materialu],[RJ12_otvor_velikost_y+sila_materialu, RJ12_vzdalenost_od_okraje+RJ12_otvor_sila_materialu],[sila_materialu,roztec_der*pocet_der_v_ose_y-2*snizeni_rozmeru_desky],[sila_materialu,roztec_der*pocet_der_v_ose_y-2*snizeni_rozmeru_desky]]); 
   
     translate([RJ12_sire_konektoru+RJ12_rozestup_mezi_konektory+sila_materialu/2,0,0])
    rotate ([0,-90,0])
            linear_extrude (height = sila_materialu, convexity = 10)
                polygon(points=[[sila_materialu,RJ12_vzdalenost_od_okraje+RJ12_otvor_sila_materialu],[RJ12_otvor_velikost_y+sila_materialu, RJ12_vzdalenost_od_okraje+RJ12_otvor_sila_materialu],[sila_materialu,roztec_der*pocet_der_v_ose_y-2*snizeni_rozmeru_desky],[sila_materialu,roztec_der*pocet_der_v_ose_y-2*snizeni_rozmeru_desky]]);  


translate([0,0,0])
difference () {
        cube([RJ12_sire_konektoru+RJ12_rozestup_mezi_konektory,roztec_der*pocet_der_v_ose_y-2*snizeni_rozmeru_desky,sila_materialu+RJ12_otvor_velikost_y]);   

//tvorba odstupu konektoru od okraje desky
translate([-0.005,-0.005,sila_materialu])
cube([RJ12_sire_konektoru+RJ12_rozestup_mezi_konektory+0.01,RJ12_vzdalenost_od_okraje+0.005,RJ12_otvor_velikost_y+0.01]);     
  
  
    
    translate([(RJ12_sire_konektoru+RJ12_rozestup_mezi_konektory-RJ12_otvor_velikost_x)/2,0,sila_materialu])
    //otvor na konektor
    cube([RJ12_otvor_velikost_x,roztec_der*pocet_der_v_ose_y-2*snizeni_rozmeru_desky+0.01,sila_materialu+RJ12_otvor_velikost_y+0.01]);
 
    
    //odstarněni materialu za drzakem
        translate([-0.005,RJ12_otvor_sila_materialu+RJ12_vzdalenost_od_okraje,sila_materialu])
  
  cube([RJ12_sire_konektoru+RJ12_rozestup_mezi_konektory+0.01,roztec_der*pocet_der_v_ose_y-2*snizeni_rozmeru_desky,sila_materialu+RJ12_otvor_velikost_y]);    
   }
    
    }
    
      module deska(){
        difference () {
        //základní materiál
        cube([roztec_der*pocet_der_v_ose_x-2*snizeni_rozmeru_desky,roztec_der*pocet_der_v_ose_y-2*snizeni_rozmeru_desky,sila_materialu]);   
        
            
            //otvory na šrouby
          translate([roztec_der/2-snizeni_rozmeru_desky,roztec_der/2-snizeni_rozmeru_desky,-0.005])
          cylinder(h=sila_materialu+0.01, r=prumer_sroubu/2, center=false);
            
            translate([(pocet_der_v_ose_x-1)*roztec_der+roztec_der/2-snizeni_rozmeru_desky,roztec_der/2-snizeni_rozmeru_desky,-0.005])
          cylinder(h=sila_materialu+0.01, r=prumer_sroubu/2, center=false);
            
            translate([roztec_der/2-snizeni_rozmeru_desky,(pocet_der_v_ose_y-1)*roztec_der+roztec_der/2-snizeni_rozmeru_desky,-0.005])
          cylinder(h=sila_materialu+0.01, r=prumer_sroubu/2, center=false);
            
            translate([(pocet_der_v_ose_x-1)*roztec_der+roztec_der/2-snizeni_rozmeru_desky,(pocet_der_v_ose_y-1)*roztec_der+roztec_der/2-snizeni_rozmeru_desky,-0.005])
          cylinder(h=sila_materialu+0.01, r=prumer_sroubu/2, center=false);
            
        }
     
      
          }