Toufic BATACHE
Objet fonctionnel
Cabane pour oiseaux :
J'ai commencé par une maison : la chose la plus simple à dessiner. J'ai rapidement compris que ce n'était pas le cas en 3D. J'ai réussi à faire un cube, le vider, créer une porte, des fenêtres et un toit. Ensuite, comme on a besoin d'un objet fonctionnel, j'ai modifié cette maison pour en faire une cabane pour oiseaux en remplaçant la porte rectangulaire par une cylindrique et en créant des trous dans le toit pour pouvoir l'accrocher.
Fichier SCAD : cabane_pour_oiseaux.scad
Fichier exporté STL : cabane_pour_oiseaux.stl
Capture d'écran du modèle 3D :
Code SCAD :
$fn=100;
module fenetre() { // 4 cubes pour créer une fenêtre avec la différence
translate([0, 0, 0]) cube([1.5, 4, 1.5]);
translate([2, 0, 0]) cube([1.5, 4, 1.5]);
translate([2, 0, 2]) cube([1.5, 4, 1.5]);
translate([0, 0, 2]) cube([1.5, 4, 1.5]);
}
difference() {
union() {
cube([10, 10, 10]); // cube maison
translate([5, -.5, 5]) rotate([-90, 0, 0]) cylinder(2, 2.5, 2.5); // contour 3D porte cercle
}
translate([1, 1, 1]) cube([8, 8, 10]); // cube pour vider la maison
//translate([4, -2, 1]) cube([2, 4, 4]); // porte rectangle
translate([5, -1, 5]) rotate([-90, 0, 0]) cylinder(3, 2, 2); // porte cercle
translate([2, 3.25, 3.25]) rotate([0, 0, 90]) fenetre(); // fenetre gauche
translate([12, 3.25, 3.25]) rotate([0, 0, 90]) fenetre(); // fenetre droite
translate([3.25, 7.5, 3.25]) fenetre(); // fenetre arrière
}
difference() {
translate([4.25, -1, 14.5]) rotate([0, 135, 0]) union() { // toit
cube([10, 12, 1]);
translate([0, 0, 0]) rotate([0, -90, 0]) cube([11, 12, 1]);
}
translate([5, 3, 12]) { // trous dans le toit pour qu'on puisse l'accrocher
cylinder(4, .5, .5);
translate([0, 3.5, 0]) cylinder(4, .5, .5);
}
}
translate([1, 1, 10]) rotate([90, 0, 0]) linear_extrude(height=1) { // prisme qui bouche l'espace entre le mur avant et le toit
polygon([[0, 0], [8, 0], [4, 4]]);
}
translate([1, 10, 10]) rotate([90, 0, 0]) linear_extrude(height=1) { // prisme qui bouche l'espace entre le mur arrière et le toit
polygon([[0, 0], [8, 0], [4, 4]]);
}
translate([7, 2, 11]) cube([2, 2, 4]); // cheminée
translate([2.75, .5, 8.5]) rotate([90, 0, 0]) linear_extrude(height=1) {
text("TB", 3, "Figtree:style=Bold"); // initiales TB
}
Paramètres d'impression :
Pour imprimer la cabane à l'endroit, il faut rajouter beaucoup de supports : le trou d'entrée en relief, les initiales, le toit et l'intérieur. Pour résoudre ce problème, je l'ai tourné comme ceci :
Avec supports et jupe (on voit aussi les paramètres d'impression à droite de la capture d'écran) :
Fichier 3MF : cabane_pour_oiseaux.3mf
Fichier GCODE : cabane_pour_oiseaux_0.4n_0.25mm_PLA_MK4S_6h3m.bgcode
Imprimé en 3D :
Vidéo : IMG_6762.MOV
Photos :
Objet impossible à faire autrement qu'en 3D
Table d'appoint en tanségrité :
J'ai toujours aimé avoir une table tanségrité. Tanségrité, c'est quoi ? C'est un principe structurel selon lequel les éléments sous compression sont maintenus en place par des éléments sous tension. Donc une table reliée que par des chaines. Le fait que les chaines fassent partie de l'objet le rendent impossible à recréer qu'en 3D.
Fichier SCAD : tensegrity.scad
Fichier exporté STL : Je ne peux pas le mettre, il fait 300MB :(
Capture d'écran du modèle 3D :
Code SCAD :
$fn = 1;
module support() {
cube([3, 3, 20.5]);
translate([0, 0, 17.5]) cube([3, 11, 3]);
}
module base() {
cube([20, 20, 3]);
translate([8.5, 0, 0]) support();
}
difference() {
union() {
base();
translate([0, 20, 30]) rotate([180, 0, 0]) base();
}
translate([6, 7.5, 29]) linear_extrude(height=2) {
text("TB", 5, "Figtree:style=Bold"); // initiales TB
}
}
// https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/2D_to_3D_Extrusion#Mesh_Refinement_2
module chain_link(r, s, t, fn = 100) {
// r = radius
// s = size
// t = tall
union() {
rotate_extrude(angle = 180, $fn = 100) translate([s, 0, 0]) circle(r = r, $fn = fn);
translate([-s, 0, 0]) rotate([90, -36, 0]) cylinder(r = r, h = s * t, $fn = fn);
translate([s, 0, 0]) rotate([90, 0, 0]) cylinder(r = r, h = s * t, $fn = fn);
translate([0, -s * t, 0]) rotate_extrude(angle = -180, $fn = 100) translate([s, 0, 0]) circle(r = r, $fn = fn);
}
}
module chain(r, s, t, l, fn = 100) {
union() {
for (i = [0:l]) {
if (i % 2 == 0) {
translate([0, -t * 1.05 * i, 0]) chain_link(r, s, t, fn);
} else {
translate([0, -t * 1.05 * i, 0]) rotate([0, 90, 0]) chain_link(r, s, t, fn);
}
}
}
}
chain_r = .2;
chain_s = .6;
chain_t = 1.5;
chain_l_long = 16;
chain_l_short = 3;
//translate([1.5, 1.5, 31]) rotate([-90, 0, -45]) chain_link(.2, .6);
union() {
translate([1.5, 1.5, 2.5]) rotate([-90, 0, -45]) chain(chain_r, chain_s, chain_t, chain_l_long, $fn);
translate([18.5, 1.5, 2.5]) rotate([-90, 0, 45]) chain(chain_r, chain_s, chain_t, chain_l_long, $fn);
translate([18.5, 18.5, 2.5]) rotate([-90, 0, -45]) chain(chain_r, chain_s, chain_t, chain_l_long, $fn);
translate([1.5, 18.5, 2.5]) rotate([-90, 0, 45]) chain(chain_r, chain_s, chain_t, chain_l_long, $fn);
translate([10, 10, 12.33]) rotate([-90, 0, 45]) chain(chain_r, chain_s, chain_t, chain_l_short, $fn);
}
Paramètres d'impression :
Pour imprimer la table à l'endroit, il faut rajouter beaucoup de supports. Pour résoudre ce problème, je l'ai tourné comme ceci :
Avec supports et jupe (on voit aussi les paramètres d'impression à droite de la capture d'écran) :
Fichier 3MF :
Fichier GCODE : tensegrity_0.4n_0.25mm_PLA_MK4S_5h9m.bgcode