Compare commits
2 Commits
b395448c08
...
01c85c8529
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
01c85c8529 | ||
|
|
e5f205caca |
@@ -1,4 +1,4 @@
|
|||||||
$fn = 50;
|
$fn = 200;
|
||||||
|
|
||||||
module torus(r1=1, r2=2, angle=360, $fn=$fn){
|
module torus(r1=1, r2=2, angle=360, $fn=$fn){
|
||||||
rotate_extrude(convexity=10, $fn=$fn)
|
rotate_extrude(convexity=10, $fn=$fn)
|
||||||
@@ -6,50 +6,74 @@ module torus(r1=1, r2=2, angle=360, $fn=$fn){
|
|||||||
circle(r=r1, $fn=$fn);
|
circle(r=r1, $fn=$fn);
|
||||||
}
|
}
|
||||||
|
|
||||||
module rounded_cube(size, r=0, center=false, $fn=$fn){
|
module rounded_cube(size, r=0, $fn=$fn){
|
||||||
translate([r, r, r]) minkowski(){
|
translate([r, r, r]) minkowski(){
|
||||||
cube([size[0]-r*2, size[1]-r*2, size[2]-r*2]);
|
cube([size[0]-r*2, size[1]-r*2, size[2]-r*2]);
|
||||||
sphere(r, $fn=$fn);
|
sphere(r, $fn=$fn);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
module rounded_cube_2d(size, r=0, $fn=$fn){
|
||||||
|
translate([r, r, 0]) minkowski(){
|
||||||
|
cube([size[0]-r*2, size[1]-r*2, size[2]/2]);
|
||||||
|
cylinder(d=r*2, h=size[2]/2, $fn=$fn);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
boden_h = 1;
|
|
||||||
|
wall_d = 1.5;
|
||||||
|
befestigung_d = 2*wall_d;
|
||||||
sphere_d = 3;
|
sphere_d = 3;
|
||||||
sphere_spiel = 0.5;
|
sphere_spiel = 0.2;
|
||||||
sphere_ueberstand = 0.5;
|
sphere_ueberstand = 0.5;
|
||||||
torus_d = 20;
|
spehre_number = 40;
|
||||||
befestigung_d = 3;
|
screw_hole_d = 2.6;
|
||||||
screw_hole_d = 3;
|
|
||||||
|
|
||||||
gesamt_h = sphere_d + boden_h - sphere_ueberstand;
|
|
||||||
gesamt_r = torus_d / 2 + sphere_d;
|
torus_r = (sphere_d / 2) / sin(360 / spehre_number);
|
||||||
torus_inner_r = (sphere_d + sphere_spiel) / 2;
|
torus_inner_r = (sphere_d + sphere_spiel) / 2;
|
||||||
|
gesamt_h = sphere_d + wall_d - sphere_ueberstand;
|
||||||
|
gesamt_r = torus_r + torus_inner_r + wall_d;
|
||||||
|
gesamt_inner_r = torus_r - torus_inner_r - wall_d;
|
||||||
|
|
||||||
|
// Asserts
|
||||||
|
assert(torus_inner_r < torus_r);
|
||||||
|
assert(torus_inner_r^2 - (torus_inner_r - sphere_ueberstand)^2 < (sphere_d / 2)^2, "Kugeln fallen raus! Überstand oder Spiel reduzieren!");
|
||||||
|
|
||||||
|
// Screw holes
|
||||||
|
module screw_hole() {
|
||||||
|
rotate(a = [0, 90, 0])
|
||||||
|
cylinder(d=screw_hole_d, h=befestigung_d);
|
||||||
|
}
|
||||||
|
|
||||||
difference() {
|
difference() {
|
||||||
difference() {
|
difference() {
|
||||||
union () {
|
union () {
|
||||||
cylinder(r=gesamt_r, h=gesamt_h);
|
//Cylinder
|
||||||
translate([-befestigung_d, -(gesamt_r + gesamt_h),0]) {
|
difference () {
|
||||||
cube([befestigung_d, (gesamt_r + gesamt_h) * 2, gesamt_h], r=0.25);
|
cylinder(r=gesamt_r, h=gesamt_h);
|
||||||
|
cylinder(r=gesamt_inner_r, h=gesamt_h);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//Befestigung
|
||||||
|
translate([-befestigung_d, -(gesamt_r + gesamt_h + wall_d),0]) {
|
||||||
|
rounded_cube_2d ([befestigung_d, (gesamt_r + gesamt_h + wall_d) * 2, gesamt_h], r=0.25);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
translate([0,0,torus_inner_r + boden_h]) {
|
translate([0,0,torus_inner_r + wall_d]) {
|
||||||
torus(r1=torus_inner_r, r2=torus_d / 2);
|
torus(r1=torus_inner_r, r2=torus_r);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Boden
|
|
||||||
|
// Only one half halfes
|
||||||
translate([0,-gesamt_r,0])
|
translate([0,-gesamt_r,0])
|
||||||
cube([gesamt_r, gesamt_r*2, sphere_d + boden_h]);
|
cube([gesamt_r, gesamt_r*2, gesamt_h]);
|
||||||
|
|
||||||
// Screw holes
|
// Screw holes
|
||||||
translate([-befestigung_d,-(gesamt_r + gesamt_h / 2),gesamt_h / 2]) {
|
translate([-befestigung_d,-(gesamt_r + gesamt_h / 2 + wall_d / 2),gesamt_h / 2]) screw_hole();
|
||||||
rotate(a = [0, 90, 0])
|
translate([-befestigung_d,(gesamt_r + gesamt_h / 2 + wall_d / 2),gesamt_h / 2]) screw_hole();
|
||||||
cylinder(d=screw_hole_d, h=befestigung_d);
|
translate([-befestigung_d,0,gesamt_h / 2]) screw_hole();
|
||||||
}
|
|
||||||
translate([-befestigung_d,(gesamt_r + gesamt_h / 2),gesamt_h / 2]) {
|
}
|
||||||
rotate(a = [0, 90, 0])
|
|
||||||
cylinder(d=screw_hole_d, h=befestigung_d);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
12
rolle_alternativ.scad
Normal file
12
rolle_alternativ.scad
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
$fn = 200;
|
||||||
|
|
||||||
|
cylinder(d=4, h=25);
|
||||||
|
|
||||||
|
*difference () {
|
||||||
|
union () {
|
||||||
|
translate([0,0,2 /2]) cube([10,10,2], center=true);
|
||||||
|
translate([0,0,10 / 2 + 2]) cube([10, 2, 10], center= true);
|
||||||
|
}
|
||||||
|
translate([0,1,7]) rotate(a = [90, 0, 0]) cylinder(d=4.2, h=2);
|
||||||
|
}
|
||||||
|
|
||||||
Reference in New Issue
Block a user