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);
            };
}