Browse Source

initial version

master
Nicolas Massé 8 years ago
commit
eaa7ddf7b3
  1. 8
      Encastrements-Cylindriques/bloc1.scad
  2. 8
      Encastrements-Cylindriques/bloc2.scad
  3. 8
      Encastrements-Cylindriques/bloc3.scad
  4. 8
      Encastrements-Cylindriques/bloc4.scad
  5. 50
      Encastrements-Cylindriques/lib.scad

8
Encastrements-Cylindriques/bloc1.scad

@ -0,0 +1,8 @@
use <lib.scad>;
montessori_cylinder_set(
heights = [[1, 55], [10, 55]],
diameters = [[1, 10], [10, 55]],
bloc_base = [[-40, -40], [380, -10], [380, 10], [-40, 40]],
bloc_height = 60
);

8
Encastrements-Cylindriques/bloc2.scad

@ -0,0 +1,8 @@
use <lib.scad>;
montessori_cylinder_set(
heights = [[1, 10], [10, 55]],
diameters = [[1, 10], [10, 55]],
bloc_base = [[-40, -40], [380, -10], [380, 10], [-40, 40]],
bloc_height = 60
);

8
Encastrements-Cylindriques/bloc3.scad

@ -0,0 +1,8 @@
use <lib.scad>;
montessori_cylinder_set(
heights = [[1, 55], [10, 10]],
diameters = [[1, 10], [10, 55]],
bloc_base = [[-40, -40], [380, -10], [380, 10], [-40, 40]],
bloc_height = 60
);

8
Encastrements-Cylindriques/bloc4.scad

@ -0,0 +1,8 @@
use <lib.scad>;
montessori_cylinder_set(
heights = [[1, 10], [10, 55]],
diameters = [[1, 25], [10, 25]],
bloc_base = [[-20, -20], [290, -20], [290, 20], [-20, 20]],
bloc_height = 60
);

50
Encastrements-Cylindriques/lib.scad

@ -0,0 +1,50 @@
epsilon = 0.1;
$fn = 30;
module handle(r1 = 4, h1 = 2.5, r2 = 6) {
rotate_extrude() {
square([r1, h1]);
translate([0, h1 + sqrt(pow(r2, 2) - pow(r1, 2)), 0])
intersection() {
circle(r=r2, center=true);
translate([0, -r2, 0]) square([r2, 2 * r2]);
}
}
}
module montessori_cylinder(h, d) {
translate([0, 0, -h]) cylinder(h=h, d=d);
}
module montessori_cylinders(n = 10, origin = [0,0,0], h, d, margin = 5, on_base = true, play = 0) {
hn = lookup(n, h);
dn = lookup(n, d);
translate(origin + (on_base ? [0, 0, hn] : [0, 0, 0])) {
montessori_cylinder(hn, dn + play);
handle();
}
if (n > 1) {
montessori_cylinders(n = n - 1,
origin = origin + [ dn + margin, 0, 0 ],
h = h,
d = d,
margin = margin,
on_base = on_base,
play = play);
}
}
module montessori_cylinder_set(heights, diameters, bloc_base, bloc_height, play = 2) {
translate([ 0, -100, 0 ])
montessori_cylinders(h = heights, d = diameters);
difference() {
linear_extrude(bloc_height)
polygon(bloc_base);
translate([ 0, 0, bloc_height + epsilon ])
montessori_cylinders(h = heights, d = diameters, on_base = false, play = play);
}
}
Loading…
Cancel
Save