use <validation/validate.scad> use <layout/layout.scad>
module soft_square(size, r=0, center=false) {
x_dim = len(size) ? size.x : size; y_dim = len(size) ? size.y : size; validate(x_dim >= 2*r, "radius must be less than half x-dimension"); translate(center ? [0,0] : [x_dim/2, y_dim/2]) { if(r > 0) { hull() { square([x_dim, y_dim-2*r], center=true); square([x_dim-2*r, y_dim], center=true); mirror_xy() { translate([x_dim/2-r, y_dim/2-r]) circle(r=r); } } } else { square([x_dim, y_dim], center=true); } }
}