Stanislas Castella-Soeters
M1 Management de l'innovation de l'innovation : 2025 - 2026
stanislas.castella-soeters@etu.sorbonne-universite.fr
Exercise 1 - Impression test : Marque page chat, (16 décembre 2025 - 9 janvier 2026)
ImpressionCette testimpression -est Marqueune impression test, l'objectif était de se familiariser avec l'impression 3D.
Je souhaitais imprimer quelque chose d'utile et que je ne possédai pas. L'idée d'un marque page enm'a 3D
approprié pour une première impression 3D. J'ai donc cherché des modèles de marque page sur Pintables.com. Trois ont retenu mon attention, une épée, les mains d'un monstre et un chat noir.
Exercise 2 - Impression d'un objet plusen complexecontenant un autre : Sifflet (
Exercise 3 - Impression d'un objet modélisé sur OpenScad : Maracas avec 4 billes (6 Février 2026)
/* [General Settings] */
// Select what to render
mode = "view_all"; // [view_all, print_half_1, print_half_2, print_tiny_spheres]
/* [Dimensions] */
/* [Détails de la maracas] */
// Longueur total de la maracas (mm)
rattle_length = 100; // [80:150]
// Diamètre de la sphère de la maracas (mm)
head_diameter = 45; // [30:80]
// Diamètre de la poignée (mm)
handle_diameter = 12; // [8:25]
// Épaisseur des parois du maracas (mm).
wall_thickness = 2.4;
/* [Détails des quatres billes] */
// Number of tiny spheres
sphere_count = 4;
// Wall thickness for the tiny spheres
sphere_wall = 0.8;
// Distance to move spheres away from the rattle body
sphere_distance_from_body = 20;
/* [Detail] */
// Smoothness of the curves
$fn = 100;
// --- Calculated Values ---
tiny_sphere_size = head_diameter / 5;
// --- Geometry Modules ---
module rattle_body() {
// We group the geometry and move it UP so the bottom touches Z=0
translate([0, 0, handle_diameter/2])
union() {
// 1. The Hollow Head
translate([0, 0, rattle_length - (head_diameter/2)])
difference() {
sphere(d = head_diameter);
sphere(d = head_diameter - (wall_thickness * 2));
}
// 2. The Handle
cylinder_height = rattle_length - (head_diameter/2) + 2;
translate([0,0,0])
union() {
cylinder(h = cylinder_height, d = handle_diameter);
// The bottom cap
sphere(d = handle_diameter);
}
}
}
module tiny_spheres_set() {
// Generate the row of spheres
for (i = [0 : sphere_count-1]) {
// X spacing: diameter + 5mm gap
x_pos = i * (tiny_sphere_size + 5);
// Z position: Lift up by radius so the bottom touches 0
z_pos = tiny_sphere_size / 2;
translate([x_pos, 0, z_pos])
difference() {
sphere(d = tiny_sphere_size);
sphere(d = tiny_sphere_size - (sphere_wall * 2));
}
}
}
// --- Rendering Logic ---
if (mode == "view_all") {
// 1. Render the Rattle (Base is at Z=0 inside the module)
rattle_body();
// 2. Render the Tiny Spheres
// We move them to the right of the rattle head
translate([head_diameter/2 + sphere_distance_from_body, 0, 0])
tiny_spheres_set();
}
else if (mode == "print_half_1") {
// Lay rattle flat for printing (Left Half)
rotate([0, 90, 0])
difference() {
// We must undo the "standing" translation to rotate it correctly around center
translate([0,0,-handle_diameter/2]) rattle_body();
translate([-500, -1000, -500]) cube([1000, 2000, 1000]);
}
}
else if (mode == "print_half_2") {
// Lay rattle flat for printing (Right Half)
rotate([0, -90, 0])
difference() {
translate([0,0,-handle_diameter/2]) rattle_body();
translate([-500, -1000, -500]) cube([1000, 2000, 1000]);
}
}
else if (mode == "print_tiny_spheres") {
// Render the spheres sitting on the bed
tiny_spheres_set();
}


