Ficher scad décrivant les pièces

support_akka_v2.scad
///////////////////////////////////////////////////////////////////////////
//modèle support caméra pour AKKA
//B. Vandeportaele 2017
///////////////////////////////////////////////////////////////////////////
 
epaisseurbarre=10.2;
largeurbarre=20.2;
longueurbarre=310;
epaisseurcamera=29;
profondeurcamera=30;
 
///////////////////////////////////////////////////////////////////////////
 module barre(longueur,amincicementtrou)
{        
    //amincicementtrou=1; //diamètre diminué du trou sur la barre de fixation, mettre à 0 pour avoir le modèle de barre, et à u
difference(){  
scale([longueur+10,largeurbarre+0.2,epaisseurbarre])
    //10 ajoutés en x pour avoir la barre qui creuse le support inférieur des 2 cotés
    //0.2 ajouté en y pour jeu
    cube([1,1,1],true); 
    for (j=[-1,1]){ 
//  translate([j*((longueur/2)-20),0,0]) 
          translate([j*((longueur/2)-20),0,0]) 
#cylinder(h = 20, r = (6.25-amincicementtrou)/2, center = true,$fn=30);
    }
    //rotate(-90,[0,1,0])
}
}
///////////////////////////////////////////////////////////////////////////
 module camera()
{
    longueurobjectif=48.7;
    diametreobjectif=27.7;
     union() {
 translate([0,30/2 + longueurobjectif/2,0])
  	rotate ([90,0,0]) cylinder (h = longueurobjectif, r=0.2+diametreobjectif/2, center = true, $fn=120);
         //0.2 ajouté au rayon pour jeu
         cube([29+0.2,30+0.2,epaisseurcamera+0.2],true);  //0.2 ajouté à chaque coté  pour jeu
         //parallélépipède sous l'objectif pour creuser la pièce supports
         translate([0,30/2 + 20/2,-diametreobjectif/4])
         cube([diametreobjectif+0.2*2,20,diametreobjectif/2+2+0.2*2],true); 
 
 }
}
///////////////////////////////////////////////////////////////////////////
module  trousfixation()
{   
   for (i=[-1,1]){ 
   for (j=[-1,1]){    
  translate([i*((epaisseurcamera/2)+epaisseurboitier/2),j*((epaisseurcamera/2)+epaisseurboitier/2),0])                  
          cylinder (h = 80, r=3.6/2, center = true, $fn=60); //prévoir 0.5mm de jeu pour le diamètre du trou
   }
   }
}
///////////////////////////////////////////////////////////////////////////
module  banc(longueur,amincicementtrou)
{
    baseline=longueur-40;
    barre(longueur,amincicementtrou);
  translate([0,0,epaisseurbarre/2 + epaisseurcamera/2 ]) 
             for (j=[-1,1]){ 
  translate([j*((baseline/2)),0,0])                  
         camera();
             }    
     }
 
     epaisseurboitier=7;
///////////////////////////////////////////////////////////////////////////
module  supportsuperieur()
{   
difference(){ 
cube([epaisseurcamera+2*epaisseurboitier,profondeurcamera+2*epaisseurboitier,epaisseurcamera+epaisseurboitier],true);
translate([((longueurbarre/2)-20),0,-(epaisseurbarre/2+epaisseurcamera/2+epaisseurboitier/2)]) 
#banc(longueurbarre,1);
    //trous pour connecteur à l'arrière
  translate([0,-20,-4])      
    #cube([epaisseurcamera-2,2*epaisseurboitier,epaisseurcamera-1],true);
//trous sur les cotés pour ventilation
translate([0,0,-4])      
    #cube([epaisseurcamera++epaisseurboitier*2+1,epaisseurcamera-1,epaisseurcamera-1],true);
 
    #trousfixation();
    //empreintes hexagonales pour écrous m3
       for (i=[-1,1]){ 
   for (j=[-1,1]){    
  translate([i*((epaisseurcamera/2)+epaisseurboitier/2),j*((epaisseurcamera/2)+epaisseurboitier/2),17])                 
       rotate ([0,0,-15])
          #cylinder (h = 3, r=6.4/2, center = true, $fn=6); //prévoir 0.5mm de jeu pour le diamètre du trou
   }
 }   
} 
}
///////////////////////////////////////////////////////////////////////////  
module  supportinferieur()
{   
    jeu=2; //écart entre les 2 pièces du support
    amincicementtrou=1;
difference(){ 
    translate([0,0,-35/2 -epaisseurbarre/2-epaisseurboitier/2-jeu])
cube([epaisseurcamera+2*epaisseurboitier,profondeurcamera+2*epaisseurboitier,epaisseurbarre+epaisseurboitier-jeu],true);
translate([((longueurbarre/2)-20),0,-(epaisseurbarre/2+epaisseurcamera/2+epaisseurboitier/2)]) 
#banc(longueurbarre,amincicementtrou);
    #trousfixation();
} 
}            
///////////////////////////////////////////////////////////////////////////
 
printerpart=0;//default value for the constant printerpart, it can be changed through command line using -D
//https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/Using_OpenSCAD_in_a_command_line_environment
//use compile.sh to generate the stl files in stl/ subdirectory
type=printerpart;  //assign the constant value to a variable to be able to test it, even if the constant hasn't been defined in command line
//pour visualisation de l'assemblage
if (type==0)
 {
supportsuperieur();
supportinferieur();
 }
//pour impression via script compile.sh
if (type==1)
rotate ([180,0,0])    supportsuperieur();
if (type==2)
translate([80,0,17])  supportinferieur();

Script shell pour générer les 2 fichiers stl à imprimer

compile.sh
#!/bin/sh
mkdir -p stl
openscad -D printerpart=1 -o 'stl/top.stl' support_akka_v2.scad
openscad -D printerpart=2 -o 'stl/bottm.stl' support_akka_v2.scad

Résultat

bvdp.inetdoc.net_files_3d_p71017-173341_crop_support_camera_akka.jpg