From e5f205caca288d3dd13fac77259a620400cc6dc1 Mon Sep 17 00:00:00 2001 From: jayAitch256 <46936427+jayAitch256@users.noreply.github.com> Date: Thu, 24 Mar 2022 20:02:28 +0100 Subject: [PATCH] kugellager: fix wrong radius formular, some asserts --- kugellager.scad | 74 ++++++++++++++++++++++++++++++++----------------- 1 file changed, 49 insertions(+), 25 deletions(-) diff --git a/kugellager.scad b/kugellager.scad index 762b801..38758c1 100644 --- a/kugellager.scad +++ b/kugellager.scad @@ -1,4 +1,4 @@ -$fn = 50; +$fn = 200; module torus(r1=1, r2=2, angle=360, $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); } -module rounded_cube(size, r=0, center=false, $fn=$fn){ +module rounded_cube(size, r=0, $fn=$fn){ translate([r, r, r]) minkowski(){ cube([size[0]-r*2, size[1]-r*2, size[2]-r*2]); 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_spiel = 0.5; +sphere_spiel = 0.2; sphere_ueberstand = 0.5; -torus_d = 20; -befestigung_d = 3; -screw_hole_d = 3; +spehre_number = 40; +screw_hole_d = 2.6; -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; +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() { union () { - cylinder(r=gesamt_r, h=gesamt_h); - translate([-befestigung_d, -(gesamt_r + gesamt_h),0]) { - cube([befestigung_d, (gesamt_r + gesamt_h) * 2, gesamt_h], r=0.25); + //Cylinder + difference () { + 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]) { - torus(r1=torus_inner_r, r2=torus_d / 2); + translate([0,0,torus_inner_r + wall_d]) { + torus(r1=torus_inner_r, r2=torus_r); } } - // Boden + + // Only one half halfes 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 - translate([-befestigung_d,-(gesamt_r + gesamt_h / 2),gesamt_h / 2]) { - rotate(a = [0, 90, 0]) - cylinder(d=screw_hole_d, h=befestigung_d); - } - translate([-befestigung_d,(gesamt_r + gesamt_h / 2),gesamt_h / 2]) { - rotate(a = [0, 90, 0]) - cylinder(d=screw_hole_d, h=befestigung_d); - } -} + translate([-befestigung_d,-(gesamt_r + gesamt_h / 2 + wall_d / 2),gesamt_h / 2]) screw_hole(); + translate([-befestigung_d,(gesamt_r + gesamt_h / 2 + wall_d / 2),gesamt_h / 2]) screw_hole(); + translate([-befestigung_d,0,gesamt_h / 2]) screw_hole(); + +} \ No newline at end of file