Skip to main content

Lennart SCHWEERS

Premier objet

// Japanese-Style Knife in OpenSCAD

// Parameters for customization
blade_length = 150;  // Length of the blade in mm
blade_width = 30;    // Maximum width of the blade in mm
blade_thickness = 2; // Thickness of the blade in mm
handle_length = 100; // Length of the handle in mm
handle_width = 20;   // Width of the handle in mm
handle_height = 15;  // Height of the handle in mm
handle_offset = 3;   // How much the handle extends into the blade

module knife() {
    translate([0, 0, 0]) blade();
    translate([-handle_offset, -handle_width / 2, -handle_height / 2]) handle();
}

// Blade Module
module blade() {
    difference() {
        // Blade Shape
        linear_extrude(height = blade_thickness) {
            polygon(points = [
                [0, 0],
                [blade_length, blade_width / 2],
                [blade_length, -blade_width / 2],
                [0, 0]
            ]);
        }
        // Bevel Edge (sharpness)
        translate([blade_length / 2, 0, 0]) {
            rotate([0, 0, 90]) {
                cylinder(r1 = blade_thickness, r2 = 0, h = blade_length, center = true);
            }
        }
    }
}

// Handle Module
module handle() {
    hull() {
        // Create a smooth transition from blade to handle
        translate([0, 0, 0]) cube([handle_offset, handle_width, handle_height]);
        translate([handle_length, 0, 0]) cube([handle_offset, handle_width, handle_height]);
    }
    difference() {
        // Main handle block
        translate([0, -handle_width / 2, -handle_height / 2])
        cube([handle_length, handle_width, handle_height], center = true);
    }
}

// Render the knife
knife();

________________________________

Deuxième Objet: Vase


// Alvar Aalto-style vase approximation in OpenSCAD

$fn = 100; // Increase for smoother curves

// Parameters
height = 200; // Height in mm (20 cm)
thickness = 3; // Wall thickness in mm

difference() {
    // Outer vase shape
    linear_extrude(height)
        offset(r=30)  // Offset to round the corners
        union() {
            circle(30, $fn=100);
            translate([50, 0]) circle(25, $fn=100);
            translate([-50, 0]) circle(25, $fn=100);
            translate([0, 50]) circle(20, $fn=100);
        };

    // Inner cavity (subtracting inner shape)
    translate([0, 0, 0])
        linear_extrude(height - thickness)
            offset(r=25)
            union() {
                circle(27, $fn=100);
                translate([50, 0]) circle(22, $fn=100);
                translate([-50, 0]) circle(22, $fn=100);
                translate([0, 50]) circle(17, $fn=100);
            };
}

 

Troisieme Objet

// Paramètres
diametre_interieur = 62;    // Diamètre intérieur
epaisseur_bord = 3;         // Épaisseur du bord
hauteur_plateau = 60;       // Hauteur totale
ecart_plateaux = -2;        // Espace entre les deux plateaux
qualite_surface = 100;      // Nombre de segments pour lisser les cercles

// Diamètre extérieur
diametre_exterieur = diametre_interieur + 2 * epaisseur_bord;

// Module pour un plateau
module plateau() {
    difference() {
        // Corps extérieur
        cylinder(h = hauteur_plateau - 1, d = diametre_exterieur, center = false, $fn = qualite_surface);
        
        // Cavité intérieure
        translate([0, 0, epaisseur_bord]) // Décalage pour laisser un fond
            cylinder(h = hauteur_plateau - epaisseur_bord, d = diametre_interieur, center = false, $fn = qualite_surface);
    }
}

// Création des deux plateaux côte à côte
translate([-diametre_exterieur/2 - ecart_plateaux/2, 0, 0])
    plateau();

translate([diametre_exterieur/2 + ecart_plateaux/2, 0, 0])
    plateau();

__________
autres objets:

// Paramètres
module chain_link(radius = 10, thickness = 2, gap = 2) {
    // Cercle 1
    difference() {
        translate([-radius - gap / 2, 0, 0])
            cylinder(h = thickness, r = radius, center = true);
        translate([-radius - gap / 2, 0, 0])
            cylinder(h = thickness + 1, r = radius - thickness, center = true);
    }

    // Cercle 2
    difference() {
        translate([radius + gap / 2 - 13, 0, -3]) // Déplacement de 1 cm vers la gauche
        rotate([0, 60, 45]) // Rotation de 45 degrés
            cylinder(h = thickness, r = radius, center = true);
        translate([radius + gap / 2 - 13, 0, -3])
        rotate([0, 60, 45])
            cylinder(h = thickness + 1, r = radius - thickness, center = true);
    }
}

// Exemple d'utilisation
chain_link(radius = 10, thickness = 2, gap = 2);