From 92ac238f0c1d859102241e42a1ade5489025ad4a Mon Sep 17 00:00:00 2001 From: "Schoenberger, Philipp" Date: Thu, 31 Jan 2019 16:15:56 +0100 Subject: [PATCH] add cylinder_square and cubic_flange --- 3d/lib/cube.scad | 97 ++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 77 insertions(+), 20 deletions(-) diff --git a/3d/lib/cube.scad b/3d/lib/cube.scad index 87f53f8..851d1fe 100644 --- a/3d/lib/cube.scad +++ b/3d/lib/cube.scad @@ -64,91 +64,148 @@ module rounded_cube(size, r, rounding=[0,0,0]) aligned_rounded_cube(size, r, rounding=[0,0,0], aligned=[0,0,0]); } + + module axis(l=30, w=0.3) { color("red") cube([l,w,w]); - color("blue") + color("lightblue") cube([w,w,l]); - color("green") + color("lightgreen") cube([w,l,w]); color("black") cube([w,w,w]); } +module cylinder_square(size,d,aligned) { + r=d/2; + + // front + translate([-1*aligned[0]*(size[0]/2),-1*aligned[1]*(size[1]/2),-1*aligned[2]*d/4]) + translate([size[0]/2,size[1]/2,d/4]) + for (x=[1,-1]){ + hull() { + translate([size[0]/2,x*size[1]/2,0]) + sphere(d=d); + translate([-1*(size[0]/2),x*size[1]/2,0]) + sphere(d=d); + } + hull() { + translate([x*size[0]/2,size[1]/2,0]) + sphere(d=d); + translate([x*size[0]/2,-1*size[1]/2,0]) + sphere(d=d); + } + } +} +module cubic_flange($fn, size, e, aligned) +{ + h_off= (e < 0 ) ? 0 : size[2]; + + difference() + { + aligned_cube(size=[size[0],size[1],size[2]], aligned=aligned); + + echo(e); + echo(size[2]); + translate([0,0,size[0]/2]) + scale([1,1,size[0]/e]) + cylinder_square($fn=$fn,size=[size[0],size[1]], d=e*2, aligned=aligned); + //minkowski() + + } +} // test show +$fn=32; +e=3; + translate([-45,45,0]) { + + translate([50,-90,0]) { + axis(); + translate([0,0,10]) + %aligned_cube([10-2*e,10-2*e,5]); + translate([0,0,-5]) + %aligned_cube([10,10,5]); + + cubic_flange($fn=32,size=[10,10,10], e=e, aligned=[1,1,0]); + translate([0,-10,0]) + text(halign="center",valign="center", size=2, "cubic_flange()"); + + } + translate([0,-90,0]) { axis(); - %cube(size=[10,10,10]); + cube(size=[10,10,10]); translate([0,-10,0]) - text(halign="center",valign="center", $fn=$fn, size=3,font="Linux Libertine O", "cube()"); + text(halign="center",valign="center", size=2, "cube()"); } translate([0,10,0]) { axis(); - %aligned_cube(size=[10,10,10], aligned=[1,1,1]); + aligned_cube(size=[10,10,10], aligned=[1,1,1]); translate([0,-10,0]) - text(halign="center",valign="center", $fn=$fn, size=3,font="Linux Libertine O", "aligned_cube([1,1,1])"); + text(halign="center",valign="center", size=2, "aligned_cube([1,1,1])"); } translate([0,-30,0]) { axis(); - %aligned_rounded_cube(size=[10,10,10],r=1, aligned=[1,1,0]); + aligned_rounded_cube(size=[10,10,10],r=1, aligned=[1,1,0]); translate([0,-10,0]) - text(halign="center",valign="center", $fn=$fn, size=3,font="Linux Libertine O", "aligned_rounded_cube([1,1,0])"); + text(halign="center",valign="center", size=2, "aligned_rounded_cube([1,1,0])"); } translate([50,10,0]) { $fn=32; axis(); - %aligned_rounded_cube(size=[10,10,10],r=1, aligned=[1,1,0]); + aligned_rounded_cube(size=[10,10,10],r=1, aligned=[1,1,0]); translate([0,-10,0]) - text(halign="center",valign="center", $fn=$fn, size=3,font="Linux Libertine O", "aligned_rounded_cube(r=1)"); + text(halign="center",valign="center", size=2, "aligned_rounded_cube(r=1)"); } translate([50,-30,0]) { $fn=32; axis(); - %aligned_rounded_cube(size=[10,10,10],r=2, aligned=[1,1,0]); + aligned_rounded_cube(size=[10,10,10],r=2, aligned=[1,1,0]); translate([0,-10,0]) - text(halign="center",valign="center", $fn=$fn, size=3,font="Linux Libertine O", "aligned_rounded_cube(r=2)"); + text(halign="center",valign="center", size=2, "aligned_rounded_cube(r=2)"); } translate([100,10,0]) { $fn=32; axis(); - %aligned_rounded_cube(size=[10,10,10],r=2, rounding=[1,1,1]); + aligned_rounded_cube(size=[10,10,10],r=2, rounding=[1,1,1]); translate([0,-10,0]) - text(halign="center",valign="center", $fn=$fn, size=3,font="Linux Libertine O", "aligned_rounded_cube([1,1,1])"); + text(halign="center",valign="center", size=2, "aligned_rounded_cube([1,1,1])"); } translate([100,-30,0]) { $fn=32; axis(); - %aligned_rounded_cube(size=[10,10,10],r=2, rounding=[1,1,0]); + aligned_rounded_cube(size=[10,10,10],r=2, rounding=[1,1,0]); translate([0,-10,0]) - text(halign="center",valign="center", $fn=$fn, size=3,font="Linux Libertine O", "aligned_rounded_cube([1,1,0])"); + text(halign="center",valign="center", size=2, "aligned_rounded_cube([1,1,0])"); } translate([100,-60,0]) { $fn=32; axis(); - %aligned_rounded_cube(size=[10,10,10],r=2, rounding=[1,0,1]); + aligned_rounded_cube(size=[10,10,10],r=2, rounding=[1,0,1]); translate([0,-10,0]) - text(halign="center",valign="center", $fn=$fn, size=3,font="Linux Libertine O", "aligned_rounded_cube([1,0,1])"); + text(halign="center",valign="center", size=2, "aligned_rounded_cube([1,0,1])"); } translate([100,-90,0]) { $fn=32; axis(); - %aligned_rounded_cube(size=[10,10,10],r=2, rounding=[0,1,1]); + aligned_rounded_cube(size=[10,10,10],r=2, rounding=[0,1,1]); translate([0,-10,0]) - text(halign="center",valign="center", $fn=$fn, size=3,font="Linux Libertine O", "aligned_rounded_cube([0,1,1])"); + text(halign="center",valign="center", size=2, "aligned_rounded_cube([0,1,1])"); } }