I’ve used openscad only for the past five years or so. Blender it is not. But, you learn a few dozen basic commands, the strict, almost c++ syntax, the sort of functional structure, a bit of algebra and geometry, and it is quite surprising what you can achieve. I put a few models on thingiverse, because they had a customiser, that the openscad group sort of copied, but their version of the software is way out of date. For functional prints it can’t be beaten.
Here’s an example for printing a parametric lid and box for any size, in vase mode.- use up all your odd lengths of filament. (the code is ‘complicated’ since the corners are rounded using the Minkowski function, and I’ve added the variables for use with the customiser.)
// simple box for vase mode with rounded corners
/* [simple box with lid (must be printed in vase mode)]*/
// length of box
l = 60.01;
//width of box
w = 40.01;
//height of box
h = 30;
// height of lid
hl = 20;
// wall thickness plus fitting tolerance
t = 2.2 ;
// corner radius
r=4;
/* [printing ****** MUST BE IN VASE MODE *****]/
// Select parts to print (box or lid,).
op = “box”; //[ box,lid,both]
///////////////////
s=2*t;
module box(){
translate([0,0,r])
difference(){
minkowski(){
cube([l-r-r,w-r-r,h-r]);
sphere(r);
}
translate([-l,-w, h-r])
cube([3l,3w,h]);
}
}
module lid(){
translate([0,0,r+t])
difference(){
minkowski(){
cube([l-r-r,w-r-r,h-r]);
sphere(r+t);
}
translate([-l,-w, hl-r])
cube([3l,3w,h]);
}
}
if (op == “box”) {
box();
}
$fn=80;
if (op==“lid”) {
lid();
}
if (op==“both”){
box();
translate([0,w+70,0])lid();
}