71 lines
1.8 KiB
OpenSCAD
71 lines
1.8 KiB
OpenSCAD
//------------------------------------------------------------------------------
|
|
// Bevel edge cube.
|
|
// (c) Juan Gonzalez-Gomez (Obijuan), Sep-2012
|
|
//------------------------------------------------------------------------------
|
|
|
|
//----------------- IMPLEMENTATION USING THE MINKOWSKI OPERATOR ----------------
|
|
|
|
//------------------------------------------------------------------------------
|
|
//-- Bevel Cube main function
|
|
//-- Parameters:
|
|
//-- * Size: Cube size
|
|
//-- * cr : Corner radius (if cr==0, a standar cube is built)
|
|
//-- * cres: Corner resolution (in points). cres=0 means flat corners
|
|
//------------------------------------------------------------------------------
|
|
module bcube(size,cr=0,cres=0)
|
|
{
|
|
//-- Internal cube size
|
|
bsize = size - 2*[cr,cr,0];
|
|
|
|
//-- Get the (x,y) coorner coordinates in the 1st cuadrant
|
|
x = bsize[0]/2;
|
|
y = bsize[1]/2;
|
|
|
|
//-- A corner radius of 0 means a standar cube!
|
|
if (cr==0)
|
|
cube(bsize,center=true);
|
|
else {
|
|
|
|
|
|
//-- The height of minkowski object is double. So
|
|
//-- we sould scale by 0.5
|
|
scale([1,1,0.5])
|
|
|
|
//-- This translation is for centering the minkowski objet
|
|
translate([-x, -y,0])
|
|
|
|
//-- Built the beveled cube with minkowski
|
|
minkowski() {
|
|
|
|
//-- Internal cube
|
|
cube(bsize,center=true);
|
|
|
|
//-- Cylinder in the corner (1st cuadrant)
|
|
translate([x,y, 0])
|
|
cylinder(r=cr, h=bsize[2],center=true, $fn=4*(cres+1));
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
|
|
//-- Examples of use of the bcube() module
|
|
|
|
//-- Standar cube
|
|
translate([-15,15,0])
|
|
bcube([20,20,10]);
|
|
|
|
//-- Beveled cube (0 point resolution)
|
|
translate([15,15,0])
|
|
bcube([20,20,10],cr=4);
|
|
|
|
//-- Beveled cube (1 point resolution)
|
|
translate([-15,-15,0])
|
|
bcube([20,20,10],cr=4, cres=1);
|
|
|
|
//-- Beveled cube (4 points resolution)
|
|
translate([15,-15,0])
|
|
bcube([20,20,10],cr=4, cres=4);
|
|
|
|
|