Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ///
- /// OpenSCAD utils
- /// by Pat Niemeyer (pat@pat.net)
- ///
- // Rounded cube fitting exactly inside a cube of the same dimensions.
- //
- // Demo roundedCube
- //%cube(size=[s,s,h], center=true);
- //roundedCube([s, s, h], 1, center=true);
- //%cube(size=[s,s,h], center=false);
- //roundedCube([s, s, h], 1, center=false);
- //
- module rounded_cube(size, radius, center=true)
- {
- width = size[0] - radius*2;
- length = size[1] - radius*2;
- height = size[2] - radius*2;
- _translateIfNeeded(radius,center)
- minkowski() {
- cube(size=[width,length,height], center=center);
- sphere(r=radius, center=center);
- }
- }
- module _translateIfNeeded(r, center) {
- if (center) {
- children();
- } else {
- translate([r,r,r]) children();
- }
- }
- //
- // Minkowski helpers
- //
- // Use minkowski to add radius r outside the children
- module round_outside(r=1.0) {
- minkowski() {
- children();
- sphere(r=r);
- }
- }
- //
- // Translate helpers
- //
- module tx(x) { translate([x,0,0]) children(); }
- module ty(y) { translate([0,y,0]) children(); }
- module tz(z) { translate([0,0,z]) children(); }
- module rotx(x) { rotate([x,0,0]) children(); }
- module roty(y) { rotate([0,y,0]) children(); }
- module rotz(z) { rotate([0,0,z]) children(); }
- //
- // Cut helpers
- //
- // cut x "left/right"
- module cutx(x=0, keep="left", max=120) {
- difference() {
- children();
- if (keep=="left") {
- tx(x+max/2) cube([max,max,max], center=true);
- } else {
- tx(x-max/2) cube([max,max,max], center=true);
- }
- }
- }
- // cut y "front/back"
- module cuty(y=0, keep="front", max=120) {
- difference() {
- children();
- if (keep=="front") {
- ty(y+max/2) cube([max,max,max], center=true);
- } else {
- ty(y-max/2) cube([max,max,max], center=true);
- }
- }
- }
- // cut z "top/bottom"
- module cutz(z=0, keep="bottom", max=120) {
- difference() {
- children();
- if (keep=="bottom") {
- tz(z+max/2) cube([max,max,max], center=true);
- } else {
- tz(z-max/2) cube([max,max,max], center=true);
- }
- }
- }
Add Comment
Please, Sign In to add comment