// Configuration parameter $fn = 30; cubeSizeParameter = 40; /* Define colors, in openscad: rgb(R, G, B) = [ R/255, G/255, B/255 ] or "red" For more details go the official documentation */ colorCubeUser = [255/255, 255/255, 240/255]; colorSphereUser = "OrangeRed"; logoFile = "../images/UDEZ_logo_cutter_mini.png"; logoFile2 = "../images/udez_logo_2.dxf"; module logo(cubeSize= cubeSizeParameter) { translate([-3*cubeSize/8,-3*cubeSize/8,cubeSize/2+0.6]) scale([0.1, 0.1, 0.01]) surface(file=logoFile,center=true, invert=true); } // Modules module cubeWithEmptySphere(insideCubeSphereRadius, cubeSize= cubeSizeParameter){ difference() { union(){ cube(cubeSize, center=true); logo(); } sphere(insideCubeSphereRadius); } } module sphereBottomSquare(insideSphereRadius, cubeSize= cubeSizeParameter){ difference() { sphere(insideSphereRadius); translate ([0,0,-cubeSize]) cube([insideSphereRadius,insideSphereRadius,cubeSize], center=true); } } module captiveSphere(colorCube, colorSphere, cubeSize= cubeSizeParameter){ // Inside calculated parameter gapBetweenSphereAndCube = cubeSize /10; insideSphereRadius = cubeSize/2 + gapBetweenSphereAndCube / 3; insideCubeSphereRadius = insideSphereRadius + gapBetweenSphereAndCube; // Render color(c=colorCube) cubeWithEmptySphere(insideCubeSphereRadius, cubeSize); color(c=colorSphere) sphereBottomSquare(insideSphereRadius, cubeSize); } // Final render captiveSphere(colorCube=colorCubeUser, colorSphere=colorSphereUser); //linear_extrude(height = 1, center = true, convexity = 10) // import(logoFile2);