From 8e2c6387c9e14473b805e43e6667393960b42084 Mon Sep 17 00:00:00 2001 From: sasza Date: Thu, 19 Jun 2025 21:09:57 +0200 Subject: [PATCH] Modele dla Oliwki na kwiatki --- Oliwka/na_kamyczki.scad | 32 ++++++++++++++++++++ Oliwka/plant_pot_saucer.scad | 58 ++++++++++++++++++++++++++++++++++++ 2 files changed, 90 insertions(+) create mode 100644 Oliwka/na_kamyczki.scad create mode 100644 Oliwka/plant_pot_saucer.scad diff --git a/Oliwka/na_kamyczki.scad b/Oliwka/na_kamyczki.scad new file mode 100644 index 0000000..8999f9b --- /dev/null +++ b/Oliwka/na_kamyczki.scad @@ -0,0 +1,32 @@ +// To jest taka podstawecznka na te metalowe półki małe, żeby można było stawiać kamyczki + +width=220; +length=160; + +height_down = 5; +height_up = 15; +wall_thickness = 2; +shelf_thickness = 1; + +include +include + +wt = wall_thickness; +st = shelf_thickness; +total_height = height_up + height_down + shelf_thickness; + + difference() { + // głowny model + translate([width/2+wt, length/2+wt, total_height/2]) + cuboid([width + wt*2, length + wt*2, total_height], rounding=2); + // wycięcie na dole + translate([wt,wt,-0.1]) + cube([width, length, height_down]); + // wycięcie na górze + translate([width/2, length/2, height_up]) + translate([wt,wt,height_down + st + 0.1]) + cuboid([width, length, height_up * 2], rounding=10); +} + + +// cuboid(); diff --git a/Oliwka/plant_pot_saucer.scad b/Oliwka/plant_pot_saucer.scad new file mode 100644 index 0000000..9bbff6b --- /dev/null +++ b/Oliwka/plant_pot_saucer.scad @@ -0,0 +1,58 @@ +// Plant pot saucer +// date: 19-3-2025 +// author: Floris van den Bosch + +// parameters +top_diameter = 110; +wall_thickness = 2; +spoke_spacing = 100.0; + +// derived parameters +height = 0.15 * top_diameter; +bottom_diameter = top_diameter - height; +number_of_spokes = max(floor(PI * top_diameter / spoke_spacing), 3); +spoke_center_offset = 0.15 * top_diameter; + +$fa = 0.5; +$fs = 0.5; + +difference(){ + // outer shell + cylinder(h = height, d1 = bottom_diameter, d2 = top_diameter); + + // interior cutout + difference(){ + w = 2 * wall_thickness; + d_bottom = bottom_diameter - w; + d_top = top_diameter - w; + translate([0,0,wall_thickness]) + cylinder(h = height, d1 = d_bottom, d2 = d_top); + + r = w; + translate([0, 0, wall_thickness / 2]) + linear_extrude(3/2 * wall_thickness) + offset(r=-r) + offset(r=r) + union(){ + for(angle = [0:360/number_of_spokes:360]){ + rotate([0 ,0, angle]) + // main spokes + hull(){ + translate([spoke_center_offset, 0]) + circle(r = w); + translate([top_diameter, 0]) + circle(r = w); + } + + } + //rounded corners + t = 1.001 * wall_thickness / height; + c = t * d_top + (1 - t) * d_bottom; + difference(){ + circle(d=c + r); + circle(d=c); + } + } + } +} +