===Ficher scad décrivant les pièces===
///////////////////////////////////////////////////////////////////////////
//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===
#!/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===
{{https://bvdp.inetdoc.net/files/3D/P71017-173341_crop_support_camera_akka.jpg}}