OpenScad

Rounded Cube 2D

module rounded_cube(width, length, height, corner) {
    hull() {
        translate([ 0*width+0.5*corner, 0*length+0.5*corner, 0])
            cylinder( h = height, d = corner );

        translate([ 0*width+0.5*corner, 1*length-0.5*corner, 0])
            cylinder( h = height, d = corner );

        translate([ 1*width-0.5*corner, 0*length+0.5*corner, 0])
            cylinder( h = height, d = corner );

        translate([ 1*width-0.5*corner, 1*length-0.5*corner, 0])
            cylinder( h = height, d = corner );
    }
}

Rounded Cube 3D

module rounded_cube(width, length, height, corner) {
    hull() {
        translate([ 0*width+1*corner, 0*length+1*corner, 0*height+1*corner])
            sphere( r = corner );

        translate([ 1*width-0*corner, 0*length+1*corner, 0*height+1*corner ])
            sphere( r = corner );

        translate([ 0*width+1*corner, 1*length-0*corner, 0*height+1*corner ])
            sphere( r = corner );

        translate([ 1*width-0*corner, 1*length-0*corner, 0*height+1*corner ])
            sphere( r = corner );

        translate([ 0*width+1*corner, 0*length+1*corner, 1*height-0*corner ])
            sphere( r = corner );

        translate([ 1*width-0*corner, 0*length+1*corner, 1*height-0*corner ])
            sphere( r = corner );

        translate([ 0*width+1*corner, 1*length-0*corner, 1*height-0*corner ])
            sphere( r = corner );

        translate([ 1*width-0*corner, 1*length-0*corner, 1*height-0*corner ])
            sphere( r = corner );
    }
}