Earlier quoted context omitted.
Looking at this now, I like the approach! It's also fundamentally different from mine (maybe phew). The mouse driven approach makes it far more approachable, while mine is deliberately code driven and perhaps more quirky (step export is a code function for example). Also looking at your API, I used a vector type a lot for defining things like planes, so where you have sketch("xz",func) mines a little more like plane(…
It seems from what you are describing your software is more like (replicad)[ https://github.com/sgenoud/replicad ] The user can create planes with plane() command e.g plane("xy") or plane("xy", { offset: 10 }); but I have added some shortcuts for common planes ( https://fluidcad.io/docs/guides/sketching/introduction#sketc... ) you can also sketch on faces sketch(extrusion.endFace(), ...) which will extract the plane…
const in1 = draw.rectangle(size1, size1).fillet(2)
const in2 = draw.origin([0,0,height1]).rectangle(size2, size2).fillet(2)
const result = make.loft([in1, in2])