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